099a147439 
								
							
								 
							
						 
						
							
							
								
								wlr_drm_format: Change wlr_drm_format_create to init  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								e427e019c4 
								
							
								 
							
						 
						
							
							
								
								wlr_drm_format: Don't take double pointer in wlr_drm_format_add  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								e6879616e7 
								
							
								 
							
						 
						
							
							
								
								wlr_drm_format: Make structure constant length  
							
							... 
							
							
 
							
							Don't store modifiers as part of the struct. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								b45396c790 
								
							
								 
							
						 
						
							
							
								
								wlr_drm_format: Introduce drm_format_finish  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								e353c5c631 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: enable NV12 on big-endian  
							
							... 
							
							
 
							
							This format doesn't change its layout on big endian because it's
not packed and has 8-bit channels. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								095a63a11c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: improve logging when creating texture  
							
							... 
							
							
 
							
							Remove debug logs when a texture is created, since this happens
pretty often. Use drmGetFormatName() and drmGetFormatModifierName()
to log DRM formats and modifiers. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								e6fc5d1e49 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: increase next descriptor pool size  
							
							... 
							
							
 
							
							This ensures that the pool sizes grow exponentially, making the number
of pools needed logarithmic in the number of descriptors, instead of
linear. Since the first pool's size is 256, this change only has an
effect when the compositor creates a large number of textures. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								b03f71fe5f 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: add support for NV12  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								5adb1be3a7 
								
							
								 
							
						 
						
							
							
								
								drm_format_set_intersect: Require initialized dst and remove assert  
							
							... 
							
							
 
							
							The usages in linux_dmabuf zero out the dst before passing it so this
change should be fine. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								1ee75786b4 
								
							
								 
							
						 
						
							
							
								
								drm_format_set_union: Require initialized dst and remove assert  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								403eac51c4 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix code style for function brackets  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								ec37d55a5e 
								
							
								 
							
						 
						
							
							
								
								Add union function for format sets  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								a93fc8afd6 
								
							
								 
							
						 
						
							
							
								
								render: introduce blend mode  
							
							... 
							
							
 
							
							Allow callers to pick the blend mode when rendering a rect. The
"none" mode can be used to disable blending and clear rects. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								6b7d1d732a 
								
							
								 
							
						 
						
							
							
								
								render/pixman: fix scaling in render_pass_add_texture()  
							
							... 
							
							
 
							
							Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3642 
Fixes: 6830bfc17f 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								f5a5712a02 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use VK_KHR_synchronization2  
							
							... 
							
							
 
							
							This simplifies the vkQueueSubmit call, removing the need to pass
timeline semaphore point values as separate arrays. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								6830bfc17f 
								
							
								 
							
						 
						
							
							
								
								render/pixman: implement render pass API  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								6ce371a317 
								
							
								 
							
						 
						
							
							
								
								render/pixman: add begin_pixman_data_ptr_access()  
							
							... 
							
							
 
							
							This logic is used twice. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								471249ae4f 
								
							
								 
							
						 
						
							
							
								
								render/pass: add legacy render pass implementation  
							
							... 
							
							
 
							
							Add a render pass implementation which leverages the legacy
rendering API. This is helpful during the migration. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								4a1ad32534 
								
							
								 
							
						 
						
							
							
								
								render: add render pass helpers  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								756dedae20 
								
							
								 
							
						 
						
							
							
								
								Add a new renderer API  
							
							... 
							
							
 
							
							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  
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								d795824346 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: fix signedness of strcmp() return value  
							
							... 
							
							
 
							
							strcmp() returns a signed integer. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								62e60ba889 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use initializer in vulkan_change_layout_queue()  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								74e8fd8a9a 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: remove extra newline  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								92b726ef67 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use full names for extension command fields  
							
							... 
							
							
 
							
							This makes grepping much easier. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								40dde59475 
								
							
								 
							
						 
						
							
							
								
								render/gles2: use byte-aligned rows for glReadPixels  
							
							... 
							
							
 
							
							Setting the GLESv2 parameter GL_PACK_ALIGNMENT to 1 ensures that the
stride of the glReadPixels output matches the value computed in
`pack_stride`. Since the default value of GL_PACK_ALIGNMENT is 4, this
does not make a difference under normal use; but without this patch
the stride can be incorrect; for example, with RGB565 buffers and
screenshots of regions with odd width. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								59d2743c0c 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: avoid double-close on sync_file FD after semaphore import  
							
							... 
							
							
 
							
							Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3610  
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								7d9938c957 
								
							
								 
							
						 
						
							
							
								
								drm_format_set: fix realloc size  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								40117e1e0d 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: prefer render node for wlr_renderer_get_drm_fd()  
							
							... 
							
							
 
							
							Instead of returning a primary node from wlr_renderer_get_drm_fd(),
prefer to return a render node if any. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								59acc69737 
								
							
								 
							
						 
						
							
							
								
								vulkan: silence -Wint-conversion on 32-bit architectures  
							
							... 
							
							
 
							
							render/vulkan/renderer.c:388:70: error: incompatible pointer to integer conversion passing 'void *' to parameter of type 'VkFence' (aka 'unsigned long long') [-Werror,-Wint-conversion]
        VkResult res = vkQueueSubmit(renderer->dev->queue, 1, &submit_info, NULL);
                                                                            ^~~~
