Commit Graph

14615 Commits

Author SHA1 Message Date
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
Jake Turner 6532eb65f0 SPIRV debug mapping change the superseding detection
Loop over the scope downwards (parent -> child) then inside that loop iterate upwards from the current scope (child -> parent) to detect mappings which might be superseded
2024-04-22 12:52:12 +01:00
Jake Turner cf66943092 SPIRV debugging: store the arrayDimensions for DebugTypeArray 2024-04-22 12:52:12 +01:00
Jake Turner d785eaeb67 Update struct member and array element names of SPIRV constants
array names and struct member names are not set when constants are created (struct decoration data is not available)
2024-04-22 12:52:12 +01:00
Jake Turner f494bb3cb9 Handle NULL signatures in DXIL EntryPoint 2024-04-22 12:08:31 +01:00
Jake Turner c2100ed816 Add DXIL 1.8 opcodes to funcSigs
Generated using DirectShaderCompile python file "utils/hct/hctdb.py"

    for inst in db.instr:
        out = inst.name
        out += "("
        for i in range(2,len(inst.ops)):
          if i > 2:
            out += ","
          op = inst.ops[i]
          out += op.name

        out += ")"
        print(out)
2024-04-22 11:47:32 +01:00
Jake Turner 218e52d0bb Move files to the 3rdparty/glslang filter in renderdoc_spirv vcproj 2024-04-22 11:46:53 +01:00
Jake Turner 08ed70e648 Added char DXIL::dxilIdentifier to use in the disassembly output
Before (DXC style)
%46 = fcmp fast olt float %45, 1.000000e-06

After (RD style)
_46 = fcmp fast olt float _45, 1.00000e-06;
2024-04-22 06:41:07 +01:00