Commit Graph

15218 Commits

Author SHA1 Message Date
Jake Turner c3287ee4fa DXIL Debugger support for Control Flow
Step over nop instructions when entering a function
Step over nop instructions after a simulation step
Changed ThreadsAreConverged() -> ThreadsAreDiverged()
2024-11-15 13:25:15 +00:00
Jake Turner d498f11258 DXIL Debugger merge Live, Dormant variable containers 2024-11-15 13:21:39 +00:00
Jake Turner 2d0ce14633 Iter Test skip pixel debug when no pixel shader bound at mod event 2024-11-15 13:19:00 +00:00
Jake Turner f11db57d68 Function to compute uniform blocks from DXIL unstructured control flow
New files dxil_controlflow.{cpp,h}
2024-11-15 11:59:01 +00:00
Cam Mannett 59cc12ff3f Incorrect command buffer used on Vulkan AS copy replay 2024-11-15 10:48:24 +00:00
baldurk 83ac6d3697 Ensure resources created mid-frame are properly forced referenced 2024-11-14 10:21:10 +00:00
baldurk 1b39f2676b Add proper sync of all queues (vkDeviceWaitIdle equivalent) when needed 2024-11-13 15:50:19 +00:00
baldurk 52d62bb7de Try to minimise redundant barriers with resources with many subresources 2024-11-13 15:33:21 +00:00
baldurk 38c52c3367 Add config options to enable GPU VA & DRED at runtime 2024-11-13 15:25:20 +00:00
Jake Turner 0d8190e5e1 DXIL Debugger improve AnnoteHandle handling
Store the DXIL::ResourceKind to detect the buffer type
2024-11-13 09:08:47 +00:00
Jake Turner ed3ed86ede DXIL Debug GetShaderVariable() handling of DXIL Constant comound types
Fixed incorrect assert in ConvertDXILConstantToShaderVariable()
Handle DXIL Constant compound types in GetShaderVariable() using:
ConvertDXILTypeToShaderVariable()
ConvertDXILConstantToShaderVariable()
2024-11-13 09:07:45 +00:00
Jake Turner 8da03d8401 Improve DXIL Resource reflection buffer return type
Detect buffers of a single scalar/vector type
2024-11-13 09:07:01 +00:00
Jake Turner 49bb258ccc Added Stringise for DXIL::ResourceKind 2024-11-13 09:05:49 +00:00
Jake Turner b4a86958e2 DXIL Debugger added ThreadsAreConverged()
Current implementation of ThreadsAreConverged()
* must be in the same basic block
* must be on the same active instruction

Assert that the threads are converged in:
* sampling operations that use derivatives
* derivative instructions
* sync thread group
2024-11-12 16:19:28 +00:00
Jake Turner 96ac592995 DXIL Debugger refactopred high level thread step loop
For all active threads: skip over nop instructions and update the active instruction index
For all active threads execute a single instruction (guaranteed not to be a nop instruction)
2024-11-12 16:18:47 +00:00
Jake Turner cd84b7b6c0 DXIL Disassembly support for Barrier 2024-11-12 16:18:47 +00:00
Jake Turner 3877803a16 Compute and return usedInputs from GatherPSInputDataForInitialValues
Ignored for DXBC.
For DXIL this is used instead of searching the generated HLSL shader source
2024-11-12 16:13:43 +00:00
Jake Turner 0b11018eae DXIL Debugger support for initialised constant global variables
Includes improvements to UpdateBackingMemoryFromVariable() to support more complex variable types
2024-11-12 10:37:15 +00:00
Jake Turner be24fc8aaa DXIL Disassembly and Debug sanitise global variable names
Using newly added DXIL::SanisiseName()

Current implementation converts '.' -> '_'
2024-11-12 10:21:37 +00:00
Jake Turner f896599620 Added Strinise for DXIL::ValueKind 2024-11-12 10:20:37 +00:00
Jake Turner d63be95b45 DXIL Disassembly fix spelling mistake in variable name 2024-11-12 07:45:08 +00:00
baldurk ec8bfeafb3 Ensure dedicated resources in D3D12 buffer allocator don't get reused
* If we don't call SubAlloc (which will consume the whole resource) then it is
  pushed into the same free list as is used to allocate non-dedicated buffers
  from.
2024-11-11 18:20:37 +00:00
baldurk bd2f8a5d14 Only disable validation without SDKLayers dll when not using config
* If we have a config, enabling the debug layer will fail gracefully if we don't
  have a ID3D12Debug. This allows overridden D3D12 dll folders to use validation
  even if the capture doesn't include a validation DLL.
2024-11-11 18:19:41 +00:00
baldurk bfa9ab1687 Fall back to queried version directly from adapter if not found
* This is better for WARP which will not be enumerated by setupapi as a physical
  device.
