Added:
void Parse(const DXBC::Reflection *reflection);
void ParseReferences(const DXBC::Reflection *reflection);
const ResourceReference *GetResourceReference(const rdcstr &handleStr) const;
rdcstr GetResourceReferenceName(ResourceClass resClass, const BindingSlot &slot) const;
Changed:
void FetchEntryPointInterfaces(rdcarray<EntryPointInterface> &entryPointInterfaces);
to
void FillEntryPointInterfaces(); and store the entry point interface data in new member variable "m_EntryPointInterfaces"
To get the SSA names for handles that are referenced by createHandle calls
Added DoStringise() for DXIL::ResourceClass
* These resources are destroyed on capture shutdown and possibly out of order
between ASs and ASBs. The ownership tracking is not needed on replay so only
do this during capture.
Added function ShaderObject::Init to initialize VulkanCreationInfo::ShaderObject, and associated shader module.
Co-authored-by: James Sumihiro <james.sumihiro@ntd.nintendo.com>
renderdoc/driver/d3d12/d3d12_dxil_debug.[h,cpp]
Will contain replay helper functions for DXIL debugger including the wrapper for D3D12 API interaction i.e. "DXILDebug::D3D12APIWrapper"
Before, RenderDoc would treat these incomplete pipeline libraries as if
they were complete pipelines, and thus attempt to create pipelines with
incomplete data, producing several validation errors and on some devices
crashes.
For instance, a pipeline library that only contains a vertex or fragment
shader but not input assembly state would use invalid input assembly
state (specifically, VulkanShaderCache::MakeGraphicsPipelineInfo would
use the topology value from VulkanCreationInfo::Pipeline, which is set
to VK_PRIMITIVE_TOPOLOGY_MAX_ENUM (0x7fffffff) if the pipeline has no
input assembly state by VulkanCreationInfo::Pipeline::Init).
Additionally, those pipeline libraries were treated as complete graphics
pipelines, not libraries, as VulkanShaderCache::MakeGraphicsPipelineInfo
removes VK_PIPELINE_CREATE_LIBRARY_BIT_KHR and no
VkGraphicsPipelineLibraryCreateInfoEXT was added to the pNext chain.
RenderDoc already merges the pipeline libraries into complete graphics
pipelines, so there is no reason to recreate the libraries with modified
shaders.
Added logic to return a fake UUID for shader binaries if vkGetShaderBinaryDataEXT is called.
Co-authored-by: James Sumihiro <james.sumihiro@ntd.nintendo.com>
* Most of these - all but a clone - require us to wait for the GPU execution to
finish to get the size of the resulting AS to update our tracking. We issue a
fence from the queue at submission time and then leave the RT manager to check
for updates on each submission to get the latest information.
* This will be needed for copies where the size may not be known on the CPU -
currently for AS builds we know the size directly.
* We also only store the size of an AS not the whole pre-build info since we
don't need the scratch data and it won't be available in full for copies.
DXBC and DXIL Shader Debugger's inherit from "DXBCContainerDebugger : public ShaderDebugger".
"DXBCContainerDebugger" has member variable "isDXIL" to be able to choose if DXIL or DXBC ShaderDebugger is active and allow the correct cast from "ShaderDebugger" to be made.
Added stub of DXILDebug::Debugger in new files "drivers/shaders/dxil/dxil_debug.[h,cpp]"