Commit Graph

15501 Commits

Author SHA1 Message Date
baldurk 7edcbfbdbc Fix bitfields not being resolved before structure uses 2025-01-07 15:10:44 +00:00
baldurk 79be74a8ec Only modify bitfield properties if bitfields are active 2025-01-07 14:43:19 +00:00
baldurk 980b6a8bf0 Add test of SM6.7 bitfield reflection 2025-01-07 13:43:45 +00:00
baldurk 2d86fe6b12 Ensure log output is clean when listing available demos 2025-01-07 13:43:45 +00:00
baldurk 4d4fbdcaa3 Demos project loads D3D12.dll relative to exe not CWD 2025-01-07 13:43:45 +00:00
baldurk f04e574cda Recalculate offsets for structured buffers on DXIL
* The offsets provided in the reflection data are garbage :(
2025-01-07 13:19:28 +00:00
baldurk 73b52dafb8 Resolve pending bitfield packing before applying specified field offsets 2025-01-07 13:19:28 +00:00
baldurk 55d939cdd8 Respect bitfield packing when generating format string for struct 2025-01-07 13:19:28 +00:00
baldurk 6261cb42d3 Fix missing indent for declared buffer structures 2025-01-07 13:19:28 +00:00
baldurk 49b2d16616 Reflect bitfield information out from DXIL data 2025-01-07 13:19:28 +00:00
baldurk ada407ca56 Fix breakpad compilation on recent VS2022 2025-01-07 11:49:18 +00:00
Jake Turner 233f7d1b97 DXIL Disassembly include DebugValue, DebugDeclare parsing 2025-01-06 19:53:29 +00:00
Jake Turner ab9db02608 Make unsupported DXIL Constant Op be an error instead of log 2025-01-06 14:44:13 +00:00
Jake Turner b370ba10d6 Ignore source mapping for LLVM debug, lifetime, invariant instructions 2025-01-06 14:44:13 +00:00
Jake Turner 80e4d5e1a6 Support for DXIL Constants created using GetElementPtr
Stop ignoring DXIL global variables which start with "dx.nothing."
Do not process constants from instructions which are counted as a nop by the simulation
2025-01-06 07:35:29 +00:00
Jake Turner 853097d554 Ignore member tags that are not DW_TAG_member
Defensive code for in case member->name is NULL
2025-01-03 15:20:41 +00:00
Jake Turner 03826a748b Fix wrong format specifier in DXIL debugger error message 2025-01-02 16:35:48 +00:00
Jake Turner 8ba666f0a9 Improve DXIL BufferStore/TextureStore out of bounds handling
For texture data the maximum number of components to store comes from the format
For non-texture data the maximum number of components is four which is then clamped to stop buffer overrun (by data size or offset)
2025-01-02 13:09:24 +00:00
Jake Turner 75aeb4820a Add a D3D12 Shader Debug Zoo test for writing to an int[1] buffer
Extends debugger coverage for handling read/write buffer bounds
2025-01-02 13:09:24 +00:00
Jake Turner f3bb7523b5 Reset the controlType current index to 0 in the BufferViewer constructor
This keeps the UI display in sync with the code internal settings for camera choice i.e. FlyCam/ArcBall. During the constructor, the UI setup for the different axis mappings will call on_resetCamera_clicked() and that can change the controlType current index value to be different from the expected/desired default value of 0.

Closes#3509
2025-01-02 09:44:54 +00:00
Jake Turner 5cda9752e0 Display the D3D12 IA indexStripCutValue in UI control "Restart Idx"
Previously "Restart Idx" was hardcoded to 0xFFFFFFFF
Show "Disabled" if the indexStripCutValue is D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED (0)

Similar UI behaviour to the GL pipeline state viewer

Closes#3508
2025-01-02 09:44:10 +00:00
Jake Turner 71b6ed09e5 Improve DXIL ControlFlow detection of loop blocks
Now handles finding all loop blocks in a loop where a block (2) in the loop is only in a single path:

0 -> 1 -> 3 - 1
0 -> 1 -> 2 -> 3
3 -> 4 -> END
2024-12-30 12:07:24 +00:00
Jake Turner da9207bc13 DXIL ControlFlow Unit Test for specific loop construction
A loop where a block (2) in a loop is only in a single path
0 -> 1 -> 3 - 1
0 -> 1 -> 2 -> 3
3 -> 4 -> END
2024-12-30 12:07:23 +00:00
Jake Turner 06cf587041 Defensive code fix to prevent out of bounds memory during DXIL debugging
GetElementPtr and UpdateMemoryVariableFromBackingMemory
2024-12-30 12:07:23 +00:00
baldurk 3bafceb97e Bump version to v1.37 2024-12-20 17:23:33 +00:00
baldurk e690587683 Update docs for D3D12 shader debugging v1.36 2024-12-20 12:03:34 +00:00
baldurk 47dcef3062 Remove spammy debug log 2024-12-20 10:45:15 +00:00
Jake Turner 48e73fbca7 Improve handling of Matrix and Vector debug source mappings 2024-12-19 21:20:22 +00:00
Jake Turner 02c187fa26 Reserve locals space of average of one source var per instruction 2024-12-19 20:47:30 +00:00
Jake Turner 2dda3e2f03 Limit BufferStore to maximum of the number of components in the format 2024-12-19 19:46:18 +00:00
Jake Turner 4ab1d61f29 Defensively copy ResourceReference as it is a ptr to container element 2024-12-19 19:31:10 +00:00
Jake Turner 2481208ba4 Defensive code when walking meta data scopes 2024-12-19 19:30:42 +00:00
Jake Turner 57e875e866 Ignore any non DerivedType debug data when iterating type members 2024-12-19 18:06:26 +00:00
Jake Turner 850b92a279 Create ShaderVariables for DXIL Constants for use in source mappings 2024-12-19 18:05:54 +00:00
Jake Turner 0cdad7bd8e Allocate SSA IDs for DXIL Constants 2024-12-19 18:05:15 +00:00
Jake Turner 2aaac27f75 AtomicStore, Atomic* fixes
Use the allocation size of the pointer argument not the allocation size of the memory backing variable (stack or global)

For Atomic* operations:
* use the pointer argument as the variable input instead of the memory backing variable (static or global)
* copy just the res value into the result variable instead of the whole res variable
* use the pointer argument variable as the source pointer argument instead of the memory backing variable
* record changes to the pointer argument variable as well as to the memory backing variable
2024-12-19 16:47:11 +00:00
Jake Turner 2759ebff97 Update TODO comments for DXIL Debugger 2024-12-19 16:47:11 +00:00
Jake Turner 68d38734e1 Defensive coding to prevent crashes when accessing invalid SSAD IDs
Variable, Resource, CBuffer, Pointer Ids
2024-12-19 16:47:11 +00:00
baldurk 4b527239ae Fix making QTreeView function public in RDTreeView 2024-12-19 15:46:42 +00:00
baldurk c9a621a812 List registers last in shader viewer tables 2024-12-19 15:13:52 +00:00
baldurk 5c73842332 Fix source variables not properly propagating updateID 2024-12-19 14:08:02 +00:00
Jake Turner 65ce7ff127 Use the function name if no callstack is generated 2024-12-19 13:43:31 +00:00
Jake Turner c331152916 Extend scope lifetime to match how SSA IDs variables get extended
If the scope is in a loop block, use the next uniform block instead
2024-12-19 13:09:07 +00:00
Jake Turner b7ffeb8675 Mark HLSL debug matrix mappings as row major
Matches the source language
2024-12-19 13:09:03 +00:00
Jake Turner 13fd0eb294 Always emit debug vectors (including vectors inside matrices)
Even if only some of the elements are mapped, the UI will handle elements which are not mapped
2024-12-19 13:08:59 +00:00
Jake Turner 4121262581 Include DXC Nop instructions as steppable instructions
Helps with source level debugging stepping particular around inlined functions
2024-12-19 13:08:55 +00:00
Jake Turner 06b13f5ff6 Handle source variable mapping of sub-parts of matrix
single element
single row or column
2024-12-18 18:18:27 +00:00
Jake Turner d76d0c34e1 Improve handling of Load and Atomic operations on global memory
Remove assert about bool being 8-bits
2024-12-18 16:44:26 +00:00
Jake Turner ed9c24aaea Use debug location scope to find current debug scope 2024-12-18 16:43:45 +00:00
Jake Turner a3708cfc52 Ignore DXC Nop instructions when setting instruction disassemblyLine 2024-12-18 15:52:21 +00:00