Vulkan/Debug: Create a PhysicalFile if DebugSource has no content
`VirtualFile`s are typically used for files with no physical backing.
Use `PhysicalFile` if there's no content provided in the debug info.
Bug: b/148401179
Change-Id: I1e1ed75ce9a9fb0965420267aba7f6d8de958012
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43430
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Pipeline/SpirvShaderDebugger.cpp b/src/Pipeline/SpirvShaderDebugger.cpp
index 637dd80..41053de 100644
--- a/src/Pipeline/SpirvShaderDebugger.cpp
+++ b/src/Pipeline/SpirvShaderDebugger.cpp
@@ -1046,11 +1046,16 @@
if(insn.wordCount() > 6)
{
source->source = shader->getString(insn.word(6));
+ auto file = dbg->ctx->lock().createVirtualFile(source->file.c_str(), source->source.c_str());
+ source->dbgFile = file;
+ files.emplace(source->file.c_str(), file);
}
-
- auto file = dbg->ctx->lock().createVirtualFile(source->file.c_str(), source->source.c_str());
- source->dbgFile = file;
- files.emplace(source->file.c_str(), file);
+ else
+ {
+ auto file = dbg->ctx->lock().createPhysicalFile(source->file.c_str());
+ source->dbgFile = file;
+ files.emplace(source->file.c_str(), file);
+ }
});
break;