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:? 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:? '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:? '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:? '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:? '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)
|
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:? 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:? '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:? '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:? '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:? '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)
|
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:? 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:? '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:? '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:? 'g4' ( global 4-element array of 7-element array of float)
|
||||||
0:? 'g5' ( global 5-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:? 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:? '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:? '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:? 'g4' ( global 4-element array of 7-element array of float)
|
||||||
0:? 'g5' ( global 5-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;
|
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
|
bool isInnerSpecialization() const
|
||||||
{
|
{
|
||||||
for (int d = 1; d < sizes.size(); ++d) {
|
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);
|
assert(arraySizes);
|
||||||
|
|
||||||
@ -3015,8 +3015,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// No environment allows any non-outer-dimension to be implicitly sized
|
// 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", "[]", "");
|
error(loc, "only outermost dimension of an array of arrays can be implicitly sized", "[]", "");
|
||||||
|
arraySizes->clearInnerImplicit();
|
||||||
|
}
|
||||||
|
|
||||||
if (arraySizes->isInnerSpecialization())
|
if (arraySizes->isInnerSpecialization())
|
||||||
error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", "");
|
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&);
|
bool arrayError(const TSourceLoc&, const TType&);
|
||||||
void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
|
void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
|
||||||
void structArrayCheck(const TSourceLoc&, const TType& structure);
|
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 arrayOfArrayVersionCheck(const TSourceLoc&);
|
||||||
void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2);
|
void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2);
|
||||||
void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*);
|
void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*);
|
||||||
|
@ -160,7 +160,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
"460.vert",
|
"460.vert",
|
||||||
"dce.frag",
|
"dce.frag",
|
||||||
"atomic_uint.frag",
|
"atomic_uint.frag",
|
||||||
// "implicitInnerAtomicUint.frag",
|
"implicitInnerAtomicUint.frag",
|
||||||
"aggOps.frag",
|
"aggOps.frag",
|
||||||
"always-discard.frag",
|
"always-discard.frag",
|
||||||
"always-discard2.frag",
|
"always-discard2.frag",
|
||||||
|
Loading…
Reference in New Issue
Block a user