render/vulkan/renderer.c:1141:81: error: incompatible pointer to integer conversion passing 'void *' to parameter of type 'VkFence' (aka 'unsigned long long') [-Werror,-Wint-conversion]
        VkResult res = vkQueueSubmit(renderer->dev->queue, submit_count, submit_infos, NULL);
                                                                                       ^~~~
/usr/include/sys/_null.h:34:14: note: expanded from macro 'NULL'
 #define NULL    ((void *)0)
                 ^~~~~~~~~~~
/usr/local/include/vulkan/vulkan_core.h:4054:49: note: passing argument to parameter 'fence' here
    VkFence                                     fence);
                                                ^
Fixes: a8a194d695 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								8619ffab21 
								
							
								 
							
						 
						
							
							
								
								swapchain: remove allocator listener on destroy  
							
							... 
							
							
 
							
							Past that point the wlr_allocator is gone and the listeners are
invalidated. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								b33ab26fe7 
								
							
								 
							
						 
						
							
							
								
								render/swapchain: make public  
							
							... 
							
							
 
							
							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. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								782b5e6565 
								
							
								 
							
						 
						
							
							
								
								Revert "render/egl: skip incompatible EGL devices"  
							
							... 
							
							
 
							
							Reverts commit c73e20628a 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								c73e20628a 
								
							
								 
							
						 
						
							
							
								
								render/egl: skip incompatible EGL devices  
							
							... 
							
							
 
							
							Without EGL_EXT_device_drm, eglQueryDeviceStringEXT(EGL_DRM_DEVICE_FILE_EXT) further below is invalid. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								677a3f2f88 
								
							
								 
							
						 
						
							
							
								
								render/gles2: default to highp if available  
							
							... 
							
							
 
							
							The spec [1] says that the maximum value for a mediump float
is at least 2¹⁴ in section 4.5.2. However, when using a 4k
resolution texture coordinates will exceed this value. This causes
issues on drivers which implement mediump as a 16-bit [2].
Switch to highp. There's a twist: on GLES2, support for highp is
optional. So we need to guard it with cute GL_FRAGMENT_PRECISION_HIGH
ifdefs.
[1]: https://registry.khronos.org/OpenGL/specs/es/2.0/GLSL_ES_Specification_1.00.pdf 
[2]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21082  
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								0534d12b28 
								
							
								 
							
						 
						
							
							
								
								render/gles2: use correct type for shader type  
							
							... 
							
							
 
							
							Doesn't matter a lot, but let's try to be consistent with the
GL headers. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								377668aaf6 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: check that requested size is smaller than max  
							
							... 
							
							
 
							
							Fail with a clearer error when the requested size is too large.
Without this, we allocate a buffer with a size smaller than what
was requested.
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3975  
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								1ba322e9ff 
								
							
								 
							
						 
						
							
							
								
								vulkan: increase max stage size to support large buffers  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								10e16db738 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use correct source offset in read_pixels  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								faa31d123f 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: always finish buffer addon on texture destroy  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								0702eb9219 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: remove NULL renderer check on texture destroy  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								f12cdc53f3 
								
							
								 
							
						 
						
							
							
								
								render/egl: stop advertising render support for external-only formats  
							
							... 
							
							
 
							
							Some formats like YUV are only supported by Mesa for sampling, not
for rendering. However we always unconditionally added the INVALID
modifier to the list of render formats.
Check whether all modifiers are external-only, in that case, don't
add INVALID to the list of render formats. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								80074d95fb 
								
							
								 
							
						 
						
							
							
								
								egl: consistently use EGLint for DMA-BUF format  
							
							... 
							
							
 
							
							EGL_EXT_image_dma_buf_import_modifiers [1] uses EGLint to carry
formats. We were casting it to int (which may not be the same
width) and uint32_t (which may change the value).
Instead, use EGLint everywhere.
[1]: https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt  
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								32fc23a383 
								
							
								 
							
						 
						
							
							
								
								render/pixman: skip mask for opaque texture rendering  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								86fc2199f8 
								
							
								 
							
						 
						
							
							
								
								build: unify naming for HAVE_* defines  
							
							... 
							
							
 
							
							We sometimes used HAS_, sometimes polluted the LIBINPUT_ namespace,
etc. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								cb6b1193c8 
								
							
								 
							
						 
						
							
							
								
								render/allocator/gbm: use internal_config  
							
							... 
							
							
 
							
							Removes a project argument. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								1bd0ba3949 
								
							
								 
							
						 
						
							
							
								
								render: simplify renderer_autocreate_with_drm_fd()  
							
							... 
							
							
 
							
							Use early returns to remove the !renderer checks. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								8456ac6fa9 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: wait for DMA-BUF fences  
							
							... 
							
							
 
							
							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. 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								30219cf76b 
								
							
								 
							
						 
						
							
							
								
								render/dmabuf: add dmabuf_export_sync_file()  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								a37a22e344 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: use initializers for VkSubmitInfo  
							
							
 
							
						 
						
							3 years ago  
				
					
						
							
							
								 
						
							
							
								666c45bb29 
								
							
								 
							
						 
						
							
							
								
								render/vulkan: remove stage_cb conditional  
							
							... 
							
							
 
							
							We always have a stage_cb at this point. 
							
						 
						
							3 years ago