Commit Graph

16269 Commits

Author SHA1 Message Date
Jake Turner b9945d563e Active thread runs scope changes on the device thread
Run EnterFunction(), EnterEntryPoint(), ProcessScopeChange() on device thread
2025-09-24 14:59:28 +01:00
Jake Turner 7bdf8a8d88 Make pointer read/write methods return DeviceOpResult
ThreadState

  DeviceOpResult ReadPointerValue(Id pointer, ShaderVariable &ret);

Debugger

  DeviceOpResult ReadFromPointer(const ShaderVariable &ptr, ShaderVariable &ret) const;
  DeviceOpResult GetPointerValue(const ShaderVariable &v, ShaderVariable &ret) const;
2025-09-24 14:52:42 +01:00
Jake Turner 781984703b Change WritePointerValue, WriteThroughPointer to return DeviceOpResult
Mark any pointer writes that require a callback to run on the device thread
2025-09-24 14:50:46 +01:00
Jake Turner d93be6f2b2 Multi-threaded support for SPIRV wrapper APIs ReadTexel, WriteTexel 2025-09-24 14:45:14 +01:00
Jake Turner 8d9bb3f168 Add Spirv Debugger APIs to wrap API Wrapper APIs
The Debugger APIs run on the device thread if required,

FillInputValue(), ReadTexel(), WriteTexel()
2025-09-24 14:38:33 +01:00
Jake Turner 35fdf44c20 Spirv debugger support for queue and run of Simulation on Device Thread 2025-09-24 14:33:01 +01:00
Jake Turner 6e28ff1ca8 Convert Spirv Debugger to run Thread steps via the JobSystem
Enabled by default : config option "Vulkan_Debug_EnableShaderDebugMT"
2025-09-24 14:29:59 +01:00
Jake Turner 94d7f4365d Batch Spirv debugger MathOp and SampleGatherOp GPU operations
Thread Simulation queues MathOp, SampleGatherOp requests and then the Thread is paused.
The Debugger loop processes the MathOp queue, batches MathOps together into a single command list, Submit, Sync.
The Debugger loop processes the SampleGatherOp queue, batches GPU SampleGatherOps together into a single command list, Submit, Sync. Some SampleGatherOps are run on the CPU and do not use the GPU.

When the queued operations are completed, the results are written back into the Thread Simulation and the paused Threads are rerun.
2025-09-24 14:22:04 +01:00
Jake Turner b9d86315ff Change Spirv Shader Debugger steps chunk size to 1,000,000
Helps to reduce the number of replays during shader debugging which helps when captures have non-deterministic replay
2025-09-24 14:18:43 +01:00
Jake Turner f12aa91ba2 Python helpers to generate and check a full trace from shader debug 2025-09-24 14:13:59 +01:00
Jake Turner e6f75e1530 Update Spirv debugger methods to be const methods
Add read/write locking for containers "usedNames" and "dynamicNames"
2025-09-24 14:09:43 +01:00
Jake Turner 64b9e517e0 VK_Shader_Debug_Zoo test of overlapped GPU math and sampling operations 2025-09-24 14:01:47 +01:00
Jake Turner fc2c080a77 Remove unused cycles variable in VK_ShaderDebugZoo 2025-09-24 14:01:30 +01:00
Jake Turner d0d385ceef Use const reference for ShaderBindIndex argument passing 2025-09-24 13:53:56 +01:00
Jake Turner 3b74e038d2 Assert for SPIRV Subgroup Ops that the subgroup is converged 2025-09-24 13:49:51 +01:00
Jake Turner e5121962f3 Spirv Debugger control flow helper variable tweaks
Removed unused mergeBlock
Made control flow variables private with helper methods to get them
2025-09-24 13:46:00 +01:00
Jake Turner c0b77c1d0c Add thread safe SPIRV Debugger::AddDebugMessage()
Adds to an MT safe queue which is processed on the debugger device thread
Made ClampScalars static methods become Debugger helper member functions
2025-09-24 13:39:48 +01:00
Jake Turner 6163426870 Assert for SPIRV CalcDeriv that the lanes are converged 2025-09-24 13:36:12 +01:00
Jake Turner a2de7cb4ff Add Threading::JobSystem::GetCountWorkers() 2025-09-24 13:32:37 +01:00
Jake Turner a4bf961af3 Add asserts for SPIRV Debugger APIs to be called on the device thread 2025-09-24 13:22:46 +01:00
Jake Turner 135389a605 Add asserts for VulkanAPIWrapper APIs to be called on the device thread 2025-09-24 12:17:58 +01:00
Jake Turner 6518e89b3e Change VulkanAPIWrapper::m_Creation to be const 2025-09-24 12:13:05 +01:00
Jake Turner 6058969b74 Add VulkanCreationInfo const helpers
Useful for multi-threaded use of VulkanCreationInfo to guarantee it can't be accidentally mutated.

Primary usage is for SPRIV shader debugging.

