Fix macos build error
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, macos-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled

This commit is contained in:
2025-12-31 14:40:02 -08:00
parent 7997417fa3
commit 5d077cee6d
3 changed files with 12 additions and 2 deletions

View File

@@ -441,7 +441,7 @@ void KRPipeline::initPushConstantStage(ShaderStage stage, const SpvReflectShader
for (int iUniform = 0; iUniform < kPushConstantCount; iUniform++) {
for (int iMember = 0; iMember < block.member_count; iMember++) {
const SpvReflectBlockVariable& member = block.members[iMember];
if (stricmp(SHADER_VALUE_NAMES[iUniform], member.name) == 0) {
if (IsShaderValueName(iUniform, member.name)) {
pushConstants.offset[iUniform] = member.offset;
pushConstants.size[iUniform] = member.size;
if (member.type_description->op == SpvOpTypeVector && member.numeric.scalar.width == 32) {

View File

@@ -30,6 +30,7 @@
//
#include "KRShaderReflection.h"
#include "KRContext.h"
using namespace hydra;
@@ -105,6 +106,15 @@ const char* SHADER_VALUE_NAMES[] = {
"fade_color", // PushConstant::fade_color
};
bool IsShaderValueName(int index, const char* szName)
{
assert(index >= 0 && index <= (int)ShaderValue::NUM_SHADER_VALUES);
if (stricmp(SHADER_VALUE_NAMES[index], szName) == 0) {
return true;
}
return false;
}
bool KRReflectedObject::getShaderValue(ShaderValue value, ShaderValueType type, void* output) const
{
switch (type) {

View File

@@ -125,7 +125,7 @@ enum class ShaderValue : uint8_t
NUM_SHADER_VALUES
};
const char* SHADER_VALUE_NAMES[];
bool IsShaderValueName(int index, const char* szName);
class KRReflectedObject
{