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;