From a2e089d9e302ccf8326516654cef40da60478ce9 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 8 Sep 2025 18:04:02 +0200 Subject: [PATCH] vulkan: unify Tex/OutColorManagementData --- src/gfx_apis/vulkan/renderer.rs | 16 ++++++++-------- src/gfx_apis/vulkan/shaders.rs | 12 ++---------- src/gfx_apis/vulkan/shaders/eotfs.glsl | 1 + src/gfx_apis/vulkan/shaders/out.frag | 15 +++++++-------- src/gfx_apis/vulkan/shaders/tex.frag | 9 ++++----- src/gfx_apis/vulkan/shaders/tex_set.glsl | 9 +++++++++ 6 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 src/gfx_apis/vulkan/shaders/tex_set.glsl diff --git a/src/gfx_apis/vulkan/renderer.rs b/src/gfx_apis/vulkan/renderer.rs index 2d87821a..b95260d8 100644 --- a/src/gfx_apis/vulkan/renderer.rs +++ b/src/gfx_apis/vulkan/renderer.rs @@ -25,10 +25,10 @@ use { sampler::VulkanSampler, semaphore::VulkanSemaphore, shaders::{ - FILL_FRAG, FILL_VERT, FillPushConstants, LEGACY_FILL_FRAG, LEGACY_FILL_VERT, - LEGACY_TEX_FRAG, LEGACY_TEX_VERT, LegacyFillPushConstants, LegacyTexPushConstants, - OUT_FRAG, OUT_VERT, OutColorManagementData, OutPushConstants, TEX_FRAG, TEX_VERT, - TexColorManagementData, TexPushConstants, TexVertex, VulkanShader, + ColorManagementData, FILL_FRAG, FILL_VERT, FillPushConstants, LEGACY_FILL_FRAG, + LEGACY_FILL_VERT, LEGACY_TEX_FRAG, LEGACY_TEX_VERT, LegacyFillPushConstants, + LegacyTexPushConstants, OUT_FRAG, OUT_VERT, OutPushConstants, TEX_FRAG, TEX_VERT, + TexPushConstants, TexVertex, VulkanShader, }, }, io_uring::IoUring, @@ -352,7 +352,7 @@ impl VulkanDevice { }; let uniform_buffer_cache = { let usage = BufferUsageFlags::SHADER_DEVICE_ADDRESS | BufferUsageFlags::UNIFORM_BUFFER; - let align = align_of::() as DeviceSize; + let align = align_of::() as DeviceSize; VulkanBufferCache::new(self, &allocator, usage, align) }; let render = Rc::new(VulkanRenderer { @@ -575,7 +575,7 @@ impl VulkanRenderer { if let Some(addr) = memory.blend_buffer_color_management_data_address { let uniform_buffer = DescriptorAddressInfoEXT::default() .address(addr) - .range(size_of::() as _); + .range(size_of::() as _); let info = DescriptorGetInfoEXT::default() .ty(DescriptorType::UNIFORM_BUFFER) .data(DescriptorDataEXT { @@ -603,7 +603,7 @@ impl VulkanRenderer { if let Some(addr) = c.color_management_data_address { let uniform_buffer = DescriptorAddressInfoEXT::default() .address(addr) - .range(size_of::() as _); + .range(size_of::() as _); let info = DescriptorGetInfoEXT::default() .ty(DescriptorType::UNIFORM_BUFFER) .data(DescriptorDataEXT { @@ -2233,7 +2233,7 @@ impl ColorTransforms { ) -> Option { let ct = self.get_or_create(src, dst)?; if ct.offset.is_none() { - let data = TexColorManagementData { + let data = ColorManagementData { matrix: ct.matrix.to_f32(), }; let offset = writer.write(uniform_buffer_offset_mask, &data); diff --git a/src/gfx_apis/vulkan/shaders.rs b/src/gfx_apis/vulkan/shaders.rs index 74ef9031..de75388d 100644 --- a/src/gfx_apis/vulkan/shaders.rs +++ b/src/gfx_apis/vulkan/shaders.rs @@ -63,19 +63,11 @@ unsafe impl Packed for TexPushConstants {} #[derive(Copy, Clone, Debug)] #[repr(C, align(16))] -pub struct TexColorManagementData { +pub struct ColorManagementData { pub matrix: [[f32; 4]; 4], } -unsafe impl Packed for TexColorManagementData {} - -#[derive(Copy, Clone, Debug)] -#[repr(C, align(16))] -pub struct OutColorManagementData { - pub matrix: [[f32; 4]; 4], -} - -unsafe impl Packed for OutColorManagementData {} +unsafe impl Packed for ColorManagementData {} #[derive(Copy, Clone, Debug)] #[repr(C)] diff --git a/src/gfx_apis/vulkan/shaders/eotfs.glsl b/src/gfx_apis/vulkan/shaders/eotfs.glsl index 049a0444..d8816785 100644 --- a/src/gfx_apis/vulkan/shaders/eotfs.glsl +++ b/src/gfx_apis/vulkan/shaders/eotfs.glsl @@ -2,6 +2,7 @@ #define EOTFS_GLSL #include "frag_spec_const.glsl" +#include "tex_set.glsl" #define TF_LINEAR 1 #define TF_ST2084_PQ 2 diff --git a/src/gfx_apis/vulkan/shaders/out.frag b/src/gfx_apis/vulkan/shaders/out.frag index d5df53e0..b374000e 100644 --- a/src/gfx_apis/vulkan/shaders/out.frag +++ b/src/gfx_apis/vulkan/shaders/out.frag @@ -3,18 +3,17 @@ #extension GL_EXT_samplerless_texture_functions : require #extension GL_EXT_scalar_block_layout : require -#include "frag_spec_const.glsl" -#include "eotfs.glsl" -#include "out.common.glsl" +#define TEX_SET 0 + +#include "frag_spec_const.glsl" +#include "out.common.glsl" +#include "tex_set.glsl" +#include "eotfs.glsl" -layout(set = 0, binding = 0) uniform texture2D in_color; -layout(set = 0, binding = 1, row_major, std430) uniform ColorManagementData { - mat4x4 matrix; -} cm_data; layout(location = 0) out vec4 out_color; void main() { - vec4 c = texelFetch(in_color, ivec2(gl_FragCoord.xy), 0); + vec4 c = texelFetch(tex, ivec2(gl_FragCoord.xy), 0); if (eotf != inv_eotf || has_matrix) { vec3 rgb = c.rgb; rgb /= mix(c.a, 1.0, c.a == 0.0); diff --git a/src/gfx_apis/vulkan/shaders/tex.frag b/src/gfx_apis/vulkan/shaders/tex.frag index 6e365a3c..df6ee5ec 100644 --- a/src/gfx_apis/vulkan/shaders/tex.frag +++ b/src/gfx_apis/vulkan/shaders/tex.frag @@ -2,15 +2,14 @@ #extension GL_EXT_scalar_block_layout : require +#define TEX_SET 1 + #include "frag_spec_const.glsl" -#include "eotfs.glsl" #include "tex.common.glsl" +#include "tex_set.glsl" +#include "eotfs.glsl" layout(set = 0, binding = 0) uniform sampler sam; -layout(set = 1, binding = 0) uniform texture2D tex; -layout(set = 1, binding = 1, row_major, std430) uniform ColorManagementData { - mat4x4 matrix; -} cm_data; layout(location = 0) in vec2 tex_pos; layout(location = 0) out vec4 out_color; diff --git a/src/gfx_apis/vulkan/shaders/tex_set.glsl b/src/gfx_apis/vulkan/shaders/tex_set.glsl new file mode 100644 index 00000000..eedfe0ff --- /dev/null +++ b/src/gfx_apis/vulkan/shaders/tex_set.glsl @@ -0,0 +1,9 @@ +#ifndef TEX_SET_GLSL +#define TEX_SET_GLSL + +layout(set = TEX_SET, binding = 0) uniform texture2D tex; +layout(set = TEX_SET, binding = 1, row_major, std430) uniform ColorManagementData { + mat4x4 matrix; +} cm_data; + +#endif