SpirvShader: Fix ASSERT firing in debugger
https://swiftshader-review.googlesource.com/c/SwiftShader/+/43693 added an assert to SpirvShader::Operand that checks the object is a constant or an intermediate.
SpirvShader::Impl::Debugger::exposeVariable() was constructing an Operand for pointer object types (but was not using it), firing this assert.
Bug: b/129000021
Bug: b/148401179
Change-Id: Id22a92e28b1bb16781b98979d26180b1c022db96
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/44014
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Pipeline/SpirvShaderDebugger.cpp b/src/Pipeline/SpirvShaderDebugger.cpp
index be57e54..214ef1c 100644
--- a/src/Pipeline/SpirvShaderDebugger.cpp
+++ b/src/Pipeline/SpirvShaderDebugger.cpp
@@ -1288,21 +1288,23 @@
}
// No debug type information. Derive from SPIR-V.
- Operand val(shader, state, id);
switch(shader->getType(obj).opcode())
{
case spv::OpTypeInt:
{
+ Operand val(shader, state, id);
group.put<Key, int>(key, Extract(val.Int(0), l));
}
break;
case spv::OpTypeFloat:
{
+ Operand val(shader, state, id);
group.put<Key, float>(key, Extract(val.Float(0), l));
}
break;
case spv::OpTypeVector:
{
+ Operand val(shader, state, id);
auto count = shader->getType(obj).definition.word(3);
switch(count)
{