Commit Graph

11071 Commits

Author SHA1 Message Date
baldurk 2b40de2a6a Update docs about DXIL support 2020-06-19 14:46:00 +01:00
baldurk 01d7eaaca6 Fix assert that doesn't handle whole-array mappings 2020-06-19 14:46:00 +01:00
baldurk d3ef145c87 Patch VkRenderPassMultiviewCreateInfo when making single-subpass RPs 2020-06-19 14:46:00 +01:00
baldurk 4d6e4857f6 Implement debug interface for DXIL, to get embedded shader source 2020-06-19 14:45:57 +01:00
baldurk 253a03f5be Truncate long strings in DXIL disassembly 2020-06-19 14:45:44 +01:00
baldurk ad10f9ac01 Store shader profile in ShaderCompileFlags for D3D 2020-06-19 14:45:44 +01:00
baldurk d4ddb565d0 Add a per-shader debuggable flag to allow finer grained status
* E.g. on D3D12 we can debug DXBC shaders but not DXIL shaders. On vulkan this
  will allow us to have the UI work better when encountering shaders with
  unsupported capabilities or extensions.
2020-06-18 17:22:45 +01:00
baldurk 885e2b619c Fix a few cases in struct reflection 2020-06-18 17:22:45 +01:00
baldurk 7b96962ba0 Rename 'Value' to 'Constant' to get away from the overloaded LLVM term 2020-06-18 17:22:45 +01:00
baldurk 9225961462 Add support for GEP constant ops 2020-06-18 17:22:44 +01:00
baldurk 213ce9c43a Don't print 0 align on load/store/alloc 2020-06-18 17:22:44 +01:00
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