aboutsummaryrefslogtreecommitdiff
path: root/include/wlr/render
AgeCommit message (Collapse)Author
2023-12-03swapchain: Add wlr_swapchain_has_bufferAlexander Orzechowski
2023-11-30renderer: Drop buffer bindingAlexander Orzechowski
2023-11-30render: Nuke old read pixels APIAlexander Orzechowski
Sadly, the new API is not backwards compatible with the old API. Since we have already switched all users in wlroots to the new API compositors are already practically mandated to implement the new API. Let's get rid of the old one since there is no point.
2023-11-30wlr_texture: Introduce wlr_texture_preferred_read_formatAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixels_options helpersAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30render/gles2: save/restore context when creating/submitting a render passSimon Ser
This is useful for e.g. lazily blitting a texture for readback purposes while rendering.
2023-11-30render/gles2: document EGL context gotchasSimon Ser
2023-11-29render: Drop rendering_with_bufferAlexander Orzechowski
This is always true now that we can only render with a buffer.
2023-11-29renderer: Drop wlr_renderer_beginAlexander Orzechowski
2023-11-22render: drop legacy rendering APISimon Ser
2023-10-05render/drm_format_set: use published kernel doc URLSimon Ser
The kernel patch has been merged, so this is available in the official docs now.
2023-09-21render/pass: Introduce wlr_render_rect_options_get_boxAlexander Orzechowski
2023-08-23render: ensure wlr_render_rect_options->box is nonemptyManuel Stoeckl
This optimization also fixes an validation error with the Vulkan renderer by ensuring vkCmdClearAttachments does not receive empty regions.
2023-08-16render: split render pass API into separate headerSimon Ser
Keeps the main wlr_renderer.h a tad more tidy.
2023-07-11render: document wlr_buffer_pass_options.timerSimon Ser
2023-07-11render: constify struct wlr_buffer_pass_optionsSimon Ser
Let's not allow renderer implementations to mutate the passed in options.
2023-06-19render: Introduce wlr_render_texture_options.blend_modeAlexander Orzechowski
2023-06-19renderer: Introduce wlr_scale_filter_modeAlexander Orzechowski
2023-06-05render/gles2: implement timer APIRose Hudson
2023-06-05add render timer APIRose Hudson
Based on five calls: wlr_render_timer_create - creates a timer which can be reused across frames on the same renderer wlr_renderer_begin_buffer_pass - now takes a timer so that backends can record when the rendering starts and finishes wlr_render_timer_get_time - should be called as late as possible so that queries can make their way back from the GPU wlr_render_timer_destroy - self-explanatory The timer is exposed as an opaque `struct wlr_render_timer` so that backends can store whatever they want in there.
2023-05-11wlr_drm_format_set: Store formats on arrayAlexander Orzechowski
2023-05-11wlr_drm_format: Change wlr_drm_format_dup to copyAlexander Orzechowski
2023-05-11wlr_drm_format: Make structure constant lengthAlexander Orzechowski
Don't store modifiers as part of the struct.
2023-05-11wlr_drm_format_set: Remove redundant text in comment for finish functionAlexander Orzechowski
This is implied by the fact that this function finishes the state instead of destroying it.
2023-05-11wlr_drm_format: Introduce drm_format_finishAlexander Orzechowski
2023-05-04drm_format_set_intersect: Require initialized dst and remove assertAlexander Orzechowski
The usages in linux_dmabuf zero out the dst before passing it so this change should be fine.
2023-05-04drm_format_set_union: Require initialized dst and remove assertAlexander Orzechowski
2023-05-03drm_format_set: Mark as unstableAlexander Orzechowski
This is supposed to be an unstable interface and it was a mistake that this header was not included.
2023-05-03Add union function for format setsAustin Shafer
2023-05-02render: introduce blend modeSimon Ser
Allow callers to pick the blend mode when rendering a rect. The "none" mode can be used to disable blending and clear rects.
2023-04-25render: add render pass helpersSimon Ser
2023-04-25Add a new renderer APISimon Ser
Goals: - Extensibility: we need to be able to add new params to the calls to render a texture/rect. For instance we'll need to add fences to the render texture operation for explicit sync purposes. - No implicit state: no more bind_buffer, begin, end. - No matrices: these hurt Pixman and we don't need them. - Clip regions for optimized damage repainting. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3188
2023-02-21render/swapchain: make publicSimon Ser
We've had this struct for a while. It'd be useful for compositors if they want to manage the swap chains themselves instead of being forced to use wlr_output's. Some compositors might also want to use a swapchain without an output.
2022-12-01wlr_texture: Expose owning rendererAlexander Orzechowski
2022-11-24render/gles2, render/pixman: stop pulling <wlr/backend.h>Simon Ser
No reason why the GLES2/Pixman renderers should depend on the backend.
2022-11-24render: stop pulling <wlr/backend.h>Simon Ser
Let's just forward-declare struct wlr_backend instead. We need to fixup the Vulkan renderer: it needs makedev(), which got included by chance via <wlr/backend.h> → <wlr/backend/session.h> → <libudev.h>.
2022-11-15render: add wlr_renderer.events.lostSimon Ser
2022-11-15render: make wlr_renderer_begin return a boolSimon Ser
2022-11-15render: allow wlr_renderer_impl.begin to failSimon Ser
Make it return a bool to indicate success/failure. Adapt the various implementations to check errors.
2022-11-15render: make some wlr_renderer fields privateSimon Ser
2022-11-15render: add docs for wlr_rendererSimon Ser
2022-11-15render/vulkan: add wlr_vk_texture_has_alphazccrs
Allow to get whether has alpha channel of the VkImage, it can help an optimization to disable blending when the texture doesn't have alpha. Because the VkFormat isn't enough because it's always set to VK_FORMAT_B8G8R8A8_SRGB or VK_FORMAT_R8G8B8A8_SRGB.
2022-11-11render/texture: constify wlr_texture_update_from_buffer()Simon Ser
2022-11-08render/vulkan: add some interfaces to allow compositors to integratezccrs
Added wlr_vk_renderer_get_* functions to allow get the VkInstance, VkPhysicalDevice, VkDevice, queue family of a wlr_vk_renderer. Added wlr_vk_renderer_get_current_image_attribs function to allow get the VkImage of current renderer buffer to use on compositors. Added wlr_renderer_is_vk function, it's like the wlr_renderer_is_gles2, returns true if the wlr_renderer is a wlr_vk_renderer. Added wlr_vk_image_get_attribs function to get a VkImage and it's extras information (e.g. a VkImageLayout and VkImageFormat of the VkImage) from a wlr_texture.
2022-10-04render: drop wlr_renderer_read_pixels() flagsSimon Ser
These are unused.
2022-08-12render: replace wlr_texture_write_pixels with update_from_bufferSimon Ser
This lets the renderer handle the wlr_buffer directly, just like it does in texture_from_buffer. This also allows the renderer to batch the rectangle updates, and update more than the damage region if desirable (e.g. too many rects), so can be more efficient.
2022-06-16render/texture: drop wlr_texture_is_opaqueSimon Ser
Whether a texture is opaque or not doesn't depend on the renderer at all, it just depends on the source buffer. Instead of forcing all renderers to implement wlr_texture_impl.is_opaque, let's move this in common code and use the wlr_buffer format to know whether a texture will be opaque.
2022-05-25render/egl: document wlr_egl_create_with_contextSimon Ser
2022-05-25render/egl: make wlr_egl_{make,unset,is}_current privateSimon Ser
These are trivial wrappers around eglMakeCurrent and eglGetCurrentContext. Compositors which need to call these functions will also call other EGL or GL functions anyways. Let's reduce our API surface a bit by making them private.