* This supports capture and replay of mesh draws, shader editing with printf
support, overlays, and pixel shader debugging.
* Not supported yet include the mesh viewer and shader debugging.
* The enums are given after compute, to preserve indices for the normal vertex
pipeline.
* Mesh dispatches are considered a new action type, rather than being bundled
into the `Drawcall` type. This will allow them to be distinguished by API
backends as needed. The UI treats them as drawcalls
* We apply this universally even though it's not relevant to D3D11/GL. It means
a couple of empty array entries but it should not cause any significant
issues.
* Shader messages will be identified by group and thread as with compute
shaders. For mesh shaders there is an additional subdivision to identify them
by task group, since each task group can submit a grid of mesh groups.
* Triangle fans
* 16-bit types in shader declarations
* Trivial/non-wrapped new interface versions
* New mostly-ignorable enums: D3D12_COMMAND_LIST_TYPE_NONE,
D3D12_COMPARISON_FUNC_NONE
* Alpha constant blend factors
* New sampler filtering with anisotropic min/mag and point mip
* New ABGR4 format
* MSAA UAVs
* Allow SM6.7
Errors related to collecting NVIDIA hardware counters are now shown in the
"Errors and Warnings" window of the Renderdoc UI. Previously, these errors were
only visible in stderr. This includes errors for device compatibility, resource
availability, and insufficient privileges.
* This distinction unfortunately does not exist in SPIR-V so we have to carry
around this metadata ourselves. Rather than allowing free specification of
tools based on API, instead pretend that Vulkan and GL SPIR-V are separate
format, and duplicate all SPIR-V tools to handle "both" types. This allows
appropriate tool selection based on the encoding.
This adds the NVVulkanCounters class, which implements Vulkan counter
collection on NVIDIA hardware via the NVIDIA Nsight Perf SDK.
Some modifications are made to the NvPerfUtility headers in order to
use the Vulkan dispatch tables from RenderDoc.
On Windows, the VK_KHR_external_semaphore_win32 extension is required
for synchronization with the NvPerf "service pending GPU operations"
thread.
This adds the NVD3D12Counters class, which implements D3D12 counter
collection on NVIDIA hardware via the NVIDIA Nsight Perf SDK.
A helper class NVCounterEnumerator is added to provide functionality
common to NVIDIA counters for other graphics APIs.
Adds the macro NV_PERF_UTILITY_HIDE_VULKAN_SYMBOLS to NvPerfUtility, which
allows for passing Vulkan function pointers without linking with Vulkan symbols
that are not present in RenderDoc.
This change, along with changes in the GPA library, allows the user
to collect AMD counters from a Samsung Xclipse GPU. Previous to this,
the AMD counters could be collected only from GPUs with an AMD PCI
vendor ID.
Most of the changes are related to the fact that the Xclipse GPU has
a unique (Samsung) PCI vendor ID, but is ultimately an AMD
(RDNA2) derivative. So, we need the code to take the AMD path
while technically being its own (non-AMD) GPU.
* In this version the disassembly is no longer available from the driver via
this method. While it currently gives a normal error message, in future
versions it may start crashing so we block it now.
* This may break on drivers old enough to not recognise the first non-legacy
ASIC, but that is much rarer than new drivers that have dropped support for
the old ones.
This includes updated header files, which needed minor local tweaking to
remove an intermediate directory from the include path, and to disable
the <vulkan/vulkan.h> header from being included in gpu_perf_api_vk.h.
All entrypoints and some datatypes were renamed in the latest version,
but functionality remains the same.
Includes support for new AMD Radeon RX 6000 Series graphics cards.
* Newer nvenc seems to check that this device matches resource->GetDevice() for
passed in resources which is reasonable to want, so we unwrap it on the way
in.