Commit Graph

15050 Commits

Author SHA1 Message Date
baldurk cb1a2926fa Fix pixel history potential use-after-free
* After resizing history events for overdraw the modification reference may no
  longer be valid.
2024-10-04 10:31:56 +01:00
baldurk 5d0a85e8ca Allow 'expected errors' in tests for RDResult returns
* This fixes the issue that tests of out-of-bounds and error behaviour trigger
  debugbreaks. We don't apply this to RDCERR (currently) as it would generate
  more code overall and it's easier to convert any new deliberate test errors.
2024-10-04 10:31:12 +01:00
baldurk 354dc784a4 Release both state object property interfaces 2024-10-03 16:59:49 +01:00
baldurk b6c3707ee4 Cache AS builds and copy for initial states 2024-10-03 16:35:38 +01:00
baldurk 7bfa00db6a Allow resource managers to mutate initial states
* This is useful for being able to cache data during apply, rather than during
  serialise when we don't typically execute GPU work.
2024-10-03 16:35:09 +01:00
baldurk d2ba9b793a Serialise and recreate ASs via build data not API serialisation 2024-10-03 16:34:00 +01:00
baldurk 71329c617e Duplicate and save parameters for AS builds 2024-10-03 16:33:19 +01:00
baldurk f8aec0f890 Always report uncompacted AS size on D3D12
* Drivers can compact inconsistently so if we have a compaction that ends up
  smaller during capture than replay we will end up with overlapping and invalid
  AS locations on replay.
* We still allow compactions to happen in case there's a performance benefit,
  the application will just not be able to exploit any memory savings.
2024-10-03 16:32:45 +01:00
baldurk ae6bc1fd82 Enable RTP capture/replay feature on vulkan 2024-10-03 16:32:35 +01:00
baldurk ca73392638 Step up through composite types when looking for file scope 2024-10-03 16:32:25 +01:00
baldurk be3f2a65fb Fix export lookup index being incorrect 2024-10-03 16:32:19 +01:00
baldurk b49e2e607f Add test of very short-lived RTV/DSV heaps 2024-10-03 16:32:09 +01:00
baldurk 2c1afc36a8 Fix crash if PSO is passed to CreateCommandList 2024-10-03 16:30:37 +01:00
Cam Mannett a68c076341 Switch to GPU side query result replacement 2024-10-03 16:18:51 +01:00
Cam Mannett 5be2156bbe Replace queried AS compaction sizes with full size
The spec does not mandate that the compaction size is the same between capture and replay, so we effectively disable it by always returning the full AS size when the compaction size is queried.
2024-10-03 16:18:51 +01:00
Cam Mannett e08871d5c0 Vulkan AS rebuild-on-replay: Copy AS input buffers on build
When vkCmdBuildAccelerationStructuresKHR is called, the input buffers used for the build are copied into host-accessible memory, so when initial state serialisation is triggers it can be copied into the capture file.

To unify the behaviour of the different geometry types, there is only one readback buffer per AS, and in the case of triangle data it can contain the vertex, index, and transform data concatenated into a single contiguous block.

The buffer data along with build arguments are stored in a ref-counted VkAccelerationStructureInfo object held by the AS's VkResourceRecord.  Once the info object is destroyed, then the copied buffer mem is also freed.

Serialisation of the initial state will follow in later patches.

Caveats:
* vkCmdBuildAccelerationStructuresIndirectKHR is not handled
* VkAccelerationStructureGeometryInstancesDataKHR::arrayOfPointers mode is not handled
2024-10-03 16:18:51 +01:00
baldurk 68a2866850 Add a couple of older Intel driver DLLs 2024-09-30 11:10:00 +01:00
baldurk 9795d8fbb0 Handle encoding DXIL bytecode with multiple functions
* After each function we need to reset the IDs of any function-local constants
  since they may be referenced in other functions and need to be given new
  function-local IDs for reference.
2024-09-30 11:08:30 +01:00
baldurk 4c003525b3 Add support for PSV data version 3
* This has a very disappointingly considered string in the header struct which
  comes *before* the string table.
2024-09-30 11:07:53 +01:00
baldurk c9714b9eaf Bump version to v1.36 2024-09-27 18:01:00 +01:00
baldurk 8a394019fd Fix installer typos v1.35 2024-09-27 11:57:42 +01:00
baldurk a342fcbe30 Add dxcompiler.dll to installer 2024-09-27 10:46:25 +01:00
James Sumihiro aaf64f1edf Fix uninitialized reftype during image state merge
The reftype of a merged subresource state is now initialized with the reftype of the original subresource state

