Commit Graph

14622 Commits

Author SHA1 Message Date
baldurk dc8c758a55 Dynamically allocate BC7 data only when needed 2024-04-30 18:28:33 +01:00
baldurk 0dfb8474c1 Re-use ray dispatch patching on replay 2024-04-30 18:28:33 +01:00
baldurk ffb9c6cb3b Rebase associations after patching state object desc 2024-04-30 18:28:33 +01:00
baldurk b06e7030a5 Implement GPU unwrapping of handles in shader records 2024-04-30 18:28:33 +01:00
baldurk a9849c050b Implement shader identifier patching during capture 2024-04-30 18:28:33 +01:00
baldurk cfc5204a69 Don't require dxc for compiling RT patching shaders
* We do some manual uint64 emulation with uint2 which compiles on fxc, re-used
  from the execute indirect patching.
2024-04-30 18:28:33 +01:00
baldurk c26c4b11d0 Set up a patching function to unwrap shader records during capture 2024-04-30 18:28:33 +01:00
baldurk db44d06d41 Manage internal GPU buffers as refcounted objects on D3D12
* This will enable sharing of these buffers more easily when there are multiple
  lifetimes that are more difficult to co-ordinate.
2024-04-30 18:28:33 +01:00
baldurk 34aba75128 Register local root signatures and databases of state object exports
* This information will be used for wrapping, unwrapping & replay-remapping of
  shader records
2024-04-30 18:28:33 +01:00
baldurk 4c3de55d20 Dynamic rendering can be started in any command buffer 2024-04-30 10:40:39 +01:00
baldurk 47c5773d08 Fix crash in vulkan pipeline state viewer 2024-04-30 09:50:34 +01:00
Cam Mannett d0e3d9ce6d Vulkan AS descriptor and SPIR-V changes
Also has change where the AS is tracked in command buffers so that we know when it has been built - unbuilt ASes are skipped before serialisation.
2024-04-29 11:46:56 +01:00
Jake Turner 6de42041e6 Remove compile option "-mfpu=neon-vfpv" on arm64 processors
The compile option is set for file "rdparty/stb/stb_impl.c".
Apple Silicon is an arm64 processor and the compile option was not valid.
2024-04-27 11:58:44 +01:00
baldurk f076105548 Add missing docstrings for ShaderStageMask 2024-04-26 14:43:31 +01:00
baldurk aa419f851b Don't pass rdcstr through to logging directly 2024-04-26 14:36:18 +01:00
baldurk aa4f8fe62b Update SPIR-V references to NV opcodes 2024-04-26 14:25:45 +01:00
baldurk ce7a23b611 Prefer KHR to NV for opcode aliases when making SPIR-V helpers 2024-04-26 13:55:19 +01:00
baldurk c098971f79 Serialise ray pipeline binding and dispatching as-is
* This does not contain patching of shader records so currently the ray dispatch
  is not replayed
2024-04-26 13:55:19 +01:00
baldurk caa6ba3dd1 Remove an old and redundant feature check 2024-04-26 13:55:19 +01:00
baldurk e3e191f8d6 Wrap and serialise state objects as pass-through 2024-04-26 13:55:19 +01:00
baldurk 7e7bbf58a8 Reflect multiple entry points & ray properties from DXIL shaders 2024-04-26 13:55:19 +01:00
baldurk 476fed06d6 Add function to enumerate the entry points in a given shader 2024-04-26 13:55:19 +01:00
baldurk 89bea3ea8b Add new shader enums for RT shader stages 2024-04-26 13:55:18 +01:00
Jake Turner 5366ce7b4a RD DXIL Disassembly: ignore "undef" parameters in "dx.op" functions 2024-04-26 08:18:20 +01:00
Jake Turner 756a980d96 RD DXIL Disassembly: ignore first getelemenptr index if it is zero
Before
GroupShared float* _30 = shared_pos[0] + _29;

After
GroupShared float* _30 = shared_pos[_29];
2024-04-26 06:18:16 +01:00
Jake Turner b8f77d8393 RD DXIL Disassembly: EntryPoint Resources output
Includes EntryPoint Resources parsing
Includes handling column index for inputs/outputs access
2024-04-25 18:42:20 +01:00
Jake Turner b8621e81d5 Add SignatureElement constants used when parsing DXIL Signatures 2024-04-24 13:37:51 +01:00
Jake Turner 6a329ba5b3 RD DXIL Disassembly: display DX parameter names as inline comment 2024-04-24 09:33:21 +01:00
Jake Turner 8b534e8f18 Demos: Fix validation errors in D3D12_Compute_Only 2024-04-24 09:02:32 +01:00
Jake Turner ec9517c43a RD DXIL Disassembly: show dx parameter names on dx.op function calls
The parameter names extracted from the dx function signatures
2024-04-24 07:49:06 +01:00
Jake Turner 2b59d21fd9 RD DXIL Disassembly: change getelementptr output
Convert the DXIL addrspace value into string
Hand de-mangle pointer name

