summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-03-15 09:27:48 -0700
committerGitHub <noreply@github.com>2021-03-15 09:27:48 -0700
commitd8150e70612b58fb1cfefa262d3d862a6e6e79ba (patch)
tree3a365fe5fea4a418e6b803968e4640b8739db41d /source
parentfd304c6c02c73a0024f6d982b1936451e4812370 (diff)
Fix handling of RT accelerations structures for non-RT stages (#1753)
* Fix handling of RT accelerations structures for non-RT stages The recent change that added support for the `GL_EXT_ray_query` extension made is so that a shader that declares a `RaytracingAccelerationStructure` as an input to a non-RT shader stage but then never *uses* it wouldn't enable any RT extension, resulting in a compilation failure in glslang. This change reverts that behavior so that such shaders enable `GL_EXT_ray_tracing`, since that is the older of the two RT extensions that introduce `accelerationStructureEXT`. It is possible that we will need to revisit this decision based on which of the two extensions ends up being more broadly supported, but I think that right now it is fair to say that there exist drivers that support `GL_EXT_ray_tracing` but not `GL_EXT_ray_query`, so the former is the better default. * fixup: failing test
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit-glsl.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp
index fb4417119..86339e94b 100644
--- a/source/slang/slang-emit-glsl.cpp
+++ b/source/slang/slang-emit-glsl.cpp
@@ -1831,17 +1831,13 @@ void GLSLSourceEmitter::emitSimpleTypeImpl(IRType* type)
// could provide the `accelerationSturctureEXT` type, but there
// can be drivers that provide only one and not the other.
//
- // Because we can't pick one upon just seeing the type, we need to
- // emit the type here but *not* call `_requireRayTracing()` or
- // anything like it, because we don't yet know the specific extension
- // we should ask for.
+ // For now we will just kludge this by assuming that any driver
+ // that supports one of these extensions supports the other.
//
- // TODO: We might eventually want to have this step set a flag that
- // will cause a compilation error if nothing else in the code requires
- // a specific concrete ray-tracing extension. Ideally all of these
- // details could be subusmed under the capability system sooner or
- // later.
- //
+ // TODO: Revisit that decision once the driver landscape is more stable/clear.
+ //
+ _requireRayTracing();
+
m_writer->emit("accelerationStructureEXT");
}
break;