Cam Mannett
47ee186e65
Retain initial contents type on softmem flush reset
...
Otherwise resources are filtered out before writing.
Change-Id: I76e096472aa3a8b32b81ccd4612da7330173ed47
2025-04-29 15:50:02 +01:00
baldurk
36e53ae0cd
Ensure color format is always set for GL pixel history framebuffers
2025-04-29 12:09:51 +01:00
baldurk
8e86f79c72
Fix compiling pixel history shaders on GLES breaking
2025-04-29 12:09:38 +01:00
baldurk
ade38c43d4
Only apply dynamic offsets for the relevant pipeline type
2025-04-24 16:12:15 +01:00
baldurk
5b5bec6334
Handle forward referenced function members in debuginfo types
2025-04-24 16:12:15 +01:00
Le Philousophe
bf1ebeeb86
Allow custom visualisation shaders to be used with GLES
...
With GLES, a precision specifier is mandatory for float types.
Specifying one in the user shader is not enough because it happens too
late after uvec2 and uvec4 uses in the custom prefix.
2025-04-24 12:02:24 +01:00
baldurk
e03ea6b040
Fix incorrect log print
2025-04-23 10:53:50 +01:00
baldurk
4dfedae094
Make sure that const pNext chains aren't modified during patching
...
* Even if we duplicate the base structure it is not safe to modify the const
pNext chain without copying it too.
2025-04-23 10:53:50 +01:00
Jake Turner
498e767272
DXBC debugger clamp out of bounds component count to maximum of four
2025-04-22 12:38:27 +01:00
Jake Turner
4ead1e4423
Handle initialising a DXIL constant struct to NULL
...
It is a nop because ShaderVariable starts initialised to 0
2025-04-22 12:37:28 +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
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
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
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
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
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
baldurk
4b561b81bb
Don't force BDA on memory allocs that will be used with dedicated images
2025-04-07 16:53:25 +01:00