Commit Graph

15838 Commits

Author SHA1 Message Date
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
baldurk 4b561b81bb Don't force BDA on memory allocs that will be used with dedicated images 2025-04-07 16:53:25 +01:00
baldurk af0a32db38 Remove centroid decorations when fetching postvs 2025-04-07 16:53:24 +01:00
baldurk 3a3e2c0540 Use flags from final linked pipeline with EXT_gpl if present 2025-04-07 16:53:24 +01:00
baldurk 26f2732268 Fix KHR_maintenance5 pipeline flags being put on wrong pNext chain 2025-04-07 16:53:24 +01:00
baldurk c084fc9cc3 Don't pass non-sparse resources to sparse reference function 2025-04-07 16:53:24 +01:00
Jake Turner 6f949b1fa9 Add DXIL Debugger Support for Wave Scan and Prefix ops
DXOp::WavePrefixOp
DxOp::WavePrefixBitCount
2025-04-07 13:42:24 +01:00
Jake Turner cf6e3d68fa Add D3D12_Workgroup_Zoo unit tests for Wave Scan and Prefix ops
WavePrefixCountBits()
WavePrefixSum()
WavePrefixProduct()
2025-04-07 13:20:39 +01:00
Jake Turner a4d916f033 Add VK_Workgroup_Zoo unit tests for subgroup Scan and Prefix ops
subgroupBallotExclusiveBitCount()
subgroupExclusiveAdd()
subgroupExclusiveMul()
2025-04-07 13:20:36 +01:00
Jake Turner 5be762a464 Add DXIL Debugger Support for Wave Broadcast Operations
HLSL
WaveReadLaneFirst()
WaveReadLaneAt()

DXIL
DXOp::WaveReadLaneAt
DXOp::WaveReadLaneFirst
2025-04-07 11:08:00 +01:00
Jake Turner 214d3f766f Add D3D12_Workgroup_Zoo unit tests for subgroup Broadcast ops
WaveReadLaneFirst()
WaveReadLaneAt()
2025-04-07 11:07:03 +01:00
Jake Turner b8f1d01b35 Add VK_Workgroup_Zoo unit tests for subgroup Broadcast/Shuffle ops
subgroupBroadcastFirst()
subgroupBroadcast()
subgroupShuffle()
2025-04-07 11:06:29 +01:00
Jake Turner 0e35fe6fcb Add DXIL Debugger Support for Wave Vote Operations
HLSL
WaveActiveAnyTrue()
WaveActiveAllTrue()
WaveActiveBallot()

DXIL
DXOp::WaveAnyTrue
DXOp::WaveAllTrue
DXOp::WaveActiveBallot
2025-04-07 11:05:07 +01:00
Jake Turner aefb21fa36 Add D3D12_Workgroup_Zoo unit tests for Wave Vote operations
WaveActiveAnyTrue()
WaveActiveAllTrue()
WaveActiveBallot()
2025-04-07 11:05:07 +01:00
Jake Turner 001539a3cd Add VK_Workgroup_Zoo unit tests for subgroup Vote operations
subgroupAny()
subgroupAll()
subgroupBallot()
2025-04-07 11:05:07 +01:00
baldurk b70254174f Handle marking sparse BDA buffers as referenced. Closes #3572 2025-04-07 10:48:08 +01:00
Cam Mannett b031e69597 Warn user if layer config application failed before JDWP failure 2025-04-07 10:17:05 +01:00
Jake Turner fa22effc77 Add DXIL Debugger Support for Quad Operations
HLSL
QuadReadLaneAt()
QuadReadAcrossDiagonal()
QuadReadAcrossX()
QuadReadAcrossY()

DXIL
DXOp::QuadReadLaneAt
DXOp::QuadOp
2025-04-06 14:39:49 +01:00
Jake Turner 038aee2459 Add D3D12_Workgroup_Zoo unit tests for Quad Shuffle operations
QuadReadLaneAt()
QuadReadAcrossDiagonal()
QuadReadAcrossX()
QuadReadAcrossY()
2025-04-06 14:38:13 +01:00
Jake Turner 7240cf8c57 Add VK_Workgroup_Zoo unit tests for Quad Shuffle operations
subgroupQuadBroadcast()
subgroupQuadSwapDiagonal()
subgroupQuadSwapHorizontal()
subgroupQuadSwapVertical()
2025-04-06 14:00:52 +01:00