Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
0d0c6d38
Commit
0d0c6d38
authored
Jul 23, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GLSL 4.6: Implement atomic counter ops and SPV_KHR_shader_atomic_counter_ops.
parent
de16e52b
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
202 additions
and
8 deletions
+202
-8
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+34
-0
doc.cpp
SPIRV/doc.cpp
+2
-0
450.vert
Test/450.vert
+12
-0
450.vert.out
Test/baseResults/450.vert.out
+37
-5
spv.460.frag.out
Test/baseResults/spv.460.frag.out
+51
-0
spv.460.frag
Test/spv.460.frag
+17
-0
intermediate.h
glslang/Include/intermediate.h
+9
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+29
-3
intermOut.cpp
glslang/MachineIndependent/intermOut.cpp
+10
-0
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+1
-0
No files found.
SPIRV/GlslangToSpv.cpp
View file @
0d0c6d38
...
@@ -1745,6 +1745,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
...
@@ -1745,6 +1745,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
atomic
=
true
;
atomic
=
true
;
break
;
break
;
case
glslang
:
:
EOpAtomicCounterAdd
:
case
glslang
:
:
EOpAtomicCounterSubtract
:
case
glslang
:
:
EOpAtomicCounterMin
:
case
glslang
:
:
EOpAtomicCounterMax
:
case
glslang
:
:
EOpAtomicCounterAnd
:
case
glslang
:
:
EOpAtomicCounterOr
:
case
glslang
:
:
EOpAtomicCounterXor
:
case
glslang
:
:
EOpAtomicCounterExchange
:
case
glslang
:
:
EOpAtomicCounterCompSwap
:
builder
.
addExtension
(
"SPV_KHR_shader_atomic_counter_ops"
);
builder
.
addCapability
(
spv
::
CapabilityAtomicStorageOps
);
atomic
=
true
;
break
;
default
:
default
:
break
;
break
;
}
}
...
@@ -1815,6 +1829,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
...
@@ -1815,6 +1829,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case
glslang
:
:
EOpAtomicXor
:
case
glslang
:
:
EOpAtomicXor
:
case
glslang
:
:
EOpAtomicExchange
:
case
glslang
:
:
EOpAtomicExchange
:
case
glslang
:
:
EOpAtomicCompSwap
:
case
glslang
:
:
EOpAtomicCompSwap
:
case
glslang
:
:
EOpAtomicCounterAdd
:
case
glslang
:
:
EOpAtomicCounterSubtract
:
case
glslang
:
:
EOpAtomicCounterMin
:
case
glslang
:
:
EOpAtomicCounterMax
:
case
glslang
:
:
EOpAtomicCounterAnd
:
case
glslang
:
:
EOpAtomicCounterOr
:
case
glslang
:
:
EOpAtomicCounterXor
:
case
glslang
:
:
EOpAtomicCounterExchange
:
case
glslang
:
:
EOpAtomicCounterCompSwap
:
if
(
arg
==
0
)
if
(
arg
==
0
)
lvalue
=
true
;
lvalue
=
true
;
break
;
break
;
...
@@ -4619,34 +4642,45 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
...
@@ -4619,34 +4642,45 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
switch
(
op
)
{
switch
(
op
)
{
case
glslang
:
:
EOpAtomicAdd
:
case
glslang
:
:
EOpAtomicAdd
:
case
glslang
:
:
EOpImageAtomicAdd
:
case
glslang
:
:
EOpImageAtomicAdd
:
case
glslang
:
:
EOpAtomicCounterAdd
:
opCode
=
spv
::
OpAtomicIAdd
;
opCode
=
spv
::
OpAtomicIAdd
;
break
;
break
;
case
glslang
:
:
EOpAtomicCounterSubtract
:
opCode
=
spv
::
OpAtomicISub
;
break
;
case
glslang
:
:
EOpAtomicMin
:
case
glslang
:
:
EOpAtomicMin
:
case
glslang
:
:
EOpImageAtomicMin
:
case
glslang
:
:
EOpImageAtomicMin
:
case
glslang
:
:
EOpAtomicCounterMin
:
opCode
=
typeProxy
==
glslang
::
EbtUint
?
spv
::
OpAtomicUMin
:
spv
::
OpAtomicSMin
;
opCode
=
typeProxy
==
glslang
::
EbtUint
?
spv
::
OpAtomicUMin
:
spv
::
OpAtomicSMin
;
break
;
break
;
case
glslang
:
:
EOpAtomicMax
:
case
glslang
:
:
EOpAtomicMax
:
case
glslang
:
:
EOpImageAtomicMax
:
case
glslang
:
:
EOpImageAtomicMax
:
case
glslang
:
:
EOpAtomicCounterMax
:
opCode
=
typeProxy
==
glslang
::
EbtUint
?
spv
::
OpAtomicUMax
:
spv
::
OpAtomicSMax
;
opCode
=
typeProxy
==
glslang
::
EbtUint
?
spv
::
OpAtomicUMax
:
spv
::
OpAtomicSMax
;
break
;
break
;
case
glslang
:
:
EOpAtomicAnd
:
case
glslang
:
:
EOpAtomicAnd
:
case
glslang
:
:
EOpImageAtomicAnd
:
case
glslang
:
:
EOpImageAtomicAnd
:
case
glslang
:
:
EOpAtomicCounterAnd
:
opCode
=
spv
::
OpAtomicAnd
;
opCode
=
spv
::
OpAtomicAnd
;
break
;
break
;
case
glslang
:
:
EOpAtomicOr
:
case
glslang
:
:
EOpAtomicOr
:
case
glslang
:
:
EOpImageAtomicOr
:
case
glslang
:
:
EOpImageAtomicOr
:
case
glslang
:
:
EOpAtomicCounterOr
:
opCode
=
spv
::
OpAtomicOr
;
opCode
=
spv
::
OpAtomicOr
;
break
;
break
;
case
glslang
:
:
EOpAtomicXor
:
case
glslang
:
:
EOpAtomicXor
:
case
glslang
:
:
EOpImageAtomicXor
:
case
glslang
:
:
EOpImageAtomicXor
:
case
glslang
:
:
EOpAtomicCounterXor
:
opCode
=
spv
::
OpAtomicXor
;
opCode
=
spv
::
OpAtomicXor
;
break
;
break
;
case
glslang
:
:
EOpAtomicExchange
:
case
glslang
:
:
EOpAtomicExchange
:
case
glslang
:
:
EOpImageAtomicExchange
:
case
glslang
:
:
EOpImageAtomicExchange
:
case
glslang
:
:
EOpAtomicCounterExchange
:
opCode
=
spv
::
OpAtomicExchange
;
opCode
=
spv
::
OpAtomicExchange
;
break
;
break
;
case
glslang
:
:
EOpAtomicCompSwap
:
case
glslang
:
:
EOpAtomicCompSwap
:
case
glslang
:
:
EOpImageAtomicCompSwap
:
case
glslang
:
:
EOpImageAtomicCompSwap
:
case
glslang
:
:
EOpAtomicCounterCompSwap
:
opCode
=
spv
::
OpAtomicCompareExchange
;
opCode
=
spv
::
OpAtomicCompareExchange
;
break
;
break
;
case
glslang
:
:
EOpAtomicCounterIncrement
:
case
glslang
:
:
EOpAtomicCounterIncrement
:
...
...
SPIRV/doc.cpp
View file @
0d0c6d38
...
@@ -846,6 +846,8 @@ const char* CapabilityString(int info)
...
@@ -846,6 +846,8 @@ const char* CapabilityString(int info)
case
5009
:
return
"ImageGatherBiasLodAMD"
;
case
5009
:
return
"ImageGatherBiasLodAMD"
;
#endif
#endif
case
4445
:
return
"AtomicStorageOps"
;
case
4447
:
return
"SampleMaskPostDepthCoverage"
;
case
4447
:
return
"SampleMaskPostDepthCoverage"
;
#ifdef NV_EXTENSIONS
#ifdef NV_EXTENSIONS
case
5251
:
return
"GeometryShaderPassthroughNV"
;
case
5251
:
return
"GeometryShaderPassthroughNV"
;
...
...
Test/450.vert
View file @
0d0c6d38
...
@@ -22,8 +22,20 @@ out SA outSA;
...
@@ -22,8 +22,20 @@ out SA outSA;
struct
SS
{
float
f
;
S
s
;
};
struct
SS
{
float
f
;
S
s
;
};
out
SS
outSS
;
out
SS
outSS
;
layout
(
binding
=
0
)
uniform
atomic_uint
aui
;
uint
ui
;
void
foo
()
void
foo
()
{
{
SS
::
f
;
SS
::
f
;
atomicCounterAdd
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterSubtract
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterMin
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterMax
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterAnd
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterOr
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterXor
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterExchange
(
aui
,
ui
);
// ERROR, need 4.6
atomicCounterCompSwap
(
aui
,
ui
,
ui
);
// ERROR, need 4.6
}
}
;
// ERROR: no extraneous semicolons
;
// ERROR: no extraneous semicolons
Test/baseResults/450.vert.out
View file @
0d0c6d38
450.vert
450.vert
ERROR: 0:12: 'out' : cannot be bool
ERROR: 0:12: 'out' : cannot be bool
ERROR: 0:13: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo
ERROR: 0:13: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo
ERROR: 0:27: '::' : not supported
ERROR: 0:30: '::' : not supported
ERROR: 0:29: 'extraneous semicolon' : not supported for this version or the enabled extensions
ERROR: 0:31: 'atomicCounterAdd' : no matching overloaded function found
ERROR: 4 compilation errors. No code generated.
ERROR: 0:32: 'atomicCounterSubtract' : no matching overloaded function found
ERROR: 0:33: 'atomicCounterMin' : no matching overloaded function found
ERROR: 0:34: 'atomicCounterMax' : no matching overloaded function found
ERROR: 0:35: 'atomicCounterAnd' : no matching overloaded function found
ERROR: 0:36: 'atomicCounterOr' : no matching overloaded function found
ERROR: 0:37: 'atomicCounterXor' : no matching overloaded function found
ERROR: 0:38: 'atomicCounterExchange' : no matching overloaded function found
ERROR: 0:39: 'atomicCounterCompSwap' : no matching overloaded function found
ERROR: 0:41: 'extraneous semicolon' : not supported for this version or the enabled extensions
ERROR: 13 compilation errors. No code generated.
Shader version: 450
Shader version: 450
...
@@ -21,8 +30,27 @@ ERROR: node is still EOpNull!
...
@@ -21,8 +30,27 @@ ERROR: node is still EOpNull!
0:9 2 (const int)
0:9 2 (const int)
0:9 Constant:
0:9 Constant:
0:9 4.500000
0:9 4.500000
0:25 Function Definition: foo( ( global void)
0:28 Function Definition: foo( ( global void)
0:25 Function Parameters:
0:28 Function Parameters:
0:? Sequence
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:33 Constant:
0:33 0.000000
0:34 Constant:
0:34 0.000000
0:35 Constant:
0:35 0.000000
0:36 Constant:
0:36 0.000000
0:37 Constant:
0:37 0.000000
0:38 Constant:
0:38 0.000000
0:39 Constant:
0:39 0.000000
0:? Linker Objects
0:? Linker Objects
0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
0:? 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
0:? 'outb' ( smooth out bool)
0:? 'outb' ( smooth out bool)
...
@@ -34,6 +62,8 @@ ERROR: node is still EOpNull!
...
@@ -34,6 +62,8 @@ ERROR: node is still EOpNull!
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint)
0:? 'ui' ( global uint)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
...
@@ -67,6 +97,8 @@ ERROR: node is still EOpNull!
...
@@ -67,6 +97,8 @@ ERROR: node is still EOpNull!
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outsa' ( smooth out 4-element array of structure{ global float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSA' ( smooth out structure{ global 4-element array of float f})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
0:? 'outSS' ( smooth out structure{ global float f, global structure{ global float f} s})
0:? 'aui' (layout( binding=0 offset=0) uniform atomic_uint)
0:? 'ui' ( global uint)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Test/baseResults/spv.460.frag.out
0 → 100755
View file @
0d0c6d38
spv.460.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 32
Capability Shader
Capability AtomicStorage
Capability AtomicStorageOps
Extension "SPV_KHR_shader_atomic_counter_ops"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Source GLSL 460
Name 4 "main"
Name 8 "aui"
Name 10 "ui"
Decorate 8(aui) Offset 0
Decorate 8(aui) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer AtomicCounter 6(int)
8(aui): 7(ptr) Variable AtomicCounter
9: TypePointer Private 6(int)
10(ui): 9(ptr) Variable Private
12: 6(int) Constant 1
13: 6(int) Constant 0
4(main): 2 Function None 3
5: Label
11: 6(int) Load 10(ui)
14: 6(int) AtomicIAdd 8(aui) 12 13 11
15: 6(int) Load 10(ui)
16: 6(int) AtomicISub 8(aui) 12 13 15
17: 6(int) Load 10(ui)
18: 6(int) AtomicUMin 8(aui) 12 13 17
19: 6(int) Load 10(ui)
20: 6(int) AtomicUMax 8(aui) 12 13 19
21: 6(int) Load 10(ui)
22: 6(int) AtomicAnd 8(aui) 12 13 21
23: 6(int) Load 10(ui)
24: 6(int) AtomicOr 8(aui) 12 13 23
25: 6(int) Load 10(ui)
26: 6(int) AtomicXor 8(aui) 12 13 25
27: 6(int) Load 10(ui)
28: 6(int) AtomicExchange 8(aui) 12 13 27
29: 6(int) Load 10(ui)
30: 6(int) Load 10(ui)
31: 6(int) AtomicCompareExchange 8(aui) 12 13 13 30 29
Return
FunctionEnd
Test/spv.460.frag
0 → 100644
View file @
0d0c6d38
#version 460 core
layout
(
binding
=
0
)
uniform
atomic_uint
aui
;
uint
ui
;
void
main
()
{
atomicCounterAdd
(
aui
,
ui
);
atomicCounterSubtract
(
aui
,
ui
);
atomicCounterMin
(
aui
,
ui
);
atomicCounterMax
(
aui
,
ui
);
atomicCounterAnd
(
aui
,
ui
);
atomicCounterOr
(
aui
,
ui
);
atomicCounterXor
(
aui
,
ui
);
atomicCounterExchange
(
aui
,
ui
);
atomicCounterCompSwap
(
aui
,
ui
,
ui
);
}
glslang/Include/intermediate.h
View file @
0d0c6d38
...
@@ -420,6 +420,15 @@ enum TOperator {
...
@@ -420,6 +420,15 @@ enum TOperator {
EOpAtomicCounterIncrement
,
EOpAtomicCounterIncrement
,
EOpAtomicCounterDecrement
,
EOpAtomicCounterDecrement
,
EOpAtomicCounter
,
EOpAtomicCounter
,
EOpAtomicCounterAdd
,
EOpAtomicCounterSubtract
,
EOpAtomicCounterMin
,
EOpAtomicCounterMax
,
EOpAtomicCounterAnd
,
EOpAtomicCounterOr
,
EOpAtomicCounterXor
,
EOpAtomicCounterExchange
,
EOpAtomicCounterCompSwap
,
EOpAny
,
EOpAny
,
EOpAll
,
EOpAll
,
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
0d0c6d38
...
@@ -1375,9 +1375,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1375,9 +1375,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
if
((
profile
!=
EEsProfile
&&
version
>=
300
)
||
if
((
profile
!=
EEsProfile
&&
version
>=
300
)
||
(
profile
==
EEsProfile
&&
version
>=
310
))
{
(
profile
==
EEsProfile
&&
version
>=
310
))
{
commonBuiltins
.
append
(
commonBuiltins
.
append
(
"uint atomicCounterIncrement(atomic_uint x);"
"uint atomicCounterIncrement(atomic_uint);"
"uint atomicCounterDecrement(atomic_uint x);"
"uint atomicCounterDecrement(atomic_uint);"
"uint atomicCounter(atomic_uint x);"
"uint atomicCounter(atomic_uint);"
"
\n
"
);
}
if
(
profile
!=
EEsProfile
&&
version
>=
460
)
{
commonBuiltins
.
append
(
"uint atomicCounterAdd(atomic_uint, uint);"
"uint atomicCounterSubtract(atomic_uint, uint);"
"uint atomicCounterMin(atomic_uint, uint);"
"uint atomicCounterMax(atomic_uint, uint);"
"uint atomicCounterAnd(atomic_uint, uint);"
"uint atomicCounterOr(atomic_uint, uint);"
"uint atomicCounterXor(atomic_uint, uint);"
"uint atomicCounterExchange(atomic_uint, uint);"
"uint atomicCounterCompSwap(atomic_uint, uint, uint);"
"
\n
"
);
"
\n
"
);
}
}
...
@@ -5909,6 +5923,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
...
@@ -5909,6 +5923,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable
.
relateToOperator
(
"atomicCounterDecrement"
,
EOpAtomicCounterDecrement
);
symbolTable
.
relateToOperator
(
"atomicCounterDecrement"
,
EOpAtomicCounterDecrement
);
symbolTable
.
relateToOperator
(
"atomicCounter"
,
EOpAtomicCounter
);
symbolTable
.
relateToOperator
(
"atomicCounter"
,
EOpAtomicCounter
);
if
(
profile
!=
EEsProfile
&&
version
>=
460
)
{
symbolTable
.
relateToOperator
(
"atomicCounterAdd"
,
EOpAtomicCounterAdd
);
symbolTable
.
relateToOperator
(
"atomicCounterSubtract"
,
EOpAtomicCounterSubtract
);
symbolTable
.
relateToOperator
(
"atomicCounterMin"
,
EOpAtomicCounterMin
);
symbolTable
.
relateToOperator
(
"atomicCounterMax"
,
EOpAtomicCounterMax
);
symbolTable
.
relateToOperator
(
"atomicCounterAnd"
,
EOpAtomicCounterAnd
);
symbolTable
.
relateToOperator
(
"atomicCounterOr"
,
EOpAtomicCounterOr
);
symbolTable
.
relateToOperator
(
"atomicCounterXor"
,
EOpAtomicCounterXor
);
symbolTable
.
relateToOperator
(
"atomicCounterExchange"
,
EOpAtomicCounterExchange
);
symbolTable
.
relateToOperator
(
"atomicCounterCompSwap"
,
EOpAtomicCounterCompSwap
);
}
symbolTable
.
relateToOperator
(
"fma"
,
EOpFma
);
symbolTable
.
relateToOperator
(
"fma"
,
EOpFma
);
symbolTable
.
relateToOperator
(
"frexp"
,
EOpFrexp
);
symbolTable
.
relateToOperator
(
"frexp"
,
EOpFrexp
);
symbolTable
.
relateToOperator
(
"ldexp"
,
EOpLdexp
);
symbolTable
.
relateToOperator
(
"ldexp"
,
EOpLdexp
);
...
...
glslang/MachineIndependent/intermOut.cpp
View file @
0d0c6d38
...
@@ -682,6 +682,16 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
...
@@ -682,6 +682,16 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case
EOpAtomicExchange
:
out
.
debug
<<
"AtomicExchange"
;
break
;
case
EOpAtomicExchange
:
out
.
debug
<<
"AtomicExchange"
;
break
;
case
EOpAtomicCompSwap
:
out
.
debug
<<
"AtomicCompSwap"
;
break
;
case
EOpAtomicCompSwap
:
out
.
debug
<<
"AtomicCompSwap"
;
break
;
case
EOpAtomicCounterAdd
:
out
.
debug
<<
"AtomicCounterAdd"
;
break
;
case
EOpAtomicCounterSubtract
:
out
.
debug
<<
"AtomicCounterSubtract"
;
break
;
case
EOpAtomicCounterMin
:
out
.
debug
<<
"AtomicCounterMin"
;
break
;
case
EOpAtomicCounterMax
:
out
.
debug
<<
"AtomicCounterMax"
;
break
;
case
EOpAtomicCounterAnd
:
out
.
debug
<<
"AtomicCounterAnd"
;
break
;
case
EOpAtomicCounterOr
:
out
.
debug
<<
"AtomicCounterOr"
;
break
;
case
EOpAtomicCounterXor
:
out
.
debug
<<
"AtomicCounterXor"
;
break
;
case
EOpAtomicCounterExchange
:
out
.
debug
<<
"AtomicCounterExchange"
;
break
;
case
EOpAtomicCounterCompSwap
:
out
.
debug
<<
"AtomicCounterCompSwap"
;
break
;
case
EOpImageQuerySize
:
out
.
debug
<<
"imageQuerySize"
;
break
;
case
EOpImageQuerySize
:
out
.
debug
<<
"imageQuerySize"
;
break
;
case
EOpImageQuerySamples
:
out
.
debug
<<
"imageQuerySamples"
;
break
;
case
EOpImageQuerySamples
:
out
.
debug
<<
"imageQuerySamples"
;
break
;
case
EOpImageLoad
:
out
.
debug
<<
"imageLoad"
;
break
;
case
EOpImageLoad
:
out
.
debug
<<
"imageLoad"
;
break
;
...
...
gtests/Spv.FromFile.cpp
View file @
0d0c6d38
...
@@ -360,6 +360,7 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -360,6 +360,7 @@ INSTANTIATE_TEST_CASE_P(
INSTANTIATE_TEST_CASE_P
(
INSTANTIATE_TEST_CASE_P
(
Glsl
,
CompileOpenGLToSpirvTest
,
Glsl
,
CompileOpenGLToSpirvTest
,
::
testing
::
ValuesIn
(
std
::
vector
<
std
::
string
>
({
::
testing
::
ValuesIn
(
std
::
vector
<
std
::
string
>
({
"spv.460.frag"
,
"spv.atomic.comp"
,
"spv.atomic.comp"
,
"spv.glFragColor.frag"
,
"spv.glFragColor.frag"
,
"spv.specConst.vert"
,
"spv.specConst.vert"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment