Simplify SPIRV bindings shifts (shaderc bin version 11) (#2487)

This commit is contained in:
Hugo Amnov
2021-04-21 18:33:12 +02:00
committed by GitHub
parent 07e9af249c
commit ec36cf9872
7 changed files with 60 additions and 19 deletions

View File

@@ -13,7 +13,7 @@ extern "C"
#include <fpp.h>
} // extern "C"
#define BGFX_SHADER_BIN_VERSION 10
#define BGFX_SHADER_BIN_VERSION 11
#define BGFX_CHUNK_MAGIC_CSH BX_MAKEFOURCC('C', 'S', 'H', BGFX_SHADER_BIN_VERSION)
#define BGFX_CHUNK_MAGIC_FSH BX_MAKEFOURCC('F', 'S', 'H', BGFX_SHADER_BIN_VERSION)
#define BGFX_CHUNK_MAGIC_VSH BX_MAKEFOURCC('V', 'S', 'H', BGFX_SHADER_BIN_VERSION)

View File

@@ -448,12 +448,13 @@ namespace bgfx { namespace spirv
shader->setEnvInput(glslang::EShSourceHlsl, stage, glslang::EShClientVulkan, s_GLSL_VULKAN_CLIENT_VERSION);
shader->setEnvClient(glslang::EShClientVulkan, getGlslangTargetVulkanVersion(_version));
shader->setEnvTarget(glslang::EShTargetSpv, getGlslangTargetSpirvVersion(_version));
uint32_t bindingOffset = (stage == EShLanguage::EShLangFragment ? 48 : 0);
shader->setShiftBinding(glslang::EResUbo, bindingOffset);
shader->setShiftBinding(glslang::EResTexture, bindingOffset + 16);
shader->setShiftBinding(glslang::EResSampler, bindingOffset + 32);
shader->setShiftBinding(glslang::EResSsbo, bindingOffset + 16);
shader->setShiftBinding(glslang::EResImage, bindingOffset + 32);
// Reserve two spots for the stage UBOs
shader->setShiftBinding(glslang::EResUbo, (stage == EShLanguage::EShLangFragment ? kSpirvFragmentBinding : kSpirvVertexBinding));
shader->setShiftBinding(glslang::EResTexture, kSpirvBindShift);
shader->setShiftBinding(glslang::EResSampler, kSpirvBindShift + kSpirvSamplerShift);
shader->setShiftBinding(glslang::EResSsbo, kSpirvBindShift);
shader->setShiftBinding(glslang::EResImage, kSpirvBindShift);
const char* shaderStrings[] = { _code.c_str() };
shader->setStrings(