| Age | Commit message (Collapse) | Author | 
|---|
|  | Same motivation as fdb199a43c44 ("render/vulkan: rename
tex_features to shm_tex_features"). | 
|  | Otherwise only the last command's area will be copied over. | 
|  | renderer->render_{width,height} are unused with the render pass
API. | 
|  | renderer->bound_pipe is legacy, pass->bound_pipeline is used for
the render pass API code-path.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3657 | 
|  | We use the format info to check the stride and need it to perform
the texture upload. | 
|  | The logic is the same for both shm and DMA-BUF. | 
|  | Avoids repeating the common bits between dma_tex_features and
dma_tex_ycbcr_features, and we will need just the YCbCr-related
flags for shm YCbCr support soon. | 
|  | These features are required for shm only: the TRANSFER stuff is
for texture upload. We don't need these for DMA-BUFs. Make this
clearer by changing the name.
Also re-order the definitions to group all texture-related features
together. | 
|  |  | 
|  |  | 
|  |  | 
|  | 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. | 
|  | Release the command buffer if we end up not submitting it. | 
|  | Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3644 | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | Avoids us needing to transpose. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | We use eglQueryDeviceStringEXT() later on, which is optional and
requires support for the EGL_EXT_device_query extension. | 
|  |  | 
|  | The Vulkan spec states:
> For the purposes of range expansion and Y′CBCR model conversion,
> the R and B components contain color difference (chroma) values
> and the G component contains luma.
The equations below that sentence also help understand the mapping. | 
|  | YCBCR_CONVERSION_LINEAR_FILTER is not enough: this one only covers
chromaFilter. For magFilter/minFilter we need FILTER_LINEAR as well. | 
|  | We need to check whether the format supports dma_tex_ycbcr_features
before creating the YCbCr sampler. | 
|  |  | 
|  |  | 
|  | Will make it easier to add more pipeline layouts for other YCbCr
formats. | 
|  | This will make it easier to create one pipeline layout (plus related
objects) per YCbCr format. | 
|  |  | 
|  | We don't actually need the REPEAT mode, and this makes things more
consistent with the YCbCr sampler (which requires CLAMP_TO_EDGE for
spec compliance).
Also drop borderColor which is unused for this mode. | 
|  | Fixes the following validation error:
    [ VUID-VkImageViewCreateInfo-pNext-01970 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf378e14b | vkCreateImageView(): If there is a VkSamplerYcbcrConversion, the imageView must be created with the identity swizzle. | 
|  | The default pipeline layout was always passed. However, for NV12 we
need to pass a different one. | 
|  | Makes it clearer that all of these structs are for the quad pipeline. | 
|  |  | 
|  | Some comments in here are noise. | 
|  |  | 
|  | 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. | 
|  | Address Sanitizer reported two memory leaks because of
fmt not being freed in wlr_drm_format_set_copy.
This commit fixes the memory leak by removing the
allocation to the heap. The struct is allocated to the
stack anyway. | 
|  | 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. | 
|  | This fixes the following validation errors when shutting down Sway:
    00:00:01.263 [wlr] [render/vulkan/vulkan.c:65] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xdb308312 | Cannot call vkDestroyFramebuffer on VkFramebuffer 0x2e2cd000000002b[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892) (VUID-vkDestroyFramebuffer-framebuffer-00892)
    00:00:01.264 [wlr] [render/vulkan/vulkan.c:65] Validation Error: [ VUID-vkDestroyImage-image-01000 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf2d29b5a | Cannot call vkDestroyImage on VkImage 0x3fbcd60000000028[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000) (VUID-vkDestroyImage-image-01000) | 
|  |  | 
|  |  | 
|  | Now it takes a reference to a destination format | 
|  |  | 
|  |  |