Commit Graph

11060 Commits

Author SHA1 Message Date
baldurk 631b56a04e Add support for compiling with dxcompiler in tests 2020-06-18 17:22:44 +01:00
baldurk 592cf968e3 Add a new analytics tracking flag for "has any capture used DXIL" 2020-06-18 17:22:44 +01:00
baldurk 28127e6249 Only init DXC and create DXIL shaders when capture uses DXIL shaders 2020-06-18 17:22:44 +01:00
baldurk 0bd48d3c2c Update overlays to use DXIL as needed
* This is needed because D3D12 requires all shaders in a pipeline to use DXIL if
  any do.
* We try to bake the couple of DXIL shaders that we will mix-and-match with
  application shaders at build time, in case we aren't able to find a working
  dxcompiler at runtime to build them. But this can only happen if we find a
  working dxc.exe in one of the windows 10 SDKs.
2020-06-18 17:22:44 +01:00
baldurk 9f210d5617 Hardcode variants of fixed colour shader needed on D3D12
* We will be adding an offline baked version of the DXIL variant of each of
  these, so we want to make it friendly to build-time generation.
2020-06-18 17:22:44 +01:00
baldurk 33b4d351a8 Try to locate and use DXC when compiling shaders for SM6.0 and up
* This will first try and use any dxcompiler.dll in the renderdoc plugins
  folder, or in the PATH. Otherwise it will search through windows 10 SDKs
  located via the registry.
2020-06-18 17:22:44 +01:00
baldurk 1c2aff1cd7 Add helper to quickly check for if DXIL is in use 2020-06-18 17:22:44 +01:00
baldurk e4aff40405 Rename basic disassembly type on D3D12 to include DXIL 2020-06-18 17:22:44 +01:00
baldurk 23c23951ad Account for padding in DXIL bitcode chunk 2020-06-18 17:22:44 +01:00
baldurk 993204b817 Allow capturing with DXIL shaders. Closes #1718 2020-06-18 17:22:44 +01:00
baldurk 6783f6a851 Improve handling if reflection information is stripped 2020-06-18 17:22:43 +01:00
baldurk b55d4c1c3f Prefer to get reflection information from STAT chunk if present
* This has some type information still present that's stripped out of the DXIL
  chunk
2020-06-18 17:22:43 +01:00
baldurk 11fa7686c4 Allow enabling D3D12ExperimentalShaderModels, and enable it on replay
* This needs to happen to allow loading unsigned DXIL
2020-06-18 17:22:43 +01:00
baldurk 743d75c510 Update DX headers to latest from SDK 10.0.19041
* Don't allow querying for the new interfaces since we don't support anything in
  them.
2020-06-18 17:22:43 +01:00
baldurk b7570358a4 Handle dx.op.annotateHandle type annotations 2020-06-18 17:22:43 +01:00
baldurk be65ec48d7 Process cbuffer/structure types with type annotations 2020-06-18 17:22:43 +01:00
baldurk c112b3d2c0 Reflect SRVs and UAVs 2020-06-18 17:22:43 +01:00
baldurk ba8b49e4d8 Handle register name for stencil ref output in DXBC bytecode 2020-06-18 17:22:43 +01:00
baldurk b4ae6c4b10 Start adding reflection based on the metadata 2020-06-18 17:22:43 +01:00
baldurk 2f10c52b0c Remove some unused fields in DXBC reflection
* These are present in the DXBC file itself but we don't use them
2020-06-18 17:22:43 +01:00
baldurk fc5c58a6c9 Move reflection to separate file, implement GetOutputTopology() 2020-06-18 17:22:42 +01:00
baldurk 6fcd4fee91 Ignore PSV0 chunk 2020-06-18 17:22:42 +01:00
baldurk b4db14915a Disassemble empty types with no padding 2020-06-18 17:22:42 +01:00
baldurk 505a674b85 Ensure DXIL populates compute shader fake input signature 2020-06-18 17:22:42 +01:00
baldurk 2081c4219c Ignore DXIL STAT chunk since we decode bytecode always 2020-06-18 17:22:42 +01:00
baldurk fec709b2d1 Support using ILDN to locate separate debug info
* This works the same way as the existing separate pdb support
2020-06-18 17:22:42 +01:00
baldurk 57721e4688 Include new ILDN chunk and global flags in disassembly
* This is used for both DXBC and DXIL bytecode
2020-06-18 17:22:42 +01:00
baldurk 6641030fbc Print types in same order as LLVM 2020-06-18 17:22:42 +01:00
baldurk d73452f012 Print metadata values inline instead of referencing them by number 2020-06-18 17:22:42 +01:00
baldurk df1187b8ee Support naming basic blocks in function symbol table 2020-06-18 17:22:42 +01:00
baldurk 343e13def0 Fix disassembly of DIDerivedType 2020-06-18 17:22:42 +01:00
baldurk 6093690737 Match LLVM's escaping behaviour 2020-06-18 17:22:42 +01:00
baldurk c1838c89fc Handle atomic instructions 2020-06-18 17:22:41 +01:00
baldurk 5a976e55ea Fetch compute thread dimension from dx.entrypoint metadata 2020-06-18 17:22:41 +01:00
baldurk 77d60b72da Save address space in pointer types 2020-06-18 17:22:41 +01:00
baldurk b54248ad49 Fix indexing of symbols for metadata 2020-06-18 17:22:41 +01:00
baldurk e29502ddcb Handle switch opcode 2020-06-18 17:22:41 +01:00
baldurk 26d4244d25 Fix disassembly of DILexicalBlock 2020-06-18 17:22:41 +01:00
baldurk 340bf9f805 Add handling for branching and phi nodes 2020-06-18 17:22:41 +01:00
baldurk 08cd7ae0e0 Handle explicit debug info
* Some locations are given as metadata even though most appear through
  DEBUG_LOC, so ensure we handle these.
2020-06-18 17:22:41 +01:00
baldurk 8b57989b3f Disassemble global variables with initialisers properly 2020-06-18 17:22:41 +01:00
baldurk c8742a1456 Handle extract/insert/shuffle vector and aggregate operations
* DXIL supposedly won't use these, but handle them just in case
2020-06-18 17:22:41 +01:00
baldurk a6c8949335 Handle compare and select operations 2020-06-18 17:22:41 +01:00
baldurk d99a8536ca Decode alloca/gep/load/store 2020-06-18 17:22:41 +01:00
baldurk 591e02b565 Handled attached metadata 2020-06-18 17:22:40 +01:00
baldurk 10da3b73ae Add support for DISubrange 2020-06-18 17:22:40 +01:00
baldurk 9697bc294d Add helper to find and cache void type 2020-06-18 17:22:40 +01:00
baldurk 0000916e75 Expose svbr rotated encoding as static member of LLVM bit reader 2020-06-18 17:22:40 +01:00
baldurk bfea4427aa Stub out exception handling instructions we don't expect to appear 2020-06-18 17:22:40 +01:00
baldurk 657a5a0c39 Handle binops in functions 2020-06-18 17:22:40 +01:00