diff options
| author | Yong He <yonghe@outlook.com> | 2022-02-17 01:15:05 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-17 01:15:05 -0800 |
| commit | e031e0e5fb05d024d56dc70c3dd4ef7111d98ba4 (patch) | |
| tree | 2a01bedb6db98d44fbcf402888595668d3bbb2fc /source/slang/slang-emit-glsl.cpp | |
| parent | d4145519dd86f6d18b07393d989141bda4d4ceb3 (diff) | |
Add target option to force `scalar` layout for storage buffers. (#2135)
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 | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index d5175a423..441fc94d7 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -40,6 +40,11 @@ SlangResult GLSLSourceEmitter::init() default: break; } + if (m_targetRequest->getForceGLSLScalarBufferLayout()) + { + m_glslExtensionTracker->requireExtension( + UnownedStringSlice::fromLiteral("GL_EXT_scalar_block_layout")); + } return SLANG_OK; } @@ -115,7 +120,8 @@ void GLSLSourceEmitter::_emitGLSLStructuredBuffer(IRGlobalParam* varDecl, IRHLSL // TODO: we should require either the extension or the version... _requireGLSLVersion(430); - m_writer->emit("layout(std430"); + m_writer->emit("layout("); + m_writer->emit(m_targetRequest->getForceGLSLScalarBufferLayout() ? "scalar" : "std430"); auto layout = getVarLayout(varDecl); if (layout) @@ -189,7 +195,8 @@ void GLSLSourceEmitter::_emitGLSLByteAddressBuffer(IRGlobalParam* varDecl, IRByt // TODO: we should require either the extension or the version... _requireGLSLVersion(430); - m_writer->emit("layout(std430"); + m_writer->emit("layout("); + m_writer->emit(m_targetRequest->getForceGLSLScalarBufferLayout() ? "scalar" : "std430"); auto layout = getVarLayout(varDecl); if (layout) |
