diff --git a/Test/420.comp b/Test/420.comp index e8cee3c7..d92e6f0d 100755 --- a/Test/420.comp +++ b/Test/420.comp @@ -19,4 +19,12 @@ void main() gl_MaxComputeImageUniforms + gl_MaxComputeAtomicCounters + gl_MaxComputeAtomicCounterBuffers; + + barrier(); + memoryBarrier(); + memoryBarrierAtomicCounter(); + memoryBarrierBuffer(); + memoryBarrierImage(); + memoryBarrierShared(); + groupMemoryBarrier(); } \ No newline at end of file diff --git a/Test/baseResults/420.comp.out b/Test/baseResults/420.comp.out index 719054df..a2311d5a 100755 --- a/Test/baseResults/420.comp.out +++ b/Test/baseResults/420.comp.out @@ -46,6 +46,13 @@ ERROR: node is still EOpNull! 0:17 'sfoo' (shared 3-component vector of float) 0:17 Constant: 0:17 1057.000000 +0:23 Barrier (global void) +0:24 MemoryBarrier (global void) +0:25 MemoryBarrierAtomicCounter (global void) +0:26 MemoryBarrierBuffer (global void) +0:27 MemoryBarrierImage (global void) +0:28 MemoryBarrierShared (global void) +0:29 GroupMemoryBarrier (global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) @@ -99,6 +106,13 @@ ERROR: node is still EOpNull! 0:17 'sfoo' (shared 3-component vector of float) 0:17 Constant: 0:17 1057.000000 +0:23 Barrier (global void) +0:24 MemoryBarrier (global void) +0:25 MemoryBarrierAtomicCounter (global void) +0:26 MemoryBarrierBuffer (global void) +0:27 MemoryBarrierImage (global void) +0:28 MemoryBarrierShared (global void) +0:29 GroupMemoryBarrier (global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 35d7be13..6a9fb201 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1572,7 +1572,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan) stageBuiltins[EShLangTessControl].append( "void barrier();" ); - if ((profile != EEsProfile && version >= 430) || esBarrier) + if ((profile != EEsProfile && version >= 420) || esBarrier) stageBuiltins[EShLangCompute].append( "void barrier();" ); @@ -1580,7 +1580,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan) commonBuiltins.append( "void memoryBarrier();" ); - if ((profile != EEsProfile && version >= 430) || esBarrier) { + if ((profile != EEsProfile && version >= 420) || esBarrier) { commonBuiltins.append( "void memoryBarrierAtomicCounter();" "void memoryBarrierBuffer();" @@ -3912,6 +3912,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul symbolTable.setVariableExtensions("gl_MaxComputeImageUniforms", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounters", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounterBuffers", 1, &E_GL_ARB_compute_shader); + + symbolTable.setFunctionExtensions("barrier", 1, &E_GL_ARB_compute_shader); + symbolTable.setFunctionExtensions("memoryBarrierAtomicCounter", 1, &E_GL_ARB_compute_shader); + symbolTable.setFunctionExtensions("memoryBarrierBuffer", 1, &E_GL_ARB_compute_shader); + symbolTable.setFunctionExtensions("memoryBarrierImage", 1, &E_GL_ARB_compute_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_ARB_compute_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader); } break;