Expose queries for descriptor stores and D3D12 root signature range

* This will allow a UI viewer or consumer of the replay API to more easily query
  'all' descriptors for a given store.
This commit is contained in:
baldurk
2024-04-10 18:58:53 +01:00
parent 9a18e871e5
commit 153cd2aa16
26 changed files with 689 additions and 75 deletions
+1
View File
@@ -250,6 +250,7 @@ public:
void RenderMesh(uint32_t eventId, const rdcarray<MeshFormat> &secondaryDraws, const MeshDisplay &cfg)
{
}
rdcarray<DescriptorStoreDescription> GetDescriptorStores() { return {}; }
rdcarray<BufferDescription> GetBuffers() { return {}; }
rdcarray<DebugMessage> GetDebugMessages() { return rdcarray<DebugMessage>(); }
BufferDescription GetBuffer(ResourceId id)
+31
View File
@@ -102,6 +102,7 @@ rdcstr DoStringise(const ReplayProxyPacket &el)
STRINGISE_ENUM_NAMED(eReplayProxy_GetSamplerDescriptors, "GetSamplerDescriptors");
STRINGISE_ENUM_NAMED(eReplayProxy_GetDescriptorAccess, "GetDescriptorAccess");
STRINGISE_ENUM_NAMED(eReplayProxy_GetDescriptorLocations, "GetDescriptorLocations");
STRINGISE_ENUM_NAMED(eReplayProxy_GetDescriptorStores, "GetDescriptorStores");
}
END_ENUM_STRINGISE();
}
@@ -530,6 +531,35 @@ TextureDescription ReplayProxy::GetTexture(ResourceId id)
PROXY_FUNCTION(GetTexture, id);
}
template <typename ParamSerialiser, typename ReturnSerialiser>
rdcarray<DescriptorStoreDescription> ReplayProxy::Proxied_GetDescriptorStores(
ParamSerialiser &paramser, ReturnSerialiser &retser)
{
const ReplayProxyPacket expectedPacket = eReplayProxy_GetDescriptorStores;
ReplayProxyPacket packet = eReplayProxy_GetDescriptorStores;
rdcarray<DescriptorStoreDescription> ret;
{
BEGIN_PARAMS();
END_PARAMS();
}
{
REMOTE_EXECUTION();
if(paramser.IsReading() && !paramser.IsErrored() && !m_IsErrored)
ret = m_Remote->GetDescriptorStores();
}
SERIALISE_RETURN(ret);
return ret;
}
rdcarray<DescriptorStoreDescription> ReplayProxy::GetDescriptorStores()
{
PROXY_FUNCTION(GetDescriptorStores);
}
template <typename ParamSerialiser, typename ReturnSerialiser>
rdcarray<BufferDescription> ReplayProxy::Proxied_GetBuffers(ParamSerialiser &paramser,
ReturnSerialiser &retser)
@@ -3046,6 +3076,7 @@ bool ReplayProxy::Tick(int type)
case eReplayProxy_GetSamplerDescriptors: GetSamplerDescriptors(ResourceId(), {}); break;
case eReplayProxy_GetDescriptorAccess: GetDescriptorAccess(0); break;
case eReplayProxy_GetDescriptorLocations: GetDescriptorLocations(ResourceId(), {}); break;
case eReplayProxy_GetDescriptorStores: GetDescriptorStores(); break;
case eReplayProxy_GetUsage: GetUsage(ResourceId()); break;
case eReplayProxy_GetLiveID: GetLiveID(ResourceId()); break;
case eReplayProxy_GetFrameRecord: GetFrameRecord(); break;
+3
View File
@@ -110,6 +110,7 @@ enum ReplayProxyPacket
eReplayProxy_GetSamplerDescriptors,
eReplayProxy_GetDescriptorAccess,
eReplayProxy_GetDescriptorLocations,
eReplayProxy_GetDescriptorStores,
};
DECLARE_REFLECTION_ENUM(ReplayProxyPacket);
@@ -469,6 +470,8 @@ public:
IMPLEMENT_FUNCTION_PROXIED(rdcarray<ResourceDescription>, GetResources);
IMPLEMENT_FUNCTION_PROXIED(rdcarray<DescriptorStoreDescription>, GetDescriptorStores);
IMPLEMENT_FUNCTION_PROXIED(rdcarray<BufferDescription>, GetBuffers);
IMPLEMENT_FUNCTION_PROXIED(BufferDescription, GetBuffer, ResourceId id);