@@ -276,12 +276,7 @@ std::vector<unsigned int> LoadSPIRVFromHLSL(const std::string& ShaderSource,
276276 SPIRV = GLSLangUtils::HLSLtoSPIRV (ShaderCI, GLSLangUtils::SpirvVersion::Vk100, nullptr , nullptr );
277277 }
278278
279- // SPIR-V bytecode generated from HLSL must be legalized to
280- // turn it into a valid vulkan SPIR-V shader.
281- SPIRV_OPTIMIZATION_FLAGS OptimizationFlags = SPIRV_OPTIMIZATION_FLAG_LEGALIZATION;
282- std::vector<uint32_t > LegalizedSPIRV = OptimizeSPIRV (SPIRV, SPV_ENV_MAX, OptimizationFlags);
283-
284- return LegalizedSPIRV;
279+ return SPIRV;
285280}
286281
287282std::vector<unsigned int > LoadSPIRVFromGLSL (const std::string& ShaderSource, SHADER_TYPE ShaderType = SHADER_TYPE_PIXEL)
@@ -565,6 +560,15 @@ void RunConvertUBOToPushConstantsTest(SHADER_COMPILER Compiler, SHADER_SOURCE_LA
565560 std::vector<uint32_t > FS_SPIRV_Patched = ConvertUBOToPushConstants (FS_SPIRV, BlockName);
566561 ASSERT_FALSE (FS_SPIRV_Patched.empty ()) << " Failed to patch UBO to push constants with BlockName: " << BlockName;
567562
563+ if (SourceLanguage == SHADER_SOURCE_LANGUAGE_HLSL)
564+ {
565+ // SPIR-V bytecode generated from HLSL must be legalized to
566+ // turn it into a valid vulkan SPIR-V shader.
567+ SPIRV_OPTIMIZATION_FLAGS OptimizationFlags = SPIRV_OPTIMIZATION_FLAG_LEGALIZATION | SPIRV_OPTIMIZATION_FLAG_STRIP_REFLECTION;
568+ VS_SPIRV = OptimizeSPIRV (VS_SPIRV, SPV_ENV_MAX, OptimizationFlags);
569+ FS_SPIRV_Patched = OptimizeSPIRV (FS_SPIRV_Patched, SPV_ENV_MAX, OptimizationFlags);
570+ }
571+
568572 // Step 4: Create renderer with patched shaders
569573 PatchedPushConstantsRenderer Renderer{
570574 pSwapChain,
0 commit comments