mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-11-12 00:42:55 +00:00
Sort GLSL reflected signature parameters with builtins first
This commit is contained in:
2 files changed
+74
-63
No files matched your search
@@ -2158,7 +2158,18 @@ void MakeShaderReflection(GLenum shadType, GLuint sepProg, ShaderReflection &ref
|
||||
bool operator()(const SigParameter &a, const SigParameter &b)
|
||||
{
|
||||
if(a.systemValue == b.systemValue)
|
||||
return a.regIndex < b.regIndex;
|
||||
{
|
||||
if(a.regIndex != b.regIndex)
|
||||
return a.regIndex < b.regIndex;
|
||||
|
||||
return a.varName < b.varName;
|
||||
}
|
||||
|
||||
if(a.systemValue == ShaderBuiltin::Undefined)
|
||||
return false;
|
||||
if(b.systemValue == ShaderBuiltin::Undefined)
|
||||
return true;
|
||||
|
||||
return a.systemValue < b.systemValue;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3591,11 +3591,24 @@ void main() {
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.inputSignature.size(), 3);
|
||||
{
|
||||
CHECK(refl.inputSignature[0].varName == "a_input");
|
||||
CHECK(refl.inputSignature[0].varName == "gl_FragCoord");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[0];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
|
||||
CHECK(refl.inputSignature[1].varName == "a_input");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[1];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 3);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Undefined);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
@@ -3604,9 +3617,9 @@ void main() {
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
}
|
||||
|
||||
CHECK(refl.inputSignature[1].varName == "z_input");
|
||||
CHECK(refl.inputSignature[2].varName == "z_input");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[1];
|
||||
const SigParameter &sig = refl.inputSignature[2];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 6);
|
||||
@@ -3616,19 +3629,6 @@ void main() {
|
||||
CHECK(sig.regChannelMask == 0x7);
|
||||
CHECK(sig.channelUsedMask == 0x7);
|
||||
}
|
||||
|
||||
CHECK(refl.inputSignature[2].varName == "gl_FragCoord");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[2];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
}
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.outputSignature.size(), 4);
|
||||
@@ -4213,24 +4213,40 @@ void main()
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.inputSignature.size(), 2);
|
||||
{
|
||||
CHECK(refl.inputSignature[0].varName == "block.Texcoord");
|
||||
CHECK(refl.inputSignature[0].varName == "gl_PerVertex.gl_Position");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[0];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Undefined);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 2);
|
||||
CHECK(sig.regChannelMask == 0x3);
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
|
||||
CHECK(refl.inputSignature[1].varName == "gl_PerVertex.gl_Position");
|
||||
CHECK(refl.inputSignature[1].varName == "block.Texcoord");
|
||||
{
|
||||
const SigParameter &sig = refl.inputSignature[1];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Undefined);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 2);
|
||||
CHECK(sig.regChannelMask == 0x3);
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
}
|
||||
}
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.outputSignature.size(), 2);
|
||||
{
|
||||
CHECK(refl.outputSignature[0].varName == "gl_Position");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[0];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
@@ -4238,13 +4254,10 @@ void main()
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
}
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.outputSignature.size(), 2);
|
||||
{
|
||||
CHECK(refl.outputSignature[0].varName == "block.Texcoord");
|
||||
CHECK(refl.outputSignature[1].varName == "block.Texcoord");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[0];
|
||||
const SigParameter &sig = refl.outputSignature[1];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
@@ -4254,19 +4267,6 @@ void main()
|
||||
CHECK(sig.regChannelMask == 0x3);
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[1].varName == "gl_Position");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[1];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4295,11 +4295,24 @@ void main()
|
||||
|
||||
REQUIRE_ARRAY_SIZE(refl.outputSignature.size(), 6);
|
||||
{
|
||||
CHECK(refl.outputSignature[0].varName == "outarr[0]");
|
||||
CHECK(refl.outputSignature[0].varName == "gl_Position");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[0];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[1].varName == "outarr[0]");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[1];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.arrayIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Undefined);
|
||||
@@ -4309,9 +4322,9 @@ void main()
|
||||
CHECK(sig.channelUsedMask == 0x7);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[1].varName == "outarr[1]");
|
||||
CHECK(refl.outputSignature[2].varName == "outarr[1]");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[1];
|
||||
const SigParameter &sig = refl.outputSignature[2];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 1);
|
||||
@@ -4323,9 +4336,9 @@ void main()
|
||||
CHECK(sig.channelUsedMask == 0x7);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[2].varName == "outarr[2]");
|
||||
CHECK(refl.outputSignature[3].varName == "outarr[2]");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[2];
|
||||
const SigParameter &sig = refl.outputSignature[3];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 2);
|
||||
@@ -4337,9 +4350,9 @@ void main()
|
||||
CHECK(sig.channelUsedMask == 0x7);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[3].varName == "outmat:row0");
|
||||
CHECK(refl.outputSignature[4].varName == "outmat:row0");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[3];
|
||||
const SigParameter &sig = refl.outputSignature[4];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 3);
|
||||
@@ -4350,9 +4363,9 @@ void main()
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[4].varName == "outmat:row1");
|
||||
CHECK(refl.outputSignature[5].varName == "outmat:row1");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[4];
|
||||
const SigParameter &sig = refl.outputSignature[5];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 4);
|
||||
@@ -4362,19 +4375,6 @@ void main()
|
||||
CHECK(sig.regChannelMask == 0x3);
|
||||
CHECK(sig.channelUsedMask == 0x3);
|
||||
}
|
||||
|
||||
CHECK(refl.outputSignature[5].varName == "gl_Position");
|
||||
{
|
||||
const SigParameter &sig = refl.outputSignature[5];
|
||||
INFO("signature element: " << sig.varName.c_str());
|
||||
|
||||
CHECK(sig.regIndex == 0);
|
||||
CHECK(sig.systemValue == ShaderBuiltin::Position);
|
||||
CHECK(sig.compType == CompType::Float);
|
||||
CHECK(sig.compCount == 4);
|
||||
CHECK(sig.regChannelMask == 0xf);
|
||||
CHECK(sig.channelUsedMask == 0xf);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user