2024-11-11 18:17:51 +00:00
Jake Turner 46893c5d6b DXIL Debugger small tweak to AnnotateHandle properties data 2024-11-09 13:32:38 +00:00
Jake Turner af1ea65dde DXIL Debugger support for AnnotateHandle
Get the resource access properties from the properties defined by AnnotateHandle
2024-11-09 12:58:44 +00:00
Jake Turner 4c990e6209 DXIL Disassembly and Debugger unify inputs/outputs/resources names 2024-11-09 09:01:31 +00:00
Jake Turner ebe32ec1dc DXIL DebugVertex set the updated constant block data in the trace 2024-11-09 08:56:57 +00:00
Jake Turner 2443dbcb55 Shader Editing: Fix problem where single Replace didn't work
Use the same findHash string in performReplace() as in performFind() by including the find direction in the findHash in performReplace()
2024-11-09 07:07:11 +00:00
baldurk 94b01feb22 Fix missing include for std::hash 2024-11-08 13:57:12 +00:00
baldurk 634e74793a Add recursive search of shader debug paths for debug files
* This doesn't seem to be documented anywhere but some applications rely on it
  and it seems like PIX behaves this way, so it is as with many things in D3D
  the defacto standard
2024-11-08 12:00:23 +00:00
baldurk 991b8c3a01 Add std::hash overload for rdcstr to allow it to be used in hashmaps 2024-11-08 11:57:24 +00:00
baldurk e9a6e0ebd0 When disabling XFB after replay, note if it was enabled. Closes #3478 2024-11-08 10:49:05 +00:00
baldurk 90411d50ed Refuse to read contents of AS buffers on D3D12 2024-11-08 10:49:05 +00:00
baldurk c427a3f85f Handle NULL AS descriptors correctly 2024-11-08 10:49:05 +00:00
Jake Turner d1663d9be7 D3D12 Pixel History fix device removed with large number of fragments
Destination copy buffer was sized to the number of events, this did not guarantee enough storage for the per fragment data i.e. small number of events with large of fragments per event

Reserve space for at least 256 fragments or 128 events in the buffer
Do not get data for fragments if the buffer does not have enough space

In the problem case the buffer went from 4KB to 28KB
2024-11-07 15:27:38 +00:00
Jake Turner 0be2b866a9 DXIL Debugger fix up argument indexes for DXOp::IMul, UMul, UDiv 2024-11-07 15:27:17 +00:00
Jake Turner 1b2b91edde DXIL Debugger treat Undef constants as 0 2024-11-07 15:27:01 +00:00
Jake Turner ecafb6206d DXIL Debugger support for dx.op.discard 2024-11-07 15:25:58 +00:00
Jake Turner b168e9ab0f DXIL Debugger improve the output variable mapping
Use the DXBC semanticIdxName for the variable names
Use the DXIL Output signature for the elements, data and ordering
2024-11-07 15:24:53 +00:00
Jake Turner 84f6799444 Improve testcase _find_action
Search for the action with the closest EID to the request
Previously it would return the first action that was larger than the EID
2024-11-07 15:23:31 +00:00
Jake Turner dc27caaa08 Iter Test : pixel history and vertex debug changes
Do not pixel debug on an unknown primitive ID (-1)
Allow pixel debug and vertex debug on non-drawcall actions which have non-zero drawIndex i.e. Indirect draws
2024-11-07 15:23:27 +00:00
Jake Turner 88fdd4a2e9 Apply SampleBias bias correctly when debugging D3D12 Shaders 2024-11-06 07:34:51 +00:00
Jake Turner a888296148 DXIL Debugger skip ignored PSInputs when calculating derivatives 2024-11-05 15:13:25 +00:00
Cam Mannett 0e9322e610 Skip incompatible image formats when building discard pattern
If the pattern's dimensions are not an integer multiple of the format's block size, then do not attempt to create the discard pattern, just exit early.

Fixes 3466
2024-11-05 14:03:22 +00:00
baldurk 8b3ae8fd4d Move stdio.h include outside of namespace, avoids some compilers choking 2024-11-05 10:12:16 +00:00
baldurk 78b86bcbd1 Guess handling of matrices in mesh outputs as pessimistically packed
* It is unclear currently what the stride of these matrices are since
  MatrixStride can't be applied to the type, so we reserve the worst-case
  memory.
2024-11-05 10:12:16 +00:00
baldurk ec261a2f85 Use API entry point not source entry point when decompiling source 2024-11-05 10:12:16 +00:00
baldurk e4bd840125 Add SPIR-V version to compile flags after debug info 2024-11-05 10:12:16 +00:00
baldurk ec7ecf6896 Fix buffer declaration not properly declaring structs 2024-11-05 10:12:16 +00:00