Closed miguel-petersen closed 6 months ago
I noticed an issue where some shaders have no ILDN block, however, still expect PDB resolution. I'm guessing I can match the shader hash with the PDB hash, that unfortunately means I need to index all PDB files from the start.
The current solution is nice in that it does not require indexing of the PDB contents, just the paths. Perhaps the way forward is to add an optional content indexing for cases like these. For large projects such as Unreal, with hundreds of thousands of shaders / PDBs, pre-indexing of contents is not viable. Luckily Unreal preserves the ILDN block.
Deferred resolution, as described above, is a likely the real way forward. However, until that's ready, optional content indexing seems acceptable.
Submitted a change that fixes "empty" shader sources. Recent DXC versions host source contents inside a DXBC block.
Slim PDB support has landed in development.
External Slim-PDBs are currently not supported. Slim-PDBs only contain the source code and original compilation parameters, not the non-canonical (LLVM) debug module.
Source traceback as it is today creates a mapping from an arbitrary UID to both an instruction offset and source-wise offset. If we were to instead only consider the instruction offset, and then allow the source-wise offset to be resolved later, it could allow for easier Slim PDB support.
Upon a validation error or shader inspection, Reshape would compile a full PDB with the debug module from the Slim PDB contents. As with other tooling, there is a slight risk that the resulting binaries are different, but it seems doable.