Skip to content

Commit

Permalink
Emit SPV_EXT_opacity_micromap if GL extension is present
Browse files Browse the repository at this point in the history
If the `GL_EXT_opacity_micromap` extension was requested in the input,
emit the corresponding `SPV_EXT_opacity_micromap` extension and
RayTracingOpacityMicromapEXT Capability in the SPIR-V output.

Signed-off-by: Sven van Haastregt <[email protected]>
  • Loading branch information
svenvh authored and jeremy-lunarg committed Feb 11, 2025
1 parent 1448fad commit 360aacd
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
6 changes: 5 additions & 1 deletion SPIRV/GlslangToSpv.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// Copyright (C) 2014-2016 LunarG, Inc.
// Copyright (C) 2015-2020 Google, Inc.
// Copyright (C) 2017, 2022-2024 Arm Limited.
// Copyright (C) 2017, 2022-2025 Arm Limited.
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
Expand Down Expand Up @@ -1913,6 +1913,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
case EShLangCallable:
{
auto& extensions = glslangIntermediate->getRequestedExtensions();
if (extensions.find("GL_EXT_opacity_micromap") != extensions.end()) {
builder.addCapability(spv::CapabilityRayTracingOpacityMicromapEXT);
builder.addExtension("SPV_EXT_opacity_micromap");
}
if (extensions.find("GL_NV_ray_tracing") == extensions.end()) {
builder.addCapability(spv::CapabilityRayTracingKHR);
builder.addExtension("SPV_KHR_ray_tracing");
Expand Down
3 changes: 2 additions & 1 deletion SPIRV/doc.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// Copyright (C) 2014-2015 LunarG, Inc.
// Copyright (C) 2022-2024 Arm Limited.
// Copyright (C) 2022-2025 Arm Limited.
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
Expand Down Expand Up @@ -1009,6 +1009,7 @@ const char* CapabilityString(int info)
case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR";
case CapabilityRayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR";
case CapabilityDisplacementMicromapNV: return "DisplacementMicromapNV";
case CapabilityRayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT";
case CapabilityRayTracingDisplacementMicromapNV: return "CapabilityRayTracingDisplacementMicromapNV";
case CapabilityRayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR";
case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV";
Expand Down
2 changes: 2 additions & 0 deletions Test/baseResults/spv.ext.RayGenShader.rgen.out
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ spv.ext.RayGenShader.rgen

Capability RayTraversalPrimitiveCullingKHR
Capability RayTracingKHR
Capability RayTracingOpacityMicromapEXT
Extension "SPV_EXT_opacity_micromap"
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
Expand Down

0 comments on commit 360aacd

Please sign in to comment.