shaderc HLSL profile switch fix (#3005)

* shaderc HLSL profile switch fix

* shader makefiles changed to match new hlsl profile switches

Co-authored-by: Ali Seyedof <ali.seyedof@xyzreality.com>
This commit is contained in:
Ali Seyedof
2022-12-28 18:16:37 +00:00
committed by GitHub
parent a93a714632
commit 877cdb8b1f
3 changed files with 20 additions and 16 deletions

View File

@@ -30,11 +30,11 @@ vs_%.bin.h : vs_%.sc
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform linux -p spirv -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_spv
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform windows -p vs_3_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx9
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform windows -p s_3_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx9
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform windows -p vs_4_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform windows -p s_5_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform ios -p metal -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_mtl
-$(SILENT) $(SHADERC) $(VS_FLAGS) --platform ios -p metal -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_mtl
-@cat "$(SHADER_TMP)" >> $(@)
-@printf "extern const uint8_t* $(basename $(<))_pssl;\n" | tr -d '\015' >> $(@)
-@printf "extern const uint32_t $(basename $(<))_pssl_size;\n" | tr -d '\015' >> $(@)
@@ -47,24 +47,24 @@ fs_%.bin.h : fs_%.sc
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform linux -p spirv -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_spv
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform windows -p ps_3_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx9
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform windows -p s_3_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx9
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform windows -p ps_4_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform windows -p s_5_0 -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform ios -p metal -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_mtl
-$(SILENT) $(SHADERC) $(FS_FLAGS) --platform ios -p metal -O 3 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_mtl
-@cat "$(SHADER_TMP)" >> $(@)
-@printf "extern const uint8_t* $(basename $(<))_pssl;\n" | tr -d '\015' >> $(@)
-@printf "extern const uint32_t $(basename $(<))_pssl_size;\n" | tr -d '\015' >> $(@)
cs_%.bin.h : cs_%.sc
@echo [$(<)]
$(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p 430 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_glsl
$(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p 430 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_glsl
@cat "$(SHADER_TMP)" > $(@)
-$(SILENT) $(SHADERC) $(CS_FLAGS) --platform android -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_essl
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p spirv -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_spv
-@cat "$(SHADER_TMP)" >> $(@)
-$(SILENT) $(SHADERC) $(CS_FLAGS) --platform windows -p cs_5_0 -O 1 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-$(SILENT) $(SHADERC) $(CS_FLAGS) --platform windows -p s_5_0 -O 1 -f $(<) -o "$(SHADER_TMP)" --bin2c $(basename $(<))_dx11
-@cat "$(SHADER_TMP)" >> $(@)
-@printf "extern const uint8_t* $(basename $(<))_pssl;\n" | tr -d '\015' >> $(@)
-@printf "extern const uint32_t $(basename $(<))_pssl_size;\n" | tr -d '\015' >> $(@)

View File

@@ -53,14 +53,14 @@ else
ADDITIONAL_INCLUDES?=
ifeq ($(TARGET), 0)
VS_FLAGS=--platform windows -p vs_3_0 -O 3
FS_FLAGS=--platform windows -p ps_3_0 -O 3
VS_FLAGS=--platform windows -p s_3_0 -O 3
FS_FLAGS=--platform windows -p s_3_0 -O 3
SHADER_PATH=shaders/dx9
else
ifeq ($(TARGET), 1)
VS_FLAGS=--platform windows -p vs_5_0 -O 3
FS_FLAGS=--platform windows -p ps_5_0 -O 3
CS_FLAGS=--platform windows -p cs_5_0 -O 1
VS_FLAGS=--platform windows -p s_5_0 -O 3
FS_FLAGS=--platform windows -p s_5_0 -O 3
CS_FLAGS=--platform windows -p s_5_0 -O 1
SHADER_PATH=shaders/dx11
else
ifeq ($(TARGET), 2)

View File

@@ -563,6 +563,10 @@ namespace bgfx { namespace hlsl
return false;
}
char profileAndType[100] = {0};
profileAndType[0] = (_options.shaderType == 'f') ? 'p' : _options.shaderType;
bx::strCat(profileAndType, 100, profile);
s_compiler = load();
bool result = false;
@@ -618,7 +622,7 @@ namespace bgfx { namespace hlsl
, NULL
, NULL
, "main"
, profile
, profileAndType
, flags
, 0
, &code
@@ -677,7 +681,7 @@ namespace bgfx { namespace hlsl
else
{
UniformNameList unusedUniforms;
if (!getReflectionDataD3D11(code, profile[0] == 'v', uniforms, numAttrs, attrs, size, unusedUniforms) )
if (!getReflectionDataD3D11(code, profileAndType[0] == 'v', uniforms, numAttrs, attrs, size, unusedUniforms) )
{
bx::printf("Error: Unable to get D3D11 reflection data.\n");
goto error;
@@ -736,7 +740,7 @@ namespace bgfx { namespace hlsl
uint16_t count = (uint16_t)uniforms.size();
bx::write(_writer, count, &err);
uint32_t fragmentBit = profile[0] == 'p' ? kUniformFragmentBit : 0;
uint32_t fragmentBit = profileAndType[0] == 'p' ? kUniformFragmentBit : 0;
for (UniformArray::const_iterator it = uniforms.begin(); it != uniforms.end(); ++it)
{
const Uniform& un = *it;