From 877cdb8b1f88eed6461622616ae7e3fa77b9b39a Mon Sep 17 00:00:00 2001 From: Ali Seyedof Date: Wed, 28 Dec 2022 18:16:37 +0000 Subject: [PATCH] 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 --- scripts/shader-embeded.mk | 16 ++++++++-------- scripts/shader.mk | 10 +++++----- tools/shaderc/shaderc_hlsl.cpp | 10 +++++++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/scripts/shader-embeded.mk b/scripts/shader-embeded.mk index 5fe1fcd07..99760f167 100644 --- a/scripts/shader-embeded.mk +++ b/scripts/shader-embeded.mk @@ -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' >> $(@) diff --git a/scripts/shader.mk b/scripts/shader.mk index d1ddbf2b0..0a46cfaa0 100644 --- a/scripts/shader.mk +++ b/scripts/shader.mk @@ -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) diff --git a/tools/shaderc/shaderc_hlsl.cpp b/tools/shaderc/shaderc_hlsl.cpp index 7671c03f3..739a250fa 100644 --- a/tools/shaderc/shaderc_hlsl.cpp +++ b/tools/shaderc/shaderc_hlsl.cpp @@ -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;