e9706e62f5 
								
							
								 
							
						 
						
							
							
								
								renderer: Use wlr_render_rect_options_get_box  
							
							... 
							
							
 
							
							Fixes : #3697  
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								5aea90264f 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix validation error with vkCmdBlitImage  
							
							... 
							
							
 
							
							Specfically, VUID-vkCmdBlitImage-srcImage-00247. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								65bbbbbf0c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: de-duplicate VkImageUsageFlags  
							
							... 
							
							
 
							
							The flags passed to vkCreateImage() must match the flags used when
querying formats. Make this clearer by using the same variable. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								5f6912595e 
								
							
								 
							
						 
						
							
							
								
								renderer/vulkan: Defer device lost signal until end of pass  
							
							... 
							
							
 
							
							If the compositor were to try to handle a GPU reset within the lost
signal (by recreating the renderer) we should avoid referencing renderer
resources after the lost signal. This prevents use after free for such
compositors. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								061f5fafbd 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use renamed glslang binary by default  
							
							... 
							
							
 
							
							glslang 12.3.0 renamed glslangValidator to glslang,
use that by default and use the old name as a fallback.
References: https://github.com/KhronosGroup/glslang/blob/main/CHANGES.md?plain=1#L14  
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								b7dca21c2b 
								
							
								 
							
						 
						
							
							
								
								render: constify struct wlr_buffer_pass_options  
							
							... 
							
							
 
							
							Let's not allow renderer implementations to mutate the passed in
options. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fe06e5f49a 
								
							
								 
							
						 
						
							
							
								
								Use wl_container_of() instead of casts  
							
							... 
							
							
 
							
							This slightly improves type safety.
The culprits were found with:
    git grep -E '\([a-z0-9_ ]+ \*\)\W?[a-z]' 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								38d451bcb5 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Don't compute texture.has_alpha until first...  
							
							... 
							
							
 
							
							...texture view is dynamically created 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								06c0b0a204 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Initialize to fix compilation error  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								2044cc2311 
								
							
								 
							
						 
						
							
							
								
								render: Introduce wlr_render_texture_options.blend_mode  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								6bd44c4fcd 
								
							
								 
							
						 
						
							
							
								
								renderer: Introduce wlr_scale_filter_mode  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								3ee0f52e09 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Dynamically create texture views  
							
							... 
							
							
 
							
							Now that we are dynamically creating pipeline layouts, we need separate
texture views for each pipeline layout we choose to use with a texture. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								7c5a3afd60 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Inline init_sampler  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								8a387b5558 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Dynamically create pipeline layouts  
							
							... 
							
							
 
							
							These will happen lazily when pipelines get created. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								3623005858 
								
							
								 
							
						 
						
							
							
								
								render/vulkan/pipeline_key: Add blending  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								9d31372930 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Handle quad pipeline through generic pipeline path  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								97fdd57eb2 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: Dynamically handle pipeline creation for textures  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								709c9dd287 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: rename tex_usage to shm_tex_usage  
							
							... 
							
							
 
							
							Same motivation as fdb199a43c 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								30616bcf0c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: reset scissor before post-blend subpass  
							
							... 
							
							
 
							
							Otherwise only the last command's area will be copied over. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								150a88bd03 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix blend subpass matrix  
							
							... 
							
							
 
							
							renderer->render_{width,height} are unused with the render pass
API. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fd9e4b860f 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix bound pipeline check for output_pipe  
							
							... 
							
							
 
							
							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  
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								1b947c08c6 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: require format info for shm  
							
							... 
							
							
 
							
							We use the format info to check the stride and need it to perform
the texture upload. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								2a2f0772a9 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: de-duplicate texture VkImageView init  
							
							... 
							
							
 
							
							The logic is the same for both shm and DMA-BUF. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								cebe991e95 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: split off YCbCr texture features  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fdb199a43c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: rename tex_features to shm_tex_features  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								9e8947e4d5 
								
							
								 
							
						 
						
							
							
								
								add render timer API  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								beb820b573 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: improve error handling in vulkan_begin_render_pass()  
							
							... 
							
							
 
							
							Release the command buffer if we end up not submitting it. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								0ba3ea3bcd 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: improve error handling in render_pass_submit()  
							
							... 
							
							
 
							
							Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3644  
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								ba276e5ac2 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: handle vulkan_record_stage_cb() failures  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								e07c77f846 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: implement render pass API  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								3de330ec85 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: add 10, 12, and 16-bit YCbCr formats  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								28e8d92263 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: document TEXTURE_TRANSFORM_* in shader  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								f60b367db7 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: drop unused vulkan_has_extension()  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								42eec38ab6 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: drop unused vulkan_change_layout_queue()  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								7099fa2ea4 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: de-dup pipeline layout initialization  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								16dea12dae 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: add more YCbCr formats  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								a682fa6c21 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: require support for linear filter for YCbCr  
							
							... 
							
							
 
							
							YCBCR_CONVERSION_LINEAR_FILTER is not enough: this one only covers
chromaFilter. For magFilter/minFilter we need FILTER_LINEAR as well. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								91d469d8c0 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: check format support before creating YCbCr sampler  
							
							... 
							
							
 
							
							We need to check whether the format supports dma_tex_ycbcr_features
before creating the YCbCr sampler. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								c7ae9dfaf8 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: generalize YCbCr format support  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								50b494d0f9 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: add init_{default,ycbcr}_pipeline_layout()  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								5ea0eb3468 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: add vulkan_get_pipeline_layout()  
							
							... 
							
							
 
							
							Will make it easier to add more pipeline layouts for other YCbCr
formats. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fd38761676 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: introduce struct wlr_vk_pipeline_layout  
							
							... 
							
							
 
							
							This will make it easier to create one pipeline layout (plus related
objects) per YCbCr format. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								db619009dc 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use same sampler params for RGBA and NV12  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								9755016422 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE for default sampler  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fe7c998666 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use identity swizzle for YCbCr formats  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								091aa5582a 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix VkPipelineLayout when texturing NV12  
							
							... 
							
							
 
							
							The default pipeline layout was always passed. However, for NV12 we
need to pass a different one. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								fc3ad784e0 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: extract quad pipeline init to separate function  
							
							... 
							
							
 
							
							Makes it clearer that all of these structs are for the quad pipeline. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								09f5a00585 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix YCbCr format check in vulkan_texture_from_pixels()  
							
							
 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								d7bebb0a4c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: drop unnecessary comments  
							
							... 
							
							
 
							
							Some comments in here are noise. 
							
						 
						
							2 years ago  
				
					
						
							
							
								 
						
							
							
								96f3f3c92e 
								
							
								 
							
						 
						
							
							
								
								render/pixel-format: add support for block-based formats  
							
							... 
							
							
 
							
							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. 
							
						 
						
							2 years ago