DXC:
%3 = getelementptr [6 x float], [6 x float] addrspace(3)* @"\01?s_x@@3@$$A.1dim", i32 0, i32 %9

RD:
GroupShared float* _3 = s_x[0] + _9;
2024-04-24 07:01:31 +01:00
Jake Turner 601dc58a52 RD DXIL Disassembly: change "br" output
if (_32) goto _132 else goto _33;

or

goto _132;
2024-04-23 13:33:16 +01:00
Jake Turner 007f4d46f4 RD DXIL Disassembly: change "load" and "store" output
load
  float _49 = *_48; // align 4

store
  *_30 = _27; // align 4
2024-04-23 13:33:10 +01:00
Jake Turner 248a2383ed RD DXIL Disassembly: convert "select" to C-style ? operator 2024-04-23 11:23:24 +01:00
Jake Turner bdc0a0bc2d RD DXIL Disassembly: explicit handling for specific FP comparisons
FOrdFalse
FOrdTrue
FOrd
FUnord
2024-04-23 11:23:20 +01:00
Jake Turner 9bb9c4ba6e RD DXIL Disassembly: use C-style operators and function names
Use C-style operators and function names as much as possible to replace comparison, arithmetic, casting instructions
2024-04-23 10:28:01 +01:00
Jake Turner 0f2c7490ce RD DXIL Disassembly: display function name instead of full signature
Divide up "funcSigs" array into "name" and "signature" arrays
2024-04-23 07:10:14 +01:00
Jake Turner 53e76cfa86 RD DXIL Disassembly: do not show Op flags string 2024-04-23 07:10:08 +01:00
Jake Turner f27659e902 RD DXIL disassebmly: do not show types on parameters 2024-04-23 07:10:03 +01:00
Jake Turner a9ead1dc0a RD DXIL disassebmly: display C style type names
i1 -> bool
i8 -> int8
i16 -> short
i32 -> int
i64 -> long
2024-04-23 07:09:56 +01:00
Jake Turner a8ccb73de8 First version of RenderDoc DXIL Disassembly output
Shows entry point inputs & outputs
Decodes "dx.op.loadInput" and "dx.op.StoreOutput" to show the input/output name
Change identifier prefix to "_" instead of "%"
Print floats in more natural format using %#g
Print type before assignments
2024-04-22 17:20:26 +01:00
baldurk 86ce562594 Use STAT dxil module for reflection where possible/necessary
* The STAT module has some metadata unstripped which is useful for type
  annotations. It's better than plain stripped DXIL but not as good as ILDB.
2024-04-22 16:21:51 +01:00
baldurk edcc7f7bbf Fix a couple of differences from dxc disassembly 2024-04-22 16:21:51 +01:00
Jake Turner 7c656e4881 Add DisassemblyAddNewLine() to make code simpler
Also keeps the current instruction line updated via new member
int m_DisassemblyInstructionLine;
2024-04-22 14:47:26 +01:00
baldurk 72095b8302 Create proper NULL descriptors for empty bindings in reflection zoo 2024-04-22 13:44:46 +01:00
baldurk c244c1fdda Don't process unused bindings when debugging vulkan shaders
* These will not be in the reflection data, so we can't try to process them and
  fill out their variables as there won't be anything to map to.
* Signature elements which are 'unused' by not being referenced but are present
  in a pre-1.4 SPIR-V module will be considered used still.
2024-04-22 13:01:13 +01:00
baldurk 020efd7fd7 Set subpass explicitly to 0 when using loadRPs 2024-04-22 13:01:13 +01:00
baldurk f03d73108f Add sorting offsets for arrays in SPDB source mapping data 2024-04-22 13:01:12 +01:00
baldurk 124218c6a3 Fix typo cutting off some of DXIL disassembly 2024-04-22 13:01:12 +01:00
Jake Turner 5cfff389fe SPIRV debug mapping updates to handle multiple overlapping mappings
Capture the mappings into a type usage tree
Update elements of the tree as overlapping mappings are encountered, sub-elements of a previously mapped variable i.e. single component of a vector, single array element, member in a structure.
After processing all mappings convert the finalized type usage tree into source variable mappings.
2024-04-22 12:52:12 +01:00