Change existing VulkanDebugManager helpers to use the new helpers
2025-09-24 12:05:20 +01:00
Jake Turner decbcff6ab Enable Vk Workgroup and Subgroup tests 2025-09-24 12:04:37 +01:00
Jake Turner 754b5d21eb Change VK_Workgroup_Zoo test to be deterministic 2025-09-24 11:50:52 +01:00
Jake Turner b3981e9bf6 Change DXIL debugger to generate CBuffer Handle ShaderVariable data
Generate a struct of N x uint4, where N comes from the DXIL metadata cbuffer resource size
Fixes ShaderVariable malformed errors when using cbuffers with packedoffset
2025-09-23 16:18:00 +01:00
Jake Turner 0f0da06737 Fix DXIL Debugger Constants display of cbuffer with packedoffset
The simulation had the correct values

cbuffer packed_consts : register(b1)
{
  float col1z : packoffset(c1.z); // 4+2
  float col2w : packoffset(c2.w); // 8+3
};
2025-09-23 16:16:32 +01:00
Jake Turner bfb0b09db9 Fix DXBC Debugger for cbuffer with packedoffset at non-zero component
cbuffer packed_consts : register(b1)
{
  float col1z : packoffset(c1.z); // 4+2
  float col2w : packoffset(c2.w); // 8+3
};
2025-09-23 16:14:13 +01:00
Jake Turner e16a714aba New cbuffer tests: D3D11, D3D12 packedoffset; D3D12 cbuffer array
cbuffer packed_consts : register(b2)
{
  float col1z : packoffset(c1.z); // 4+2
  float col2w : packoffset(c2.w); // 8+3
};

struct ArrayStruct
{
  float4 a;
};

ConstantBuffer<ArrayStruct> array_consts[2] : register(b3);
2025-09-23 15:59:48 +01:00
Jake Turner b47e703c06 Include the cbuffer element byte offset in DXIL disassembly 2025-09-23 15:59:32 +01:00
baldurk 659bdee578 Implement D3D12 shader feedback for constant buffers 2025-09-23 14:49:20 +01:00
baldurk 3d1e78ba17 Handle buffers created in new state with undefined layout
* These can implicitly be transitioned to old states even though the spec says
  resources must go via COMMON - because there is no way to do that for new
  buffers.
2025-09-23 10:16:03 +01:00
baldurk de1fd89591 Remove debug code 2025-09-23 09:48:17 +01:00
baldurk 2381c2669d Add support in tests for compiling with separate shader debug info 2025-09-22 14:21:56 +01:00
baldurk 872752cd51 Add version check for -select-validator which was annoyingly removed 2025-09-22 14:21:36 +01:00
baldurk cda6da6945 Enumerate supported shader model in demos a bit more tightly 2025-09-22 13:49:51 +01:00
baldurk d4fd5b4977 Don't use = for argument parameters in SRCI information from dxc 2025-09-22 13:48:42 +01:00
baldurk 26cf7d3d7f Ensure shader reflection information is stored as const
* Avoids accidental modifications
2025-09-22 11:58:56 +01:00
Cam Mannett 0dd399cc11 Handle multiple and NULL initial state AS descriptors
* Fix for handling NULL VkAccelerationStructureKHR handles in an AS write descriptor
* Fix for handling multiple AS write descriptors across different bind indices
2025-09-20 00:37:32 +09:00
baldurk bf8354b703 Pass fragment offsets on renderpass end 2025-09-19 16:19:42 +01:00
baldurk 9954649720 Update unit test for new compile flag 2025-09-19 16:03:19 +01:00
baldurk 5f95354737 Process fake OpModuleProcessed comments in non-semantic debug source 2025-09-19 16:03:18 +01:00
baldurk f17604df26 Restore depth bounds test correctly for depth test overlay. Closes #3701 2025-09-19 16:03:18 +01:00
Mike Blumenkrantz 29187e6c15 support VK_VALVE_fragment_density_map_layered 2025-09-20 00:03:09 +09:00
Mike Blumenkrantz 9cfef91e06 support VK_EXT_fragment_density_offset 2025-09-20 00:03:09 +09:00
baldurk 1e0f960635 Don't allow implicit scalar to vector casts in Vec helpers
* With all default parameters in the constructor `Vec4f foo = 1.0f` would be
  legal by implicit constructor.
2025-09-19 14:13:01 +01:00
baldurk 7f92c9204b Handle dubiously-valid unbound scissor region in D3D12 pixel history 2025-09-19 14:13:01 +01:00
baldurk baecdd85ca Improve arrow key nudging behaviour on NPOT mips in texture viewer 2025-09-19 14:13:01 +01:00
baldurk 858cfab281 Improve positioning for pixel context highlight for NPOT textures 2025-09-19 14:13:01 +01:00
baldurk a22b8a88a2 Calculate mip shift accurately for NPOT textures 2025-09-19 14:13:01 +01:00