diff options
| author | Yong He <yonghe@outlook.com> | 2024-01-18 16:46:00 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-18 16:46:00 -0800 |
| commit | c5c1a25ab6d0e509e893d737a679ac47949df2f6 (patch) | |
| tree | e60d4f96ae5105ef19c6b238a4d98467ff58975d /source/slang/slang-emit-glsl.cpp | |
| parent | 1a13842f7ece9f3c492a7017509b75eafa903bbf (diff) | |
Capability def parsing & codegen + disjoint sets (#3451)
* Capability def parsing & codegen + disjoint sets
This change adds a capability definition file, and a code generator
to produce C++ code that defines the capability enums and necessary
data structures around the capabilities.
Extends the existing CapabilitySet class to support expressing
disjoint sets of capabilities. This sets up for the next change
that will enhance our type checking with reasoning of capability
requirements.
* Fix cmake.
* Fix warning.
* Fix.
* Fix isBetterForTarget to prefer less specialized option.
* Fix.
* Fix premake.
* Fix intrinsic.
* Fix vs sln file.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-emit-glsl.cpp')
| -rw-r--r-- | source/slang/slang-emit-glsl.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index 0fc54ca1f..bff82acf3 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -70,7 +70,7 @@ void GLSLSourceEmitter::_requireRayTracing() // the user has explicitly opted in to the `GL_NV_ray_tracing` extension // we will use that one instead. // - if( getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing) ) { m_glslExtensionTracker->requireExtension(UnownedStringSlice::fromLiteral("GL_NV_ray_tracing")); } @@ -92,7 +92,7 @@ void GLSLSourceEmitter::_requireFragmentShaderBarycentric() // the user has explicitly opted in to the `GL_NV_fragment_shader_barycentric` extension // we will use that one instead. - if( getTargetCaps().implies(CapabilityAtom::GL_NV_fragment_shader_barycentric) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_fragment_shader_barycentric) ) { m_glslExtensionTracker->requireExtension(UnownedStringSlice::fromLiteral("GL_NV_fragment_shader_barycentric")); } @@ -657,7 +657,7 @@ bool GLSLSourceEmitter::_emitGLSLLayoutQualifierWithBindingKinds(LayoutResourceK m_writer->emit("layout(push_constant)\n"); break; case LayoutResourceKind::ShaderRecord: - if (getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing)) + if (getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing)) { m_writer->emit("layout(shaderRecordNV)\n"); } @@ -1398,7 +1398,7 @@ void GLSLSourceEmitter::emitLayoutQualifiersImpl(IRVarLayout* layout) case LayoutResourceKind::RayPayload: { - if( getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing) ) { m_writer->emit("rayPayloadInNV "); } @@ -1411,7 +1411,7 @@ void GLSLSourceEmitter::emitLayoutQualifiersImpl(IRVarLayout* layout) case LayoutResourceKind::CallablePayload: { - if( getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing) ) { m_writer->emit("callableDataInNV "); } @@ -1424,7 +1424,7 @@ void GLSLSourceEmitter::emitLayoutQualifiersImpl(IRVarLayout* layout) case LayoutResourceKind::HitAttributes: { - if( getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing) ) { m_writer->emit("hitAttributeNV "); } @@ -2421,7 +2421,7 @@ void GLSLSourceEmitter::emitSimpleTypeImpl(IRType* type) // `GL_NV_ray_tracing` using target capabilities, and will always default // to `GL_EXT_ray_tracing` otherwise. // - if( getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing) ) + if( getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing) ) { // If the user has explicitly opted in to `GL_NV_ray_tracing`, // then we don't need to explicitly request the extentsion again. @@ -2509,7 +2509,7 @@ bool GLSLSourceEmitter::_maybeEmitInterpolationModifierText(IRInterpolationMode if( stage == Stage::Fragment && isInput) { _requireFragmentShaderBarycentric(); - if (getTargetCaps().implies(CapabilityAtom::GL_NV_fragment_shader_barycentric)) + if (getTargetCaps().implies(CapabilityAtom::_GL_NV_fragment_shader_barycentric)) { m_writer->emit("pervertexNV "); } @@ -2657,7 +2657,7 @@ void GLSLSourceEmitter::emitVarDecorationsImpl(IRInst* varDecl) // Special case hitObjectAttribute as is only NV currently if (decoration->getOp() == kIROp_VulkanHitObjectAttributesDecoration || - getTargetCaps().implies(CapabilityAtom::GL_NV_ray_tracing)) + getTargetCaps().implies(CapabilityAtom::_GL_NV_ray_tracing)) { m_writer->emit(toSlice("NV")); } |
