Add an option to report array variables with trailing [0] suffix
* This is as expected by ARB_program_interface_query
This commit is contained in:
parent
15c37f79a9
commit
edf8212ab8
@ -526,6 +526,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||||||
Options |= EOptionRelaxedErrors;
|
Options |= EOptionRelaxedErrors;
|
||||||
} else if (lowerword == "reflect-strict-array-suffix") {
|
} else if (lowerword == "reflect-strict-array-suffix") {
|
||||||
ReflectOptions |= EShReflectionStrictArraySuffix;
|
ReflectOptions |= EShReflectionStrictArraySuffix;
|
||||||
|
} else if (lowerword == "reflect-basic-array-suffix") {
|
||||||
|
ReflectOptions |= EShReflectionBasicArraySuffix;
|
||||||
} else if (lowerword == "resource-set-bindings" || // synonyms
|
} else if (lowerword == "resource-set-bindings" || // synonyms
|
||||||
lowerword == "resource-set-binding" ||
|
lowerword == "resource-set-binding" ||
|
||||||
lowerword == "rsb") {
|
lowerword == "rsb") {
|
||||||
@ -1522,6 +1524,7 @@ void usage()
|
|||||||
" --keep-uncalled | --ku don't eliminate uncalled functions\n"
|
" --keep-uncalled | --ku don't eliminate uncalled functions\n"
|
||||||
" --no-storage-format | --nsf use Unknown image format\n"
|
" --no-storage-format | --nsf use Unknown image format\n"
|
||||||
" --reflect-strict-array-suffix use strict array suffix rules when reflecting\n"
|
" --reflect-strict-array-suffix use strict array suffix rules when reflecting\n"
|
||||||
|
" --reflect-basic-array-suffix arrays of basic types will have trailing [0]\n"
|
||||||
" --resource-set-binding [stage] name set binding\n"
|
" --resource-set-binding [stage] name set binding\n"
|
||||||
" set descriptor set and binding for\n"
|
" set descriptor set and binding for\n"
|
||||||
" individual resources\n"
|
" individual resources\n"
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
reflection.options.vert
|
reflection.options.vert
|
||||||
Uniform reflection:
|
Uniform reflection:
|
||||||
t[0].v[0].position: offset 0, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[0].position[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
t[0].v[1].position: offset 24, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
t[0].v[2].position: offset 48, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[2].position[0]: offset 48, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
t[0].v[0].normal: offset 12, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[0].normal[0]: offset 12, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
t[0].v[1].normal: offset 36, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[1].normal[0]: offset 36, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
t[0].v[2].normal: offset 60, type 1406, size 3, index 0, binding -1, stages 1
|
t[0].v[2].normal[0]: offset 60, type 1406, size 3, index 0, binding -1, stages 1
|
||||||
|
|
||||||
Uniform block reflection:
|
Uniform block reflection:
|
||||||
VertexCollection: offset -1, type ffffffff, size 360, index -1, binding -1, stages 0
|
VertexCollection: offset -1, type ffffffff, size 360, index -1, binding -1, stages 0
|
||||||
|
@ -32,7 +32,7 @@ diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASER
|
|||||||
echo Running reflection...
|
echo Running reflection...
|
||||||
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
|
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
|
||||||
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
|
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
|
||||||
$EXE -l -q -C --reflect-strict-array-suffix reflection.options.vert > $TARGETDIR/reflection.options.vert.out
|
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix reflection.options.vert > $TARGETDIR/reflection.options.vert.out
|
||||||
diff -b $BASEDIR/reflection.options.vert.out $TARGETDIR/reflection.options.vert.out || HASERROR=1
|
diff -b $BASEDIR/reflection.options.vert.out $TARGETDIR/reflection.options.vert.out || HASERROR=1
|
||||||
$EXE -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
|
$EXE -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
|
||||||
diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1
|
diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1
|
||||||
|
@ -341,6 +341,10 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((reflection.options & EShReflectionBasicArraySuffix) && terminalType->isArray()) {
|
||||||
|
name.append(TString("[0]"));
|
||||||
|
}
|
||||||
|
|
||||||
// Finally, add a full string to the reflection database, and update the array size if necessary.
|
// Finally, add a full string to the reflection database, and update the array size if necessary.
|
||||||
// If the dereferenced entity to record is an array, compute the size and update the maximum size.
|
// If the dereferenced entity to record is an array, compute the size and update the maximum size.
|
||||||
|
|
||||||
|
@ -245,6 +245,7 @@ enum EShMessages {
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
EShReflectionDefault = 0, // default is original behaviour before options were added
|
EShReflectionDefault = 0, // default is original behaviour before options were added
|
||||||
EShReflectionStrictArraySuffix = (1 << 0), // reflection will follow stricter rules for array-of-structs suffixes
|
EShReflectionStrictArraySuffix = (1 << 0), // reflection will follow stricter rules for array-of-structs suffixes
|
||||||
|
EShReflectionBasicArraySuffix = (1 << 1), // arrays of basic types will be appended with [0] as in GL reflection
|
||||||
} EShReflectionOptions;
|
} EShReflectionOptions;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user