diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-01-30 16:28:50 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-30 16:28:50 -0500 |
| commit | 5942ff81d9a63ee1e37ba81172ea579646be774e (patch) | |
| tree | 2a4cdb5851348f11a8fcde1605e81c29c1227727 /source/slang/slang-emit-glsl-extension-tracker.cpp | |
| parent | 415409fc10cfd0d6b2eb805df8f37bdabc4f2405 (diff) | |
Support for 64 bit integer types (#1191)
* * For integer literals add postfix, and use unsigned/signed output appropriately
* Extend GLSL extension handling by type, and for adding 64 bit int extensions
* Added tests for int/uint64 types
* Add explicit Int/UInt64 emit functions to avoid ambiguity.
Diffstat (limited to 'source/slang/slang-emit-glsl-extension-tracker.cpp')
| -rw-r--r-- | source/slang/slang-emit-glsl-extension-tracker.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/source/slang/slang-emit-glsl-extension-tracker.cpp b/source/slang/slang-emit-glsl-extension-tracker.cpp index c162f2f46..e1bbb3e46 100644 --- a/source/slang/slang-emit-glsl-extension-tracker.cpp +++ b/source/slang/slang-emit-glsl-extension-tracker.cpp @@ -26,18 +26,35 @@ void GLSLExtensionTracker::requireVersion(ProfileVersion version) } } -void GLSLExtensionTracker::requireHalfExtension() +void GLSLExtensionTracker::requireBaseTypeExtension(BaseType baseType) { - if (!m_hasHalfExtension) + uint32_t bit = 1 << int(baseType); + if (m_hasBaseTypeFlags & bit) { - // https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt - requireExtension("GL_EXT_shader_16bit_storage"); - - // https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_explicit_arithmetic_types.txt - requireExtension("GL_EXT_shader_explicit_arithmetic_types"); + return; + } - m_hasHalfExtension = true; + switch (baseType) + { + case BaseType::Half: + { + // https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt + requireExtension("GL_EXT_shader_16bit_storage"); + + // https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_explicit_arithmetic_types.txt + requireExtension("GL_EXT_shader_explicit_arithmetic_types"); + break; + } + case BaseType::UInt64: + case BaseType::Int64: + { + requireExtension("GL_EXT_shader_explicit_arithmetic_types_int64"); + m_hasBaseTypeFlags |= _getFlag(BaseType::UInt64) | _getFlag(BaseType::Int64); + break; + } } + + m_hasBaseTypeFlags |= bit; } |
