Jake Turner
eeac056816
VK and D3D12 Workgroup & Subgroup Zoo tests fail on Asserts or Errors
...
Check the renderdoc log for lines matching "Assertion" or "Error"
Using new helper function in testcase.py
def check_renderdoc_log(self, asserts: bool = True, errors: bool = True):
2025-04-22 12:33:56 +01:00
Jake Turner
1c4520534d
new helper function in testcase.py to check RD log for Asserts/Errors
...
def check_renderdoc_log(self, asserts: bool = True, errors: bool = True):
2025-04-22 12:33:50 +01:00
Jake Turner
261f957d5b
SPIRV workgroup debugger, add padding lanes to align to subgroup size
2025-04-18 13:58:10 +01:00
Jake Turner
5f00ed9d39
SPIRV Debugger workgroup debugging fixes
...
Set the thread property SubgroupId for the extra lanes outside of the subgroup
pass the workgroup laneIndex to BeginDebug
Set the thread property GroupThreadIndex, GroupFlatIndex for all workgroup lanes
2025-04-18 13:58:10 +01:00
Jake Turner
c1fb809f17
SPIRV Debugger, add asserts to ensure the lane index is in range
...
Specifically when computing the active lanes from the activeMask array
2025-04-18 13:58:09 +01:00
Jake Turner
f5222ed547
DXIL Debugger tweak subgroup active lanes helper
...
add asserts to ensure the lane index is in range
return the first lane in the subgroup
2025-04-18 13:58:09 +01:00
Jake Turner
ede0c1d0ee
D3D12 Workgroup debugger, add padding lanes to align to subgroup size
2025-04-18 13:58:09 +01:00
Jake Turner
53ad61b6a5
D3D12 Workgroup debugger, use SV_GroupThreadID for threadid
...
Use SV_GroupThreadID to fill in threadid in the compute fetcher instead of SV_DispatchThreadID
Keep SV_DispatchThreadID to identify the candidate thread
2025-04-18 13:58:09 +01:00
Jake Turner
e14bc98e18
Added VK_Workgroup_Zoo, D3D12_Workgroup_Zoo tests
...
Tests specifically aimed at workgroup debugging i.e GSM and non-aligned subgroups
Not focused on unit tests of subgroup/quad instructions that is handled by *_Subgroup_Zoo
2025-04-18 13:58:09 +01:00
baldurk
a8a0e9628d
Update VK_CBuffer_Zoo test to account for glslang regression
...
* glslang now requires and uses scalar block layout for hlsl cbuffer packing
2025-04-18 13:28:19 +01:00
baldurk
f837af3066
Make sure functional test sections always match begin/end
2025-04-18 12:54:53 +01:00
baldurk
eb05d1b0a6
Fix forced references failing on ASs
2025-04-18 11:20:04 +01:00
baldurk
3b29508f2f
Fix vulkan structured data conversion
2025-04-18 11:19:47 +01:00
baldurk
933a91e47c
Update shaderc build script (VS2015 no longer supported)
2025-04-18 11:19:34 +01:00
baldurk
e1dd947e1e
work around compile error asserting on static const
2025-04-17 17:16:50 +01:00
baldurk
506d6c6d7b
Fix self-capture for vulkan captures using ASs
...
* The problem here is that due to design flaws in the extension when ASs are in
use we don't know whether a memory allocation will need BDA or not an the
application doesn't have to set any flag - unlike for normal buffer BDA. So we
promote (almost) all memory allocations to BDA when using ASs even if they're
not needed.
* This normally works fine except if during self-capture the replay process
allocates some normal memory before all application replayed allocations have
been made, the self-capturing will promote it to BDA and request a replayable
address that might clash with a later address the application had used and
would be needed.
* To solve this, we ensure that during capture we don't create wrapped
allocations more than necessary - to avoid causing clashes - as well as
ensuring that on replay we only create new allocations after all replayed
allocations.
* We also take advantage of dedicated allocations for fake swapchain images,
since dedicated image allocations will not be promoted to BDA.
2025-04-17 16:21:19 +01:00
Martyn Jacques
84aa4c7fb6
Reset planar flag when remapping textures on vulkan replay
2025-04-17 16:20:21 +01:00
Jake Turner
b02980faa2
Extend D3D12 barrier special case code in FillWithDiscardPattern
...
Change educated guess for D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS resources
2025-04-17 13:38:02 +01:00
baldurk
5deab91b40
Fix CGL
2025-04-16 22:53:45 +01:00
baldurk
6e2dea6219
Fix linux/mac compilation
2025-04-16 21:16:39 +01:00
baldurk
d38d9594a2
Fix emulation of glCopySubImageData. Closes #3589
...
* It was not working for some formats/dimensions, tested against GL_Texture_Zoo.
2025-04-16 18:36:00 +01:00
baldurk
621698e7dc
Ignore port in device IDs for target control connection. Closes #3590
2025-04-16 18:02:39 +01:00
baldurk
06003bb1ad
Implement support for manual swapchain image creation. Closes #3586
2025-04-16 17:39:51 +01:00
baldurk
f6eee16baf
Check for files with extra .pdb if the original filename didn't have it
2025-04-16 17:39:51 +01:00
baldurk
7d464fed60
Add verification that HASH matches in debug info if present
...
* We keep searching if we find a file that matches but has the wrong hash.
2025-04-16 17:39:51 +01:00
baldurk
0f019eafb9
Add option to make shader search paths non-recursive
...
* For very large shader symbol stores especially those on network drives, the
bad behaviour that PIX has to recursively search all possible subdirectories
and enumerate all files can be really slow. Most of the time a file is
identified by its hash filename and looked up directly - if that isn't a hit,
in many cases users would rather a fast exit to having no symbols.
2025-04-16 17:39:51 +01:00
baldurk
67960c740c
Improve error detection for windows directory enumeration
2025-04-16 17:39:51 +01:00
baldurk
e14ff38a37
Use lock instead of atomic to protect debug files cache lookup
2025-04-16 17:39:51 +01:00
baldurk
abb0b9d843
Fix validation issue with ASs as memory can't be used without buffer
2025-04-16 12:37:23 +01:00
baldurk
f9d03761b3
Avoid libraries loading and unloading for GL hooks on windows
...
* This can cause the hooks to get out of sync if the libraries move between
loads, so should be avoided. Most applications won't do this anyway.
2025-04-16 12:08:49 +01:00
baldurk
99c4d5a588
Add more detail to message for failed mesh shader fetches on D3D12
2025-04-16 12:08:49 +01:00
Jake Turner
29544f34e2
Remove VK, D3D12 Workgroup lane value is active assert
...
It will fire on lanes when workgroup size is not a multiple of the subgroup size
2025-04-14 17:25:09 +01:00
Jake Turner
2ce4c0fb74
Initialise WaveActiveBallot accumulator to zero
2025-04-14 16:32:27 +01:00
Jake Turner
c723941946
Add DXIL debug helper ConvertShaderVariableStructToVector
...
Used by WaveActiveBallot and WaveMatch
2025-04-14 16:32:22 +01:00
Jake Turner
187f7bd523
Reset s_NextTangleId to zero when constructing ControlFlow
2025-04-14 16:32:17 +01:00
Jake Turner
13588f3962
Alter VK, D3D12 Subgroup_Zoo tests to increase convergence/merge usage
2025-04-14 08:46:12 +01:00
Jake Turner
df6a58c9c0
Add DXIL Debugger Support for SM6.7 Quad ops
...
DXOp::QuadVote
DXOp::WaveMultiPrefixOp
2025-04-12 11:36:23 +01:00
Jake Turner
4c72fdfd8a
Specific DXIL disassembly handling for QuadVote
...
After
bool _QuadVote2 = QuadAny(_32);
bool _QuadVote = QuadAll(_37);
Before
bool _QuadVote2 = QuadVote(/*cond*/ _32, /*op*/ 0);
bool _QuadVote = QuadVote(/*cond*/ _37, /*op*/ 1);
2025-04-12 11:28:06 +01:00
Jake Turner
89d131ab3a
Add D3D12_Workgroup_Zoo unit tests for QuadAny, QuadAll ops
...
For SM6.0, DXC will replace with SM6.0 instructions
For SM6.7, DXC will use SM6.7 instruction QuadVote
2025-04-12 11:26:30 +01:00
James Sumihiro
c3f1ccc38e
Fix image state merge with secondary command buffers.
...
If a secondary command buffer referenced an image but its layout is unknown, it remains unknown when merged into a primary command buffer.
2025-04-10 17:13:37 +01:00
baldurk
92c13a3247
Fix secondary draws from previous pass/instances with mesh shaders
2025-04-10 16:04:22 +01:00
Jake Turner
a1cf098fe3
Extend Shader ControlFlow handling of external simulation updates
...
Previously automatic activation of merge points was only considered for the merge point head.
Now consider any point in the merge point list and prune above it, similar to how function return points are handled
2025-04-10 15:06:19 +01:00
Jake Turner
e53b6d3bf4
Add DXIL Debugger Support for SM6.5 Wave ops
...
DXOp::WaveMatch
DXOp::WaveMultiPrefixOp
DXOp::WaveMultiPrefixBitCount
2025-04-10 10:48:27 +01:00
Jake Turner
21c576730c
Add D3D12_Workgroup_Zoo unit tests for SM6.5 Wave ops
...
WaveMatch()
WaveMultiPrefixSum()
WaveMultiPrefixProduct()
WaveMultiPrefixCountBits()
WaveMultiPrefixBitAnd()
WaveMultiPrefixBitOr()
WaveMultiPrefixBitXor()
2025-04-10 10:48:27 +01:00
Jake Turner
fcb688124f
Specific DXIL disassembly handling for WaveMultiPrefixOp
...
After
int _WaveMultiPrefixOp12 = WaveMultiPrefixSum(_WaveGetLaneIndex, {_92,_93,_94,_95}); // Unsigned
int _WaveMultiPrefixOp10 = WaveMultiPrefixBitAnd(_127, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp9 = WaveMultiPrefixBitOr(_WaveGetLaneIndex, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp = WaveMultiPrefixBitXor(_WaveGetLaneIndex, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp11 = WaveMultiPrefixProduct(_WaveGetLaneIndex, {_92,_93,_94,_95}); // Unsigned
Before
int _WaveMultiPrefixOp12 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _92, /*mask1*/ _93, /*mask2*/ _94, /*mask3*/ _95, /*op*/ 0, /*sop*/ 1);
int _WaveMultiPrefixOp10 = WaveMultiPrefixOp(/*value*/ _127, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 1, /*sop*/ 0);
int _WaveMultiPrefixOp9 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 2, /*sop*/ 0);
int _WaveMultiPrefixOp = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 3, /*sop*/ 0);
int _WaveMultiPrefixOp11 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _92, /*mask1*/ _93, /*mask2*/ _94, /*mask3*/ _95, /*op*/ 4, /*sop*/ 1);
2025-04-10 10:48:27 +01:00
baldurk
def9422163
Apply framebuffer usage from dynamic rendering to secondary cmd draws
2025-04-09 11:36:54 +01:00
Jake Turner
42a1ace8d2
Specific DXIL disassembly handling for WaveActiveBit
...
After
int _WaveActiveBit14 = WaveActiveBitAnd(_WaveGetLaneIndex);
int _WaveActiveBit13 = WaveActiveBitOr(_WaveGetLaneIndex);
int _WaveActiveBit = WaveActiveBitXor(_WaveGetLaneIndex);
Before
int _WaveActiveBit14 = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 0);
int _WaveActiveBit13 = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 1);
int _WaveActiveBit = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 2);
2025-04-07 18:07:13 +01:00
Jake Turner
f0936cdf1b
Add DXIL Debugger Support for Wave Reduction ops
...
DXOp::WaveActiveAllEqual
DXOp::WaveActiveBit
DXOp::WaveAllBitCount
DXOp::WaveActiveOp (WaveActiveOp::Product, WaveActiveOp::Min, WaveActiveOp::Max)
2025-04-07 17:51:43 +01:00
Jake Turner
cc32e24d81
Add D3D12_Workgroup_Zoo unit tests for Wave Reduction ops
...
WaveActiveMax()
WaveActiveMin()
WaveActiveProduct()
WaveActiveSum()
WaveActiveAllEqual()
WaveActiveBitAnd()
WaveActiveBitOr()
WaveActiveBitXor()
WaveActiveCountBits()
2025-04-07 17:51:29 +01:00
Jake Turner
ebd0648096
Add VK_Workgroup_Zoo unit tests for subgroup Reduction ops
...
subgroupMax()
subgroupMin()
subgroupMul()
subgroupAdd()
subgroupAllEqual()
subgroupAnd()
subgroupOr()
subgroupXor()
subgroupBallotBitCount()
2025-04-07 17:51:22 +01:00