aboutsummaryrefslogtreecommitdiff
path: root/include/render
AgeCommit message (Collapse)Author
2023-11-29render/gles2: Don't track has_alpha in pixel_formatAlexander Orzechowski
Why track the alpha here when we can already get that information elsewhere?
2023-11-28render/vulkan: drop current_command_bufferSimon Ser
This was used by the legacy rendering API. Since begin()/end() only need to set current_render_buffer and nothing else, we can drop all of these bits.
2023-11-22render: drop legacy render passSimon Ser
All built-in renderers now implement the new API.
2023-10-05render/vulkan: constrain blend to output subpass to redrawn regionManuel Stoeckl
This commit only applies to the render pass API.
2023-10-02docs: replace the less commonly used "::" with "."Kirill Primak
2023-09-09render/vulkan: de-duplicate VkImageUsageFlagsSimon Ser
The flags passed to vkCreateImage() must match the flags used when querying formats. Make this clearer by using the same variable.
2023-06-19renderer: Introduce wlr_scale_filter_modeAlexander Orzechowski
2023-06-17render/vulkan: Dynamically create texture viewsAlexander Orzechowski
Now that we are dynamically creating pipeline layouts, we need separate texture views for each pipeline layout we choose to use with a texture.
2023-06-17render/vulkan: Dynamically create pipeline layoutsAlexander Orzechowski
These will happen lazily when pipelines get created.
2023-06-16render/vulkan/pipeline_key: Add blendingAlexander Orzechowski
This will become necessary when we switch away from scissoring. For the time being, this cleans things up a bit and allows for a trivial blending implementation for textures when that comes.
2023-06-16render/vulkan: Handle quad pipeline through generic pipeline pathAlexander Orzechowski
2023-06-16render/vulkan: Dynamically handle pipeline creation for texturesAlexander Orzechowski
If we ever wanted to handle dynamic state that requires new pipelines such as using different texture filters those can be added here with more ease.
2023-06-05render/gles2: implement timer APIRose Hudson
2023-06-01render/vulkan: improve error handling in render_pass_submit()Simon Ser
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3644
2023-05-30render/vulkan: implement render pass APISimon Ser
2023-05-28renderer/gles2: Implement render pass interfaceAlexander Orzechowski
2023-05-28renderer/gles2: Compute texture coordinates based off of vertex positionsAlexander Orzechowski
2023-05-26render/vulkan: drop unused vulkan_has_extension()Simon Ser
2023-05-26render/vulkan: drop unused vulkan_change_layout_queue()Simon Ser
2023-05-24render/vulkan: generalize YCbCr format supportSimon Ser
2023-05-24render/vulkan: add vulkan_get_pipeline_layout()Simon Ser
Will make it easier to add more pipeline layouts for other YCbCr formats.
2023-05-24render/vulkan: introduce struct wlr_vk_pipeline_layoutSimon Ser
This will make it easier to create one pipeline layout (plus related objects) per YCbCr format.
2023-05-21render/pixel-format: add support for block-based formatsSimon Ser
Some formats like sub-sampled YCbCr use a block of bytes to store the color values for more than one pixel. Update our format table to be able to handle such formats.
2023-05-21render/pixel-format: add docsSimon Ser
2023-05-12render/vulkan: allow rendering to non-8-bit buffersManuel Stoeckl
This is implemented by a two-subpass rendering scheme; the first subpass draws (and blends) onto a linear R16G16B16A16_SFLOAT buffer, while the second subpass performs linear->srgb conversion, writing onto the actual output buffer.
2023-05-11wlr_drm_format: Rework wlr_drm_format_intersectAlexander Orzechowski
Now it takes a reference to a destination format
2023-05-11wlr_drm_format: Change wlr_drm_format_dup to copyAlexander Orzechowski
2023-05-11wlr_drm_format: Change wlr_drm_format_create to initAlexander Orzechowski
2023-05-11wlr_drm_format: Don't take double pointer in wlr_drm_format_addAlexander Orzechowski
2023-05-04render/vulkan: add support for NV12Simon Ser
2023-04-28render/vulkan: use VK_KHR_synchronization2Simon Ser
This simplifies the vkQueueSubmit call, removing the need to pass timeline semaphore point values as separate arrays.
2023-04-25render/pixman: implement render pass APISimon Ser
2023-04-25render/pixman: add begin_pixman_data_ptr_access()Simon Ser
This logic is used twice.
2023-04-25render/pass: add legacy render pass implementationSimon Ser
Add a render pass implementation which leverages the legacy rendering API. This is helpful during the migration.
2023-04-18render/vulkan: use full names for extension command fieldsSimon Ser
This makes grepping much easier.
2023-02-28render/vulkan: prefer render node for wlr_renderer_get_drm_fd()Simon Ser
Instead of returning a primary node from wlr_renderer_get_drm_fd(), prefer to return a render node if any.
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-06render/vulkan: wait for DMA-BUF fencesSimon Ser
The Vulkan spec doesn't guarantee that the driver will wait for implicitly synchronized client buffers before texturing from them. radv happens to perform the wait, but anv doesn't. Fix this by extracting implicit fences from DMA-BUFs, importing them into Vulkan as a VkSemaphore objects, and make the render pass wait on these VkSemaphores.
2022-12-06render/dmabuf: add dmabuf_export_sync_file()Simon Ser
2022-12-02render/vulkan: make shm/dmabuf split clearer in wlr_vk_format_propsSimon Ser
struct wlr_vk_format_props contains a mix of properties for shm and dmabuf, and it's not immediately clear which fields are for which kind of buffer. Use a nested struct to group the fields.
2022-12-02render/vulkan: make vulkan_format_props_find_modifier() return value constSimon Ser
2022-12-02render/drm-format-set: add wlr_drm_format_set_copy()Simon Ser
2022-12-02render/vulkan: drop "_format" in wlr_vk_format fieldsSimon Ser
"format" is already in the name, no need to repeat ourselves. `format->vk_format` sounds a bit redundant.
2022-11-28render/vulkan: import semaphore to DMA-BUF instead of blockingSimon Ser
Right now the Vulkan renderer blocks until the frame is complete after rendering. This is necessary because Vulkan doesn't interoperate well with implicit sync we use everywhere else. Use the new kernel API to import a sync_file into a DMA-BUF to avoid blocking.
2022-11-28render/dmabuf: add dmabuf_import_sync_fileSimon Ser
References: https://lore.kernel.org/dri-devel/20220506180216.2095060-1-jason@jlekstrand.net/
2022-11-28render/vulkan: release stage buffers after command buffer completesSimon Ser
We need to wait for the pending command buffer to complete before re-using stage buffers. Otherwise we'll overwrite the stage buffer with new contents before the texture is fully uploaded.
2022-11-28render/vulkan: destroy textures after command buffer completesSimon Ser
We need to wait for any pending command buffer to complete before we're able to fully destroy a struct wlr_vk_texture: the Vulkan spec requires the VkDescriptorSet to be kept alive. So far we've done this in vulkan_end(), after blocking until the command buffer completes. We'll soon stop blocking, so move this logic in get_command_buffer(), where we check which commands buffers have completed in a non-blocking fashion.
2022-11-28render/vulkan: drop unused fields from wlr_vk_format_modifier_propsSimon Ser
export_imported is never used, and dmabuf_flags is already checked in query_modifier_support().
2022-11-25render/vulkan: align staging buffers for texture uploadManuel Stoeckl
vkCmdCopyBufferToImage requires that the buffer offset be a multiple of the texel block size, which for single plane uncompressed formats is the same as the number of bytes per pixel. This commit adds an alignment parameter to vulkan_get_stage_span which ensures that the provided span (and the sequence of image copy operations derived which use it) have this alignment.
2022-11-25render/vulkan: add support for RGB565 texture formatManuel Stoeckl
Since this does not have a matching _SRGB-type vulkan format, add a new shader variant/pipeline to perform the sRGB->linear texture conversion.