diff options
| author | Yong He <yonghe@outlook.com> | 2023-07-26 12:23:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-26 12:23:32 -0700 |
| commit | 727245a67443447aeec6f7281e8e65834974fbd1 (patch) | |
| tree | 787e866f52c1b8424a014cd560b0844f0fe6d8a0 /source | |
| parent | 7b48b24baac066c3c54aaad3f36fb5979fc18ed1 (diff) | |
Fix -fvk-u-shift not applying to RWStructuredBuffer on glsl output. (#3027)
* Fix -fvk-u-shift not applying to RWStructuredBuffer on glsl output.
* Add `transpose` to `ObjectToWorld4x3`.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 8 | ||||
| -rw-r--r-- | source/slang/slang-emit-glsl.cpp | 5 |
2 files changed, 7 insertions, 6 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 58ddb1401..70b1f2151 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -5457,12 +5457,12 @@ __target_intrinsic(GL_NV_ray_tracing, "transpose(gl_WorldToObjectNV)") __target_intrinsic(GL_EXT_ray_tracing, "transpose(gl_WorldToObjectEXT)") float3x4 WorldToObject3x4(); -__target_intrinsic(GL_NV_ray_tracing, "(gl_ObjectToWorldNV)") -__target_intrinsic(GL_EXT_ray_tracing, "(gl_ObjectToWorld3x4EXT)") +__target_intrinsic(GL_NV_ray_tracing, "transpose(gl_ObjectToWorldNV)") +__target_intrinsic(GL_EXT_ray_tracing, "transpose(gl_ObjectToWorld3x4EXT)") float4x3 ObjectToWorld4x3(); -__target_intrinsic(GL_NV_ray_tracing, "(gl_WorldToObjectNV)") -__target_intrinsic(GL_EXT_ray_tracing, "(gl_WorldToObject3x4EXT)") +__target_intrinsic(GL_NV_ray_tracing, "transpose(gl_WorldToObjectNV)") +__target_intrinsic(GL_EXT_ray_tracing, "transpose(gl_WorldToObject3x4EXT)") float4x3 WorldToObject4x3(); // NOTE! diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index c377b40c6..37c38dd95 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -155,13 +155,14 @@ void GLSLSourceEmitter::_emitGLSLStructuredBuffer(IRGlobalParam* varDecl, IRHLSL m_writer->emit("layout("); m_writer->emit(getTargetReq()->getForceGLSLScalarBufferLayout() ? "scalar" : "std430"); - + bool isReadOnly = (as<IRHLSLStructuredBufferType>(structuredBufferType) != nullptr); auto layout = getVarLayout(varDecl); if (layout) { // We can use ShaderResource/DescriptorSlot interchangably here. // This is possible because vk-shift-* - const LayoutResourceKindFlags kinds = LayoutResourceKindFlag::ShaderResource | LayoutResourceKindFlag::DescriptorTableSlot; + const LayoutResourceKindFlags kinds = (isReadOnly ? LayoutResourceKindFlag::ShaderResource : LayoutResourceKindFlag::UnorderedAccess) + | LayoutResourceKindFlag::DescriptorTableSlot; EmitVarChain chain(layout); |
