Fix handling of overlays when rendering to mips

* Also removes some unnecessary variations in behaviour between APIs
This commit is contained in:
baldurk
2020-03-12 15:42:54 +00:00
parent 02184b07e7
commit 954e29df9e
14 changed files with 207 additions and 179 deletions
+11 -9
View File
@@ -1054,9 +1054,10 @@ MeshFormat ReplayProxy::GetPostVSBuffers(uint32_t eventId, uint32_t instID, uint
template <typename ParamSerialiser, typename ReturnSerialiser>
ResourceId ReplayProxy::Proxied_RenderOverlay(ParamSerialiser &paramser, ReturnSerialiser &retser,
ResourceId texid, CompType typeCast,
FloatVector clearCol, DebugOverlay overlay,
uint32_t eventId, const rdcarray<uint32_t> &passEvents)
ResourceId texid, const Subresource &sub,
CompType typeCast, FloatVector clearCol,
DebugOverlay overlay, uint32_t eventId,
const rdcarray<uint32_t> &passEvents)
{
const ReplayProxyPacket expectedPacket = eReplayProxy_RenderOverlay;
ReplayProxyPacket packet = eReplayProxy_RenderOverlay;
@@ -1065,6 +1066,7 @@ ResourceId ReplayProxy::Proxied_RenderOverlay(ParamSerialiser &paramser, ReturnS
{
BEGIN_PARAMS();
SERIALISE_ELEMENT(texid);
SERIALISE_ELEMENT(sub);
SERIALISE_ELEMENT(typeCast);
SERIALISE_ELEMENT(overlay);
SERIALISE_ELEMENT(clearCol);
@@ -1076,7 +1078,7 @@ ResourceId ReplayProxy::Proxied_RenderOverlay(ParamSerialiser &paramser, ReturnS
{
REMOTE_EXECUTION();
if(paramser.IsReading() && !paramser.IsErrored() && !m_IsErrored)
ret = m_Remote->RenderOverlay(texid, typeCast, clearCol, overlay, eventId, passEvents);
ret = m_Remote->RenderOverlay(texid, sub, typeCast, clearCol, overlay, eventId, passEvents);
}
SERIALISE_RETURN(ret);
@@ -1084,11 +1086,11 @@ ResourceId ReplayProxy::Proxied_RenderOverlay(ParamSerialiser &paramser, ReturnS
return ret;
}
ResourceId ReplayProxy::RenderOverlay(ResourceId texid, CompType typeCast, FloatVector clearCol,
DebugOverlay overlay, uint32_t eventId,
ResourceId ReplayProxy::RenderOverlay(ResourceId texid, const Subresource &sub, CompType typeCast,
FloatVector clearCol, DebugOverlay overlay, uint32_t eventId,
const rdcarray<uint32_t> &passEvents)
{
PROXY_FUNCTION(RenderOverlay, texid, typeCast, clearCol, overlay, eventId, passEvents);
PROXY_FUNCTION(RenderOverlay, texid, sub, typeCast, clearCol, overlay, eventId, passEvents);
}
template <typename ParamSerialiser, typename ReturnSerialiser>
@@ -2786,8 +2788,8 @@ bool ReplayProxy::Tick(int type)
}
case eReplayProxy_ContinueDebug: ContinueDebug(NULL); break;
case eReplayProxy_RenderOverlay:
RenderOverlay(ResourceId(), CompType::Typeless, FloatVector(), DebugOverlay::NoOverlay, 0,
rdcarray<uint32_t>());
RenderOverlay(ResourceId(), Subresource(), CompType::Typeless, FloatVector(),
DebugOverlay::NoOverlay, 0, rdcarray<uint32_t>());
break;
case eReplayProxy_PixelHistory:
PixelHistory(rdcarray<EventUsage>(), ResourceId(), 0, 0, Subresource(), CompType::Typeless);