From 88272c68558c1c0dc3af8b37a0157c62c45629da Mon Sep 17 00:00:00 2001 From: niki Date: Mon, 9 Oct 2023 20:07:32 +0200 Subject: [PATCH] vulkan: correctly identify boolean uniforms --- src/modules/graphics/Shader.cpp | 10 +++++++++- src/modules/graphics/vulkan/Shader.cpp | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/graphics/Shader.cpp b/src/modules/graphics/Shader.cpp index f6c314420..5ace1031d 100644 --- a/src/modules/graphics/Shader.cpp +++ b/src/modules/graphics/Shader.cpp @@ -1010,8 +1010,16 @@ bool Shader::validateInternal(StrongRef stages[], std::string &err, values[i].u = convertData((*constarray)[i]); } break; - case glslang::EbtInt: case glslang::EbtBool: + u.dataType = DATA_BASETYPE_BOOL; + if (constarray != nullptr) + { + values.resize(constarray->size()); + for (int i = 0; i < constarray->size(); i++) + values[i].u = convertData((*constarray)[i]); + } + break; + case glslang::EbtInt: default: u.dataType = DATA_BASETYPE_INT; if (constarray != nullptr) diff --git a/src/modules/graphics/vulkan/Shader.cpp b/src/modules/graphics/vulkan/Shader.cpp index 3ad661164..932a4f7c8 100644 --- a/src/modules/graphics/vulkan/Shader.cpp +++ b/src/modules/graphics/vulkan/Shader.cpp @@ -614,6 +614,9 @@ void Shader::buildLocalUniforms(spirv_cross::Compiler &comp, const spirv_cross:: std::string name = basename + comp.get_member_name(type.self, uindex); + if (name == "Debug") + float x = 1.0f; + switch (memberType.basetype) { case SPIRType::Struct: @@ -656,6 +659,9 @@ void Shader::buildLocalUniforms(spirv_cross::Compiler &comp, const spirv_cross:: if (reflectionIt != validationReflection.localUniforms.end()) { const auto &localUniform = reflectionIt->second; + if (localUniform.dataType == DATA_BASETYPE_BOOL) + u.baseType = UNIFORM_BOOL; + const auto &values = localUniform.initializerValues; if (!values.empty()) memcpy(