Commit Graph

14497 Commits

Author SHA1 Message Date
baldurk 55f0cd0561 Generate baked per-pipeline static descriptor access on D3D12 2024-04-10 16:00:34 +01:00
baldurk 50091dcffc Generate baked per-pipeline static descriptor access on Vulkan 2024-04-10 15:57:48 +01:00
baldurk 58c3dc52a7 Add reporting of GL texture completeness and conflicts for descriptors 2024-04-10 15:51:10 +01:00
baldurk a3c165faad Generate GL 'descriptor access' at runtime based on mapping
* This encodes the current potentially mutable uniform bindings into the
  descriptor access.
2024-04-10 15:43:41 +01:00
baldurk c33807e95e Implement queries for D3D11 descriptor access
* Since D3D11 is entirely non-bindless we can precalculate the descriptor access
  for a shader up-front from its reflection and combine at query time from the
  currently bound shaders. This effectively replaces the old bindpoint mapping.
2024-04-10 15:42:35 +01:00
baldurk 227842a295 Add a structure and query for reporting descriptor accesses 2024-04-10 15:33:36 +01:00
baldurk c1d07f6bc3 Implement Get*Descriptor for virtual descriptor storage in D3D11 & GL 2024-04-10 15:24:03 +01:00
baldurk ff821b25c8 Create fake descriptor storage objects for GL and D3D11 2024-04-10 15:17:38 +01:00
baldurk 28e86de0f9 Implement Vulkan descriptor fetching contents directly from sets 2024-04-10 15:11:01 +01:00
baldurk 9d8008f9b3 Set up some descriptor data to easily interpret contents in isolation
* For descriptors with immutable samplers the existing code already refuses to
  update/change them, but the descriptor won't contain the sampler unless it
  goes through init contents at which point we slot it in for easier validity
  checking. Instead we can set the immutable samplers at creation time when we
  know them. We can also set the descriptor type here as mutable descriptors
  cannot use immutable samplers.
* Similarly for inline uniform blocks if they are variable sized we can set
  their size here as well as the variable size is known at creation time.
* With these changes the contents of a descriptor can be processed entirely from
  the DescriptorSetSlot with two exceptions:
  - An immutable sampler flag, the source of the sampler is unknown
  - Dynamic offsets on descriptors, which vary based on where the descriptor set
    is bound (and in theory one descriptor set could be bound twice with two
    different offsets)
2024-04-10 15:08:51 +01:00
baldurk 7e359ee4ab Implement D3D12 descriptor fetching contents directly from heaps 2024-04-10 15:07:32 +01:00
baldurk b94e6ff90c Add a stubbed out query for pulling descriptor contents out of a store 2024-04-10 15:01:26 +01:00
baldurk 7ef216ad35 Add common descriptor type for all APIs
* Separated into normal descriptors and sampler descriptors, since they are
  almost equal in size so there's no need to inflate the descriptor size for
  non-sampler descriptors which are much rarer.
2024-04-10 14:55:32 +01:00
baldurk 0e9a43e3d0 Query number of supported MSAA sample counts properly in GL_Texture_Zoo 2024-04-10 14:48:44 +01:00
baldurk cc52e31657 Add overload to search array with a different type without casting
* Provided a compatible operator== overload exists, this can still be used to
  search the array.
2024-04-10 14:47:52 +01:00
baldurk 7fdff69935 Fully reset pipeline view objects when unbound 2024-04-10 14:40:57 +01:00
baldurk 1fb29ce97d Explicitly build with C++14 everywhere
* This doesn't change our minimum specs as we already required GCC 5, clang 3.4,
  which fully support C++14. Interestingly only VS2015 is the odd one out but we
  don't rely on any features from C++14 that it doesn't support.
2024-04-10 14:38:05 +01:00
Jake Turner 922ef9814f Stop crash in BufferViewer if buffer size is less than fixed length
i.e. a zero sized buffer
2024-04-10 10:29:06 +01:00
Jake Turner f3c9074a73 Fix out of bounds read of "&array[0]" (use array.data()) 2024-04-10 08:20:56 +01:00
Jake Turner 3a8fecf08e Prevent Shader Editor tooltip showing multiple "(F5)" 2024-04-10 08:20:56 +01:00
William Pearson ec74c13465 Fix typo in AndroidAPKInstallFailed message
This message can be seen if the USB cable connecting the device is
removed while the `adb install` command is running. (I ran into this
by accident due to a low-quality cable.)

The previous message was this:

> Failed to install Android remote server for unknown reasons: Couldn't install APK(s). stderr: adb.exe: device '00000a740f4e6d93' not found
> .
>
> lease check that your device is connected and accessible to adb, and that installing APKs over USB is allowed.

This does also include a newline before a period, which looks a bit
strange but I don't see a quick fix for that while keeping stderr,
and the stderr output is fairly useful.
2024-04-09 09:45:14 +01:00
baldurk 0795c75246 Recursively delete all command buffer nodes to avoid leak 2024-04-08 11:47:25 +01:00
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