From e92df0a23144b251542a407029df773399789e20 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Fri, 12 Apr 2024 17:52:37 -0300 Subject: [PATCH] vulkan: fix shader creation when using a varying matrix. --- src/modules/graphics/vulkan/Shader.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/graphics/vulkan/Shader.cpp b/src/modules/graphics/vulkan/Shader.cpp index 5f3c4f213..815743fb3 100644 --- a/src/modules/graphics/vulkan/Shader.cpp +++ b/src/modules/graphics/vulkan/Shader.cpp @@ -735,8 +735,10 @@ void Shader::compileShaders() for (const auto &r : shaderResources.stage_outputs) { - const auto &type = comp.get_type(r.type_id); + const auto &type = comp.get_type(r.base_type_id); int count = type.array.empty() ? 1 : type.array[0]; + if (type.op == spv::OpTypeMatrix) + count *= type.columns; ioLocationMapper(comp, spirv, r.name, count, r.id); } @@ -745,8 +747,10 @@ void Shader::compileShaders() { for (const auto &r : shaderResources.stage_inputs) { - const auto &type = comp.get_type(r.type_id); + const auto &type = comp.get_type(r.base_type_id); int count = type.array.empty() ? 1 : type.array[0]; + if (type.op == spv::OpTypeMatrix) + count *= type.columns; ioLocationMapper(comp, spirv, r.name, count, r.id); }