From 56d95c2ecb2fb9f2d4ab103419b9d247ce171fc1 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 27 Feb 2025 16:48:32 +0100 Subject: [PATCH] render/vulkan: introduce wlr_vk_frag_texture_pcr_data Contains UBOs for texture.frag. --- include/render/vulkan.h | 4 ++++ render/vulkan/pass.c | 8 ++++++-- render/vulkan/shaders/texture.frag | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/render/vulkan.h b/include/render/vulkan.h index 651106042..c3fb6b2bf 100644 --- a/include/render/vulkan.h +++ b/include/render/vulkan.h @@ -339,6 +339,10 @@ struct wlr_vk_vert_pcr_data { float uv_size[2]; }; +struct wlr_vk_frag_texture_pcr_data { + float alpha; +}; + struct wlr_vk_frag_output_pcr_data { float matrix[4][4]; // only a 3x3 subset is used float luminance_multiplier; diff --git a/render/vulkan/pass.c b/render/vulkan/pass.c index 95fbd319e..49435b0e8 100644 --- a/render/vulkan/pass.c +++ b/render/vulkan/pass.c @@ -816,6 +816,10 @@ static void render_pass_add_texture(struct wlr_render_pass *wlr_pass, return; } + struct wlr_vk_frag_texture_pcr_data frag_pcr_data = { + .alpha = alpha, + }; + bind_pipeline(pass, pipe->vk); vkCmdBindDescriptorSets(cb, VK_PIPELINE_BIND_POINT_GRAPHICS, @@ -824,8 +828,8 @@ static void render_pass_add_texture(struct wlr_render_pass *wlr_pass, vkCmdPushConstants(cb, pipe->layout->vk, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(vert_pcr_data), &vert_pcr_data); vkCmdPushConstants(cb, pipe->layout->vk, - VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(vert_pcr_data), sizeof(float), - &alpha); + VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(vert_pcr_data), + sizeof(frag_pcr_data), &frag_pcr_data); pixman_region32_t clip; get_clip_region(pass, options->clip, &clip); diff --git a/render/vulkan/shaders/texture.frag b/render/vulkan/shaders/texture.frag index 84b7678e4..58ac59fea 100644 --- a/render/vulkan/shaders/texture.frag +++ b/render/vulkan/shaders/texture.frag @@ -5,6 +5,7 @@ layout(set = 0, binding = 0) uniform sampler2D tex; layout(location = 0) in vec2 uv; layout(location = 0) out vec4 out_color; +// struct wlr_vk_frag_texture_pcr_data layout(push_constant) uniform UBO { layout(offset = 80) float alpha; } data;