瀏覽代碼

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 <[email protected]>
Ali Seyedof 3 年之前
父節點
當前提交
877cdb8b1f
共有 3 個文件被更改,包括 20 次插入16 次删除
  1. 8 8
      scripts/shader-embeded.mk
  2. 5 5
      scripts/shader.mk
  3. 7 3
      tools/shaderc/shaderc_hlsl.cpp

+ 8 - 8
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' >> $(@)

+ 5 - 5
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)

+ 7 - 3
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;