This resolves an issue that could occur if image states in a secondary command buffer were merged into a primary for the first time, where the resulting merged image state would have an uninitialized reftype
2024-09-26 10:18:48 +01:00
baldurk f0389a6ccc Fix crash if opening D3D11 cbuffer view with no shader bound 2024-09-24 14:14:13 +01:00
Jake Turner 11e8039622 DXIL Debugger find the entry point in GetLineInfo
Get entry point from meta data if the entry point is empty
2024-09-24 11:06:00 +01:00
baldurk 8b23157086 Check extension/version capabilities for sampler descriptors too on GLES 2024-09-23 14:04:47 +01:00
baldurk ce6b999995 Fix typo in warning message 2024-09-23 14:04:46 +01:00
Jake Turner 66a43b3d45 Moved var_dispatch_helpers.h to replay/common folder
To enable sharing ShaderVariable helpers for the SPIRV and DXIL Shader Debuggers
2024-09-20 17:44:41 +01:00
Jake Turner 982f464eee Do not call end_section when a shader debug pixel comparison test fails 2024-09-20 17:44:25 +01:00
baldurk 5a9c707bef Drop use of dxil.dll entirely, prefer loading from plugin
* We already hash any unhashed containers so we don't need dxil.dll for anything
2024-09-20 14:18:09 +01:00
baldurk 8b096de227 Check for feature availability when fetching GL descriptors 2024-09-20 13:35:43 +01:00
baldurk 6388289921 Fix crash if cbuffer creation fails 2024-09-20 13:30:33 +01:00
baldurk 0bf89f95c0 Reset compute state when CB is reset 2024-09-20 13:30:33 +01:00
baldurk a882efef66 Rename RT manager to be less of a mouthful 2024-09-20 13:30:33 +01:00
baldurk 40d0b8088c Properly wait on jobs for setting stack size 2024-09-20 13:30:32 +01:00
baldurk 70cadc8f81 Don't rely on device sharing when not singleton device 2024-09-20 13:30:32 +01:00
baldurk 0cea7aae41 Add warning to users when vkconfig is detected
* This causes quite a few crashes on startup during Vulkan initialisation.
2024-09-20 13:30:32 +01:00
baldurk c0bb0f93bb Don't assert if job system is synced when not initialised 2024-09-20 13:30:32 +01:00
Jake Turner 9b1332077a DXIL Disassembly: Include GlobalVar in SSA Id generation
During SettleIDs() check that all instruction arguments that require an SSA Id have one set

Moved DXILDebug::Id, INVALID_ID, DXIL::GetSSAId() out of DXIL Debugger
2024-09-20 11:09:05 +01:00
Jake Turner d46b29a916 Added uint32_t ssaID to DXIL::GlobalVar
Changed GlobalVar::align from uint64_t -> uint32_t to make space for the new member
2024-09-20 11:07:42 +01:00
Jake Turner e22bf99392 DXIL RD Disassembly demangle global variable names 2024-09-20 11:07:42 +01:00
Cam Mannett 6dd3faa2a1 Correct compressed texture copy sizing asserts
Reported in #3432

wedw

Change-Id: If74a96bbb5b0c7561e4bef4bca3cb6e9be97e7da
2024-09-20 10:57:33 +01:00
Jake Turner 2b7f1a8185 DXIL Add Unknown to FunctionFamily
Make it clear when family has not been calculated
2024-09-19 11:25:44 +01:00
Jake Turner eb01d2dead DXIL Debugger find the entry point in GetLineInfo 2024-09-19 11:25:39 +01:00
Jake Turner df80c1ebcb DXIL Debugging improved tracking of local source variables
Use DXIL::DILocalVariable* as the unique key
2024-09-19 10:39:53 +01:00
Jake Turner e2271c2d3f DXIL Debugger Source Variable Scope handling changes
Include DILexicalBlock scopes
Fixes to the search for the scope based on instruction index
Handle the case of scopes which have no mappings
Update parent scope min, max instruction
Handle scope min, max instruction tracking in AddScopedDebugData
Only update activeInstructionIndex for instructions with valid DebugLoc data
2024-09-18 17:15:11 +01:00
Jake Turner 42a1b4e641 For Test D3D12_Sharing validate the D3D12 Drawcall results
In addition to the Copy results
2024-09-18 12:45:55 +01:00
Jake Turner 33fb099a37 D3D12GraphicsTest print shader compile error message correctly
Error string is not NULL terminated, use GetBufferSize() to determine how many characters to print
2024-09-18 12:32:45 +01:00
Jake Turner 53e73a1eda DXIL Debugger support for Source Variables
Using Dwarf debug metadata and llvm.dbg.declare, llvm.dbg.value calls
2024-09-18 11:34:56 +01:00
Cam Mannett 031c4955e9 Check command buffer callback queue before VkDevice is destroyed
We only check for signaled events on each queue submit, so the last submission before exit will never be checked.  This change makes sure we release for completed submissions just before the device is destroyed (typically target application exit).  In this case the callbacks are not called.
2024-09-18 11:06:58 +01:00