Commit Graph

14475 Commits

Author SHA1 Message Date
James Sumihiro fcb8730132 Added support for VK_EXT_nested_command_buffer
Serialisation functions were updated for new structs and enum values. CaptureQueueSubmit was updated to recurse nested command buffer records so that command buffers and their resources are referenced in the capture. The logic for rebasing secondary command buffer events was updated to support nesting. The PartialReplayData struct was updated so all partial submissions can be tracked during active replay.
2024-04-08 11:30:06 +01:00
Cam Mannett 26ce7ec7bc Vulkan acceleration structure manager
Manages the capturing, serialising, and replay of acceleration structures for Vulkan.  It works in a similar way to how device memory is handled:
* A temporary host-accessible buffer is created for each AS
* The AS is serialised (in the Vulkan AS sense of the word) into it
* The buffer handle is stored in the initial contents and downloaded when
  appropriate
* Replay is handled similarly but in reverse
* Workaround added for broken Mali AS serialising
Note this is missing the descriptor and SPIR-V handling, that work will follow in a later PR.

The serialiser version has been bumped for backwards compatibility with 'RenderDoc for Arm GPUs 2024.0'.
2024-04-08 11:14:37 +01:00
kb1000 c16b2f34cd Add pythoncapi-compat third party library acknowledgement 2024-04-08 10:57:28 +01:00
kb1000 729fcfe187 Update pythoncapi_compat.h 2024-04-08 10:57:28 +01:00
kb1000 bb7ec408cb Use pythoncapi-compat to simplify Python C API backwards compatibility 2024-04-08 10:57:28 +01:00
kb1000 d0a24b31cd Fix some deprecated and internal Python C API usages 2024-04-08 10:57:28 +01:00
baldurk 635e62d229 Fix D3D12 not properly using pool chunks for recording 2024-04-05 16:09:08 +01:00
baldurk 314415be57 Bump version to v1.33 2024-04-05 16:08:48 +01:00
baldurk 6a89135890 Don't read out of bounds in descriptor heap when processing table v1.32 2024-04-03 12:41:50 +01:00
baldurk beefd5b044 Fix descriptor set index reference in VK_Graphics_Pipeline test 2024-04-03 12:40:22 +01:00
baldurk 1dd1ba9ea3 Fix some validation errors in VK_Graphics_Pipeline test 2024-04-02 18:01:17 +01:00
Jake Turner cc7942c3e9 D3D12 Pixel History don't try to read depth for non-graphics pipelines 2024-04-02 16:23:55 +01:00
Jake Turner fb078925ff D3D12 ExecuteIndirect action callbacks set the correct draw type
Was hardcoded to Drawcall, switch between Drawcall and Dispatch
Call dispatch callbacks for a dispatch execute indirect call
2024-04-02 16:23:55 +01:00
baldurk bcf794b019 Add component clarifier for multiple outputs
* This prevents multiple outputs being declared with the same name and aliasing.
2024-04-02 16:08:20 +01:00
Jake Turner 1fe8601769 Pixel History UI background swatch fix for R, RG formats
Set unused components to black (0.0 after range scaling).
2024-04-02 10:01:53 +01:00
Jake Turner 8d9cf9fdce Pixel History UI always show alpha for Shader Out 2024-04-01 19:15:46 +01:00
Jake Turner c1458fc420 Fix handling of UScaled, SScaled in DecodeFormattedComponents
Only UInt and SInt data is stored in integer representation in return from DecodePixelData
2024-04-01 18:57:25 +01:00
baldurk fc238ab9da Add a copy entry to the debug messages right-click menu 2024-04-01 16:04:58 +01:00
baldurk aaf20445b4 Report error in the buffer formatter if a recursive struct is declared 2024-04-01 14:56:14 +01:00
baldurk c724778cb3 Give empty sources 'unnamed_shader' name after checking for empty name
* This means that truly empty sources with no name or source are still properly
  filtered out - which is how OpSource works. Sources that are empty but have a
  name (e.g. ones referenced by #line directives) will still be kept, and
  unnamed sources with contents will be kept and given the unnamed filename.
2024-04-01 14:22:34 +01:00
Cam Mannett e43d6b4a26 Driver ID human name corrections
Looks like simple copy-paste error.
2024-03-28 14:48:13 +00:00
Louis de Carufel 4c4b2a32ae New bookmark context menu to rename and delete.
Missing forward declaration.
Fixed Linux compilation.
Added a context menu to Bookmark buttons for renaming and deleting.
2024-03-27 12:23:21 +00:00
Jake Turner 8c4ca4fe3a Vk Pixel History small code cleanup
Made some helper functions static and renamed "isDirectWrite" -> "IsDirectWrite"
2024-03-26 09:19:52 +00:00
Jake Turner 59929b01f8 D3D12 Pixel History small code cleanup
Made some helper functions static and removed unused helper function
float GetDepthValue(DXGI_FORMAT depthFormat, const byte *pValue)

Remove anonymous namespace and use static file scope functions instead
2024-03-26 09:19:47 +00:00
Jake Turner 0eb3c98ee8 Vulkan Pixel History fixes for decoding UINT, SINT data
Use the same helper function DecodePixelData() as D3D12 Pixel History
2024-03-26 09:19:42 +00:00
Jake Turner dbee567300 Added DecodePixelData helper function
Moved from D3D12 Pixel History to common code to share with Vullkan Pixel History.

Similar to DecodeFormattedComponents() but it keeps UInt, SInt component data as uint, int.
DecodeFormattedComponents() now calls DecodePixelData() and then casts the uint, int data to float for UInt, SInt component data.
2024-03-26 09:19:37 +00:00
Jake Turner ab07441212 Fix CI compile errors 2024-03-25 16:10:22 +00:00
Jake Turner a82241c706 Apply mipmap to width, height, depth for glTextureView replay
Closes #3279
2024-03-25 15:41:22 +00:00
Jake Turner 9f3d1eab2d Added GetMaxMemoryAllocationSize() to Vulkan device
For use during replay to enable more situations for graceful handling of OOM
VkAllocateMemory can return VK_UNKNOWN_ERROR in some situations
Used in FetchVSOut() to gracefully handle draws with very large vertex counts
2024-03-25 11:53:56 +00:00
baldurk 0ea1df4dd3 Fix a crash if SampleBias is used with an unbound sampler on D3D11 2024-03-20 12:53:17 +00:00
Cam Mannett 323bc7007a Improve AArch64-only device Android handling
On Pixel 8 phones we were seeing 'INSTALL_FAILED_NO_MATCHING_ABIS' on stdout but it was being checked on stderr only.

The lack of 32bit support is detected again from CheckAndroidServerVersion(..) but it only prints to the log, no logic changes occur.  This then caused the 'force queryable' checking to be performed on a not-installed APK which returned ResultCode::AndroidAPKVerifyFailed back to the runner.

The change is to check for INSTALL_FAILED_NO_MATCHING_ABIS on stdout too, and if that check still fails then the later check will bypass verfiication keeping the existing Succeeded result.
2024-03-19 10:37:11 +00:00
baldurk 4caf3e4e13 Correct struct name typo in python script 2024-03-18 10:28:37 +00:00
baldurk 525babb868 Add a semaphore per swapchain image
* With only a single semaphore we can only have one frame in flight and get
  validation layer messages if we run faster than that and re-use the
  renderStartSemaphore before the previous frame has completed.
2024-03-18 10:28:36 +00:00
Jake Turner e249981d8a Replace {blah} args directly when building tool command line
To support this type of usage:
"{hlsl_stage2}_6_0"
"-fspv-target-env={vulkan_ver}"
2024-03-14 10:50:31 +00:00
baldurk d180460872 Update some stale parts of extension support document 2024-03-13 16:16:33 +00:00
baldurk 5304351d00 Allow VK_EXT_texture_compression_astc_hdr as the extension is supported 2024-03-13 16:16:33 +00:00
Jovan Ristic cd19c52aa5 D3D12 Pixel History fix lack of integer clamping.
* When the shader outputs a value larger than the texture format
supports, the use of a 32bit target for history targets resulted in the
Tex After for fragments showing a value larger than possible.
* The int/uint path for ConvertAndFillInColor was missing the clamping
step that the other path includes.
2024-03-13 08:20:57 +00:00
Jake Turner 3cb8998841 Vulkan DebugPixel support for multiview debugging
Output "ViewIndex" into the pixel shader hits array
Select the pixel shader input which matches the viewIndex to the passed in view
Ignore the view parameter if set to ~0U (rd.ReplayController.NoPreference)
Ignore the view parameter if any subpass has empty multiviews
2024-03-13 07:58:48 +00:00
Jake Turner b36b7cf6b8 Vulkan Multi-view test
Vertex shader output Red for view 0, Green for view 1, fragment shader does not use viewIndex.
Fragment shader output Red for view 0, Green for view 1, vertex shader does not use viewIndex.
Geometry shader output Red for view 0, Green for view 1, vertex and fragment shader do not use viewIndex.

Python checks vertex and pixel shader debug output against replay rendering output
2024-03-13 07:58:48 +00:00
Jake Turner 7934d1d16e Change DebugPixel() to take a DebugShaderInputs struct
DebugShaderInputs struct contains existing the parameters:

sample
primitive

and a new parameter

view

Default constructor for DebugShaderInputs sets the parameters to NoPreference (~0U).
2024-03-13 07:58:48 +00:00
Jake Turner 5516f67227 Vk Tests added vkh::RenderPassCreator::next() 2024-03-13 07:58:48 +00:00
Jake Turner d00781d436 Update D3D12 enum's stringise 2024-03-12 11:44:03 +00:00
Jake Turner 3d561b48ab Quad Overdraw overlay requires pixel shader root signature access
Remove D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS from the root signature flags
2024-03-12 11:02:09 +00:00
Jake Turner 3fb6f80d1d Update D3D12_ROOT_SIGNATURE_FLAGS stringise 2024-03-12 10:59:35 +00:00
Jake Turner f66cb495f9 Add lock around access to m_DeviceAddressResourcesLock 2024-03-07 12:53:13 +00:00
Jake Turner 01b9c8234e D3D12 Pixel History support and acknowledgement 2024-03-07 12:52:41 +00:00
Kacper Zielinski 10d402358c Add comments to differentiate vkEnumeratePhysicalDeviceGroups usages 2024-03-05 16:45:30 +00:00
Kacper Zielinski e594d28127 Limit amount of physical devices groups requested by user 2024-03-05 16:45:30 +00:00
Kacper Zielinski 3c02b6f920 Fix non-conformant vkEnumeratePhysicalDeviceGroups behavior 2024-03-05 16:45:30 +00:00
baldurk b90252882f Add handling for shading rate builtin in SPIR-V 2024-03-05 11:38:28 +00:00