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