aboutsummaryrefslogtreecommitdiff
path: root/render/vulkan
AgeCommit message (Collapse)Author
2023-11-30render: Implement texture_preferred_read_formatAlexander Orzechowski
2023-11-30render/vulkan: Implement texture_read_pixelsAlexander Orzechowski
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/vulkan: drop legacy rendering APISimon Ser
2023-11-21render/vulkan: undo alpha premult for 8-bpc ARGB/ABGRManuel Stoeckl
When a texel from the Vulkan format VK_FORMAT_B8G8R8A8_SRGB is read, the sRGB to linear conversion is applied independently to the R, G, and B channels; the A channel has no influence on this. However, DRM_FORMAT_ARGB8888 buffers are, per Wayland protocol, not encoded in this fashion; one must first unpremultiply the color channels before doing sRGB to linear conversion. This commit switches to handling ARGB8888 and ABGR8888 formats using the general fragment shader conversion from electrical to optical values.
2023-10-26render/vulkan: use VK_KHR_global_priorityeri
References: #3386
2023-10-26render/vulkan: remove unused queue_props in rendererSimon Zeni
2023-10-21renderer/vulkan: don't add two alphas together in blend funcBrett Ernst
2023-10-17render/vulkan: undo alpha premult before sRGB encoding/decodingSimon Ser
sRGB encoding/decoding needs to happen with straight alpha, not pre-multiplied alpha.
2023-10-05render/vulkan: constrain blend to output subpass to redrawn regionManuel Stoeckl
This commit only applies to the render pass API.
2023-10-03treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practicalAlexander Orzechowski
2023-09-21renderer: Use wlr_render_rect_options_get_boxAlexander Orzechowski
Fixes: #3697
2023-09-10render/vulkan: fix validation error with vkCmdBlitImageManuel Stoeckl
Specfically, VUID-vkCmdBlitImage-srcImage-00247.
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-08-20renderer/vulkan: Defer device lost signal until end of passAlexander Orzechowski
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.
2023-07-27render/vulkan: use renamed glslang binary by defaultq234rty
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
2023-07-11render: constify struct wlr_buffer_pass_optionsSimon Ser
Let's not allow renderer implementations to mutate the passed in options.
2023-07-11Use wl_container_of() instead of castsSimon Ser
This slightly improves type safety. The culprits were found with: git grep -E '\([a-z0-9_ ]+ \*\)\W?[a-z]'
2023-06-21render/vulkan: Don't compute texture.has_alpha until first...Alexander Orzechowski
...texture view is dynamically created
2023-06-19render/vulkan: Initialize to fix compilation errorAlexander Orzechowski
2023-06-19render: Introduce wlr_render_texture_options.blend_modeAlexander Orzechowski
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: Inline init_samplerAlexander Orzechowski
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-12render/vulkan: rename tex_usage to shm_tex_usageSimon Ser
Same motivation as fdb199a43c44 ("render/vulkan: rename tex_features to shm_tex_features").
2023-06-07render/vulkan: reset scissor before post-blend subpassSimon Ser
Otherwise only the last command's area will be copied over.
2023-06-07render/vulkan: fix blend subpass matrixSimon Ser
renderer->render_{width,height} are unused with the render pass API.
2023-06-07render/vulkan: fix bound pipeline check for output_pipeSimon Ser
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
2023-06-07render/vulkan: require format info for shmSimon Ser
We use the format info to check the stride and need it to perform the texture upload.
2023-06-07render/vulkan: de-duplicate texture VkImageView initSimon Ser
The logic is the same for both shm and DMA-BUF.
2023-06-07render/vulkan: split off YCbCr texture featuresSimon Ser
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.
2023-06-07render/vulkan: rename tex_features to shm_tex_featuresSimon Ser
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.
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-06-01render/vulkan: improve error handling in vulkan_begin_render_pass()Simon Ser
Release the command buffer if we end up not submitting it.
2023-06-01render/vulkan: improve error handling in render_pass_submit()Simon Ser
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3644
2023-05-31render/vulkan: handle vulkan_record_stage_cb() failuresSimon Ser
2023-05-30render/vulkan: implement render pass APISimon Ser
2023-05-28render/vulkan: add 10, 12, and 16-bit YCbCr formatsSimon Ser
2023-05-26render/vulkan: document TEXTURE_TRANSFORM_* in shaderSimon Ser
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: de-dup pipeline layout initializationSimon Ser
2023-05-24render/vulkan: add more YCbCr formatsSimon Ser
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.
2023-05-24render/vulkan: require support for linear filter for YCbCrSimon Ser
YCBCR_CONVERSION_LINEAR_FILTER is not enough: this one only covers chromaFilter. For magFilter/minFilter we need FILTER_LINEAR as well.
2023-05-24render/vulkan: check format support before creating YCbCr samplerSimon Ser
We need to check whether the format supports dma_tex_ycbcr_features before creating the YCbCr sampler.
2023-05-24render/vulkan: generalize YCbCr format supportSimon Ser