shaderc: Uniform array element count is 16-bit. Closes #3226. (#4104)

This commit is contained in:
Branimir Karadžić
2026-10-28 21:32:46 -07:00
committed by GitHub
parent e7c58be8b6
commit cebc89b55d
37 changed files with 15836 additions and 15746 deletions
+12 -4
View File
@@ -677,7 +677,7 @@ namespace bgfx { namespace spirv
}
UniformArray uniforms;
bool implicitUniform = false;
bool invalidUniform = false;
{
uint16_t count = (uint16_t)program->getNumLiveUniformVariables();
@@ -701,11 +701,19 @@ namespace bgfx { namespace spirv
, "Error: Global '%s' is implicitly a uniform. Declare it 'static const', or make it a local variable.\n"
, un.name.c_str()
);
implicitUniform = true;
invalidUniform = true;
continue;
}
un.num = uint8_t(program->getUniformArraySize(ii) );
const uint32_t arraySize = uint32_t(program->getUniformArraySize(ii) );
if (!isUniformNumValid(un.name.c_str(), arraySize, _messageWriter) )
{
invalidUniform = true;
continue;
}
un.num = uint16_t(arraySize);
const uint32_t offset = program->getUniformBufferOffset(ii);
un.regIndex = uint16_t(offset);
un.regCount = un.num;
@@ -774,7 +782,7 @@ namespace bgfx { namespace spirv
validatorOptions.SetBeforeHlslLegalization(true);
const bool optimized = true
&& !implicitUniform
&& !invalidUniform
&& opt.Run(
spirv.data()
, spirv.size()