mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
Fix nondeterminism discussed in 258b700f59
This commit is contained in:
parent
ac51602455
commit
e8d21388ed
@ -320,7 +320,7 @@ ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
|
||||
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform implicitly-sized array of highp 4-component vector of float v})
|
||||
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
|
||||
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
|
||||
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
|
||||
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
|
||||
0:? 'gu' ( global implicitly-sized array of 7-element array of highp float)
|
||||
@ -361,7 +361,7 @@ ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'name' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer implicitly-sized array of highp float u, layout( column_major shared) buffer implicitly-sized array of highp 4-component vector of float v})
|
||||
0:? 'uname' (layout( column_major shared) uniform 3-element array of block{layout( column_major shared) uniform highp float u, layout( column_major shared) uniform 1-element array of highp 4-component vector of float v})
|
||||
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})
|
||||
0:? 'name2' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 1-element array of highp 4-component vector of float v})
|
||||
0:? 'name3' (layout( column_major shared) buffer 3-element array of block{layout( column_major shared) buffer highp float u, layout( column_major shared) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
|
||||
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)
|
||||
0:? 'gu' ( global 1-element array of 7-element array of highp float)
|
||||
|
@ -405,7 +405,7 @@ ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float)
|
||||
0:? 'gu' ( global implicitly-sized array of 7-element array of float)
|
||||
0:? 'gimp' ( global implicitly-sized array of implicitly-sized array of float)
|
||||
0:? 'gimp' ( global implicitly-sized array of 1-element array of float)
|
||||
0:? 'g4' ( global 4-element array of 7-element array of float)
|
||||
0:? 'g5' ( global 5-element array of 7-element array of float)
|
||||
|
||||
@ -768,7 +768,7 @@ ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'many' ( global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float)
|
||||
0:? 'gu' ( global 1-element array of 7-element array of float)
|
||||
0:? 'gimp' ( global 1-element array of implicitly-sized array of float)
|
||||
0:? 'gimp' ( global 1-element array of 1-element array of float)
|
||||
0:? 'g4' ( global 4-element array of 7-element array of float)
|
||||
0:? 'g5' ( global 5-element array of 7-element array of float)
|
||||
|
||||
|
20
Test/baseResults/implicitInnerAtomicUint.frag.out
Executable file
20
Test/baseResults/implicitInnerAtomicUint.frag.out
Executable file
@ -0,0 +1,20 @@
|
||||
implicitInnerAtomicUint.frag
|
||||
ERROR: 0:2: '[]' : only outermost dimension of an array of arrays can be implicitly sized
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 460
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
|
||||
|
||||
Shader version: 460
|
||||
ERROR: node is still EOpNull!
|
||||
0:? Linker Objects
|
||||
0:? 'c' (layout( binding=0 offset=0) uniform 1-element array of 1-element array of atomic_uint)
|
||||
|
2
Test/implicitInnerAtomicUint.frag
Normal file
2
Test/implicitInnerAtomicUint.frag
Normal file
@ -0,0 +1,2 @@
|
||||
#version 460
|
||||
layout(binding = 0) uniform atomic_uint c[1][];
|
@ -264,6 +264,15 @@ struct TArraySizes {
|
||||
|
||||
return false;
|
||||
}
|
||||
bool clearInnerImplicit()
|
||||
{
|
||||
for (int d = 1; d < sizes.size(); ++d) {
|
||||
if (sizes.getDimSize(d) == (unsigned)UnsizedArraySize)
|
||||
setDimSize(d, 1);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
bool isInnerSpecialization() const
|
||||
{
|
||||
for (int d = 1; d < sizes.size(); ++d) {
|
||||
|
@ -3002,7 +3002,7 @@ void TParseContext::structArrayCheck(const TSourceLoc& /*loc*/, const TType& typ
|
||||
}
|
||||
}
|
||||
|
||||
void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer, bool lastMember)
|
||||
void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qualifier, TArraySizes* arraySizes, bool initializer, bool lastMember)
|
||||
{
|
||||
assert(arraySizes);
|
||||
|
||||
@ -3015,8 +3015,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
|
||||
return;
|
||||
|
||||
// No environment allows any non-outer-dimension to be implicitly sized
|
||||
if (arraySizes->isInnerImplicit())
|
||||
if (arraySizes->isInnerImplicit()) {
|
||||
error(loc, "only outermost dimension of an array of arrays can be implicitly sized", "[]", "");
|
||||
arraySizes->clearInnerImplicit();
|
||||
}
|
||||
|
||||
if (arraySizes->isInnerSpecialization())
|
||||
error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", "");
|
||||
|
@ -338,7 +338,7 @@ public:
|
||||
bool arrayError(const TSourceLoc&, const TType&);
|
||||
void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
|
||||
void structArrayCheck(const TSourceLoc&, const TType& structure);
|
||||
void arraySizesCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer, bool lastMember);
|
||||
void arraySizesCheck(const TSourceLoc&, const TQualifier&, TArraySizes*, bool initializer, bool lastMember);
|
||||
void arrayOfArrayVersionCheck(const TSourceLoc&);
|
||||
void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2);
|
||||
void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*);
|
||||
|
@ -160,7 +160,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"460.vert",
|
||||
"dce.frag",
|
||||
"atomic_uint.frag",
|
||||
// "implicitInnerAtomicUint.frag",
|
||||
"implicitInnerAtomicUint.frag",
|
||||
"aggOps.frag",
|
||||
"always-discard.frag",
|
||||
"always-discard2.frag",
|
||||
|
Loading…
Reference in New Issue
Block a user