Fixed assert macros, and improved error handling.

This commit is contained in:
Бранимир Караџић
2021-10-25 18:59:32 -07:00
parent 6573fc44a8
commit 8392a44b3a
35 changed files with 705 additions and 617 deletions

View File

@@ -326,8 +326,10 @@ namespace bgfx { namespace spirv
{
uint16_t size = 0;
bx::Error err;
uint16_t count = static_cast<uint16_t>(uniforms.size() );
bx::write(_writer, count);
bx::write(_writer, count, &err);
uint32_t fragmentBit = isFragmentShader ? kUniformFragmentBit : 0;
@@ -341,15 +343,15 @@ namespace bgfx { namespace spirv
}
uint8_t nameSize = (uint8_t)un.name.size();
bx::write(_writer, nameSize);
bx::write(_writer, un.name.c_str(), nameSize);
bx::write(_writer, uint8_t(un.type | fragmentBit) );
bx::write(_writer, un.num);
bx::write(_writer, un.regIndex);
bx::write(_writer, un.regCount);
bx::write(_writer, un.texComponent);
bx::write(_writer, un.texDimension);
bx::write(_writer, un.texFormat);
bx::write(_writer, nameSize, &err);
bx::write(_writer, un.name.c_str(), nameSize, &err);
bx::write(_writer, uint8_t(un.type | fragmentBit), &err);
bx::write(_writer, un.num, &err);
bx::write(_writer, un.regIndex, &err);
bx::write(_writer, un.regCount, &err);
bx::write(_writer, un.texComponent, &err);
bx::write(_writer, un.texDimension, &err);
bx::write(_writer, un.texFormat, &err);
BX_TRACE("%s, %s, %d, %d, %d"
, un.name.c_str()
@@ -801,6 +803,8 @@ namespace bgfx { namespace spirv
uniforms.push_back(un);
}
bx::Error err;
// Loop through the storage buffer, and extract the uniform names:
for (auto& resource : resourcesrefl.storage_buffers)
{
@@ -826,28 +830,28 @@ namespace bgfx { namespace spirv
uint16_t size = writeUniformArray( _writer, uniforms, _options.shaderType == 'f');
uint32_t shaderSize = (uint32_t)spirv.size() * sizeof(uint32_t);
bx::write(_writer, shaderSize);
bx::write(_writer, spirv.data(), shaderSize);
bx::write(_writer, shaderSize, &err);
bx::write(_writer, spirv.data(), shaderSize, &err);
uint8_t nul = 0;
bx::write(_writer, nul);
bx::write(_writer, nul, &err);
const uint8_t numAttr = (uint8_t)program->getNumLiveAttributes();
bx::write(_writer, numAttr);
bx::write(_writer, numAttr, &err);
for (uint8_t ii = 0; ii < numAttr; ++ii)
{
bgfx::Attrib::Enum attr = toAttribEnum(program->getAttributeName(ii) );
if (bgfx::Attrib::Count != attr)
{
bx::write(_writer, bgfx::attribToId(attr) );
bx::write(_writer, bgfx::attribToId(attr), &err);
}
else
{
bx::write(_writer, uint16_t(UINT16_MAX) );
bx::write(_writer, uint16_t(UINT16_MAX), &err);
}
}
bx::write(_writer, size);
bx::write(_writer, size, &err);
}
}
}