Skip to content

Commit a5ab403

Browse files
committed
Done legalized SPIR-V bytecode
1 parent fc81679 commit a5ab403

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

Tests/DiligentCoreAPITest/CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,21 @@ if(EXISTS "${DILIGENT_NVAPI_PATH}/nvapi.h")
151151
target_compile_definitions(DiligentCoreAPITest PUBLIC DILIGENT_ENABLE_D3D_NVAPI)
152152
endif()
153153

154+
# Add SPIRV-Tools include directories if needed for SPIRVTools.hpp
155+
# Test files that include SPIRVTools.hpp need access to spirv-tools headers
156+
# SPIRVTools.hpp includes "spirv-tools/libspirv.h", so we need the include directory
157+
if (TARGET SPIRV-Tools-opt)
158+
get_target_property(SPIRV_TOOLS_SOURCE_DIR SPIRV-Tools-opt SOURCE_DIR)
159+
get_target_property(SPIRV_TOOLS_BINARY_DIR SPIRV-Tools-opt BINARY_DIR)
160+
get_filename_component(SPIRV_TOOLS_ROOT_DIR "${SPIRV_TOOLS_SOURCE_DIR}/../.." ABSOLUTE)
161+
get_filename_component(SPIRV_TOOLS_ROOT_BINARY_DIR "${SPIRV_TOOLS_BINARY_DIR}/../.." ABSOLUTE)
162+
# Add include subdirectory for public headers like spirv-tools/libspirv.h
163+
target_include_directories(DiligentCoreAPITest PRIVATE
164+
${SPIRV_TOOLS_ROOT_DIR}/include
165+
${SPIRV_TOOLS_ROOT_DIR}
166+
${SPIRV_TOOLS_ROOT_BINARY_DIR}
167+
)
168+
endif()
154169

155170
set_target_properties(DiligentCoreAPITest
156171
PROPERTIES

Tests/DiligentCoreAPITest/src/Vulkan/VkConvertUBOToPushConstantsTest.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

287282
std::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

Comments
 (0)