Skip to content

Commit 7277d5d

Browse files
committed
Support pixel history over a specific mip/array slice only
1 parent 6bb8ebe commit 7277d5d

16 files changed

Lines changed: 211 additions & 43 deletions

renderdoc/api/replay/renderdoc_replay.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetResolve(ReplayRen
156156
extern "C" RENDERDOC_API ShaderReflection* RENDERDOC_CC ReplayRenderer_GetShaderDetails(ReplayRenderer *rend, ResourceId shader);
157157
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetDebugMessages(ReplayRenderer *rend, rdctype::array<DebugMessage> *msgs);
158158

159-
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_PixelHistory(ReplayRenderer *rend, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx, rdctype::array<PixelModification> *history);
159+
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_PixelHistory(ReplayRenderer *rend, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx, rdctype::array<PixelModification> *history);
160160
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_DebugVertex(ReplayRenderer *rend, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset, ShaderDebugTrace *trace);
161161
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_DebugPixel(ReplayRenderer *rend, uint32_t x, uint32_t y, uint32_t sample, uint32_t primitive, ShaderDebugTrace *trace);
162162
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_DebugThread(ReplayRenderer *rend, uint32_t groupid[3], uint32_t threadid[3], ShaderDebugTrace *trace);

renderdoc/core/image_viewer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ class ImageViewer : public IReplayDriver
129129
void InitCallstackResolver() {}
130130
Callstack::StackResolver *GetCallstackResolver() { return NULL; }
131131
void FreeTargetResource(ResourceId id) {}
132-
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx)
132+
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx)
133133
{ return vector<PixelModification>(); }
134134
ShaderDebugTrace DebugVertex(uint32_t frameID, uint32_t eventID, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset)
135135
{ ShaderDebugTrace ret; RDCEraseEl(ret); return ret; }

renderdoc/core/replay_proxy.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@ bool ProxySerialiser::Tick()
11431143
RenderOverlay(ResourceId(), eTexOverlay_None, 0, 0, vector<uint32_t>());
11441144
break;
11451145
case eCommand_PixelHistory:
1146-
PixelHistory(0, vector<EventUsage>(), ResourceId(), 0, 0, 0);
1146+
PixelHistory(0, vector<EventUsage>(), ResourceId(), 0, 0, 0, 0, 0);
11471147
break;
11481148
case eCommand_DebugVertex:
11491149
DebugVertex(0, 0, 0, 0, 0, 0, 0);
@@ -1882,7 +1882,7 @@ void ProxySerialiser::RemoveReplacement(ResourceId id)
18821882
}
18831883
}
18841884

1885-
vector<PixelModification> ProxySerialiser::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx)
1885+
vector<PixelModification> ProxySerialiser::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx)
18861886
{
18871887
vector<PixelModification> ret;
18881888

@@ -1891,11 +1891,13 @@ vector<PixelModification> ProxySerialiser::PixelHistory(uint32_t frameID, vector
18911891
m_ToReplaySerialiser->Serialise("", target);
18921892
m_ToReplaySerialiser->Serialise("", x);
18931893
m_ToReplaySerialiser->Serialise("", y);
1894+
m_ToReplaySerialiser->Serialise("", slice);
1895+
m_ToReplaySerialiser->Serialise("", mip);
18941896
m_ToReplaySerialiser->Serialise("", sampleIdx);
18951897

18961898
if(m_ReplayHost)
18971899
{
1898-
ret = m_Remote->PixelHistory(frameID, events, target, x, y, sampleIdx);
1900+
ret = m_Remote->PixelHistory(frameID, events, target, x, y, slice, mip, sampleIdx);
18991901
}
19001902
else
19011903
{

renderdoc/core/replay_proxy.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ class ProxySerialiser : public IReplayDriver, Callstack::StackResolver
339339

340340
void FreeTargetResource(ResourceId id);
341341

342-
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx);
342+
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx);
343343
ShaderDebugTrace DebugVertex(uint32_t frameID, uint32_t eventID, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset);
344344
ShaderDebugTrace DebugPixel(uint32_t frameID, uint32_t eventID, uint32_t x, uint32_t y, uint32_t sample, uint32_t primitive);
345345
ShaderDebugTrace DebugThread(uint32_t frameID, uint32_t eventID, uint32_t groupid[3], uint32_t threadid[3]);

renderdoc/data/hlsl/debugdisplay.hlsl

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -415,13 +415,12 @@ float4 RENDERDOC_QOResolvePS(float4 vpos : SV_POSITION) : SV_Target0
415415

416416
cbuffer cb0 : register(b0)
417417
{
418-
uint3 src_coord;
418+
uint4 src_coord; // x, y, mip/sample, slice
419+
419420
bool multisampled;
420-
421421
bool is_float;
422422
bool is_uint;
423423
bool is_int;
424-
uint padding;
425424
};
426425

427426
cbuffer cb1 : register(b1)
@@ -464,51 +463,51 @@ void RENDERDOC_PixelHistoryCopyPixel()
464463
{
465464
if(copy_depth || copy_stencil)
466465
{
467-
float2 val = float2(copyin_depth_ms.sample[src_coord.z][uint3(src_coord.xy, 0)].r, -1.0f);
466+
float2 val = float2(copyin_depth_ms.sample[src_coord.z][uint3(src_coord.xy, src_coord.w)].r, -1.0f);
468467

469-
if(copy_stencil) val.g = (float)copyin_stencil_ms.sample[src_coord.z][uint3(src_coord.xy, 0)].g;
468+
if(copy_stencil) val.g = (float)copyin_stencil_ms.sample[src_coord.z][uint3(src_coord.xy, src_coord.w)].g;
470469

471470
copyout_depth[dst_coord.xy].rg = val;
472471
}
473472
else
474473
{
475474
if(is_float)
476475
{
477-
copyout_float[dst_coord.xy] = copyin_float_ms.sample[src_coord.z][uint3(src_coord.xy, 0)];
476+
copyout_float[dst_coord.xy] = copyin_float_ms.sample[src_coord.z][uint3(src_coord.xy, src_coord.w)];
478477
}
479478
else if(is_uint)
480479
{
481-
copyout_uint[dst_coord.xy] = copyin_uint_ms.sample[src_coord.z][uint3(src_coord.xy, 0)];
480+
copyout_uint[dst_coord.xy] = copyin_uint_ms.sample[src_coord.z][uint3(src_coord.xy, src_coord.w)];
482481
}
483482
else if(is_int)
484483
{
485-
copyout_int[dst_coord.xy] = copyin_int_ms.sample[src_coord.z][uint3(src_coord.xy, 0)];
484+
copyout_int[dst_coord.xy] = copyin_int_ms.sample[src_coord.z][uint3(src_coord.xy, src_coord.w)];
486485
}
487486
}
488487
}
489488
else
490489
{
491490
if(copy_depth || copy_stencil)
492491
{
493-
float2 val = float2(copyin_depth[uint3(src_coord.xy, 0)].r, -1.0f);
492+
float2 val = float2(copyin_depth.mips[src_coord.z][uint3(src_coord.xy, src_coord.w)].r, -1.0f);
494493

495-
if(copy_stencil) val.g = (float)copyin_stencil[uint3(src_coord.xy, 0)].g;
494+
if(copy_stencil) val.g = (float)copyin_stencil.mips[src_coord.z][uint3(src_coord.xy, src_coord.w)].g;
496495

497496
copyout_depth[dst_coord.xy].rg = val;
498497
}
499498
else
500499
{
501500
if(is_float)
502501
{
503-
copyout_float[dst_coord.xy] = copyin_float[uint3(src_coord.xy, 0)];
502+
copyout_float[dst_coord.xy] = copyin_float.mips[src_coord.z][uint3(src_coord.xy, src_coord.w)];
504503
}
505504
else if(is_uint)
506505
{
507-
copyout_uint[dst_coord.xy] = copyin_uint[uint3(src_coord.xy, 0)];
506+
copyout_uint[dst_coord.xy] = copyin_uint.mips[src_coord.z][uint3(src_coord.xy, src_coord.w)];
508507
}
509508
else if(is_int)
510509
{
511-
copyout_int[dst_coord.xy] = copyin_int[uint3(src_coord.xy, 0)];
510+
copyout_int[dst_coord.xy] = copyin_int.mips[src_coord.z][uint3(src_coord.xy, src_coord.w)];
512511
}
513512
}
514513
}

renderdoc/driver/d3d11/d3d11_analyse.cpp

Lines changed: 168 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3305,6 +3305,8 @@ struct CopyPixelParams
33053305
bool uintTex;
33063306
bool intTex;
33073307

3308+
UINT subres;
3309+
33083310
bool depthcopy; // are we copying depth or colour
33093311
bool depthbound; // if copying depth, was any depth bound (or should we write <-1,-1> marker)
33103312

@@ -3324,7 +3326,7 @@ void D3D11DebugManager::PixelHistoryCopyPixel(CopyPixelParams &p, uint32_t x, ui
33243326
{
33253327
// perform a subresource copy if the real source tex couldn't be directly bound as SRV
33263328
if(p.sourceTex != p.srvTex && p.sourceTex && p.srvTex)
3327-
m_pImmediateContext->CopySubresourceRegion(p.srvTex, 0, 0, 0, 0, p.sourceTex, 0, NULL);
3329+
m_pImmediateContext->CopySubresourceRegion(p.srvTex, p.subres, 0, 0, 0, p.sourceTex, p.subres, NULL);
33283330

33293331
ID3D11RenderTargetView* tmpViews[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT] = {0};
33303332
m_pImmediateContext->OMGetRenderTargets(D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT, tmpViews, NULL);
@@ -3428,7 +3430,7 @@ void D3D11DebugManager::PixelHistoryCopyPixel(CopyPixelParams &p, uint32_t x, ui
34283430
for(size_t i=0; i < ARRAY_COUNT(curCSUAV); i++) SAFE_RELEASE(curCSUAV[i]);
34293431
}
34303432

3431-
vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx)
3433+
vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx)
34323434
{
34333435
vector<PixelModification> history;
34343436

@@ -3636,8 +3638,8 @@ vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vect
36363638
D3D11_TEXTURE2D_DESC depthCopyD24S8Desc = {
36373639
details.texWidth,
36383640
details.texHeight,
3639-
1U,
3640-
1U,
3641+
details.texMips,
3642+
details.texArraySize,
36413643
DXGI_FORMAT_R24G8_TYPELESS,
36423644
{ details.sampleCount, details.sampleQuality },
36433645
D3D11_USAGE_DEFAULT,
@@ -3679,13 +3681,12 @@ vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vect
36793681
}
36803682

36813683
uint32_t srcxyData[8] = {
3682-
x, y, sampleIdx,
3684+
x, y, multisampled ? sampleIdx : mip, slice,
3685+
36833686
uint32_t(multisampled),
3684-
36853687
uint32_t(floatTex),
36863688
uint32_t(uintTex),
36873689
uint32_t(intTex),
3688-
0,
36893690
};
36903691

36913692
ID3D11Buffer *srcxyCBuf = MakeCBuffer(sizeof(srcxyData));
@@ -3729,6 +3730,7 @@ vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vect
37293730
colourCopyParams.intTex = intTex;
37303731
colourCopyParams.srcxyCBuf = srcxyCBuf;
37313732
colourCopyParams.storexyCBuf = storexyCBuf;
3733+
colourCopyParams.subres = details.texArraySize * slice + mip;
37323734

37333735
CopyPixelParams depthCopyParams = colourCopyParams;
37343736

@@ -4442,6 +4444,165 @@ vector<PixelModification> D3D11DebugManager::PixelHistory(uint32_t frameID, vect
44424444

44434445
m_WrappedDevice->ReplayLog(frameID, 0, events[i].eventID, eReplay_WithoutDraw);
44444446

4447+
{
4448+
ID3D11RenderTargetView* tmpViews[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT] = {0};
4449+
m_pImmediateContext->OMGetRenderTargets(D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT, tmpViews, NULL);
4450+
4451+
uint32_t UAVStartSlot = 0;
4452+
for(int v=0; v < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; v++)
4453+
{
4454+
if(tmpViews[v] != NULL)
4455+
{
4456+
UAVStartSlot = v+1;
4457+
SAFE_RELEASE(tmpViews[v]);
4458+
}
4459+
}
4460+
4461+
ID3D11RenderTargetView* curRTVs[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT] = {0};
4462+
ID3D11UnorderedAccessView* curUAVs[D3D11_1_UAV_SLOT_COUNT] = {0};
4463+
ID3D11DepthStencilView *curDSV = NULL;
4464+
const UINT numUAVs = m_WrappedContext->GetReal1() ? D3D11_1_UAV_SLOT_COUNT : D3D11_PS_CS_UAV_REGISTER_COUNT;
4465+
m_pImmediateContext->OMGetRenderTargetsAndUnorderedAccessViews(UAVStartSlot, curRTVs, &curDSV,
4466+
UAVStartSlot, numUAVs-UAVStartSlot, curUAVs);
4467+
4468+
// check that this selected mip/slice is the one being rendered to here
4469+
if(events[i].usage == eUsage_ColourTarget)
4470+
{
4471+
bool used = false;
4472+
for(int i=0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; i++)
4473+
{
4474+
if(curRTVs[i])
4475+
{
4476+
ID3D11Resource *res = NULL;
4477+
curRTVs[i]->GetResource(&res);
4478+
4479+
if(res != targetres)
4480+
continue;
4481+
4482+
SAFE_RELEASE(res);
4483+
4484+
D3D11_RENDER_TARGET_VIEW_DESC desc;
4485+
curRTVs[i]->GetDesc(&desc);
4486+
if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE1D &&
4487+
desc.Texture1D.MipSlice == mip)
4488+
{
4489+
used = true;
4490+
break;
4491+
}
4492+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE1DARRAY &&
4493+
desc.Texture1DArray.MipSlice == mip &&
4494+
desc.Texture1DArray.FirstArraySlice <= slice &&
4495+
desc.Texture1DArray.FirstArraySlice+desc.Texture1DArray.ArraySize > slice)
4496+
{
4497+
used = true;
4498+
break;
4499+
}
4500+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE2D &&
4501+
desc.Texture2D.MipSlice == mip)
4502+
{
4503+
used = true;
4504+
break;
4505+
}
4506+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE2DARRAY &&
4507+
desc.Texture2DArray.MipSlice == mip &&
4508+
desc.Texture2DArray.FirstArraySlice <= slice &&
4509+
desc.Texture2DArray.FirstArraySlice+desc.Texture2DArray.ArraySize > slice)
4510+
{
4511+
used = true;
4512+
break;
4513+
}
4514+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE2DMS)
4515+
{
4516+
used = true;
4517+
break;
4518+
}
4519+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY &&
4520+
desc.Texture2DMSArray.FirstArraySlice <= slice &&
4521+
desc.Texture2DMSArray.FirstArraySlice+desc.Texture2DMSArray.ArraySize > slice)
4522+
{
4523+
used = true;
4524+
break;
4525+
}
4526+
else if(desc.ViewDimension == D3D11_RTV_DIMENSION_TEXTURE3D &&
4527+
desc.Texture3D.MipSlice == mip &&
4528+
desc.Texture3D.FirstWSlice <= slice &&
4529+
desc.Texture3D.FirstWSlice+desc.Texture3D.WSize > slice)
4530+
{
4531+
used = true;
4532+
break;
4533+
}
4534+
}
4535+
}
4536+
if(!used) continue;
4537+
}
4538+
else if(events[i].usage == eUsage_DepthStencilTarget)
4539+
{
4540+
if(!curDSV) continue;
4541+
4542+
ID3D11Resource *res = NULL;
4543+
curDSV->GetResource(&res);
4544+
4545+
if(res != targetres)
4546+
continue;
4547+
4548+
SAFE_RELEASE(res);
4549+
4550+
D3D11_DEPTH_STENCIL_VIEW_DESC desc;
4551+
curDSV->GetDesc(&desc);
4552+
4553+
bool used = false;
4554+
4555+
if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE1D &&
4556+
desc.Texture1D.MipSlice == mip)
4557+
{
4558+
used = true;
4559+
break;
4560+
}
4561+
else if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE1DARRAY &&
4562+
desc.Texture1DArray.MipSlice == mip &&
4563+
desc.Texture1DArray.FirstArraySlice <= slice &&
4564+
desc.Texture1DArray.FirstArraySlice+desc.Texture1DArray.ArraySize > slice)
4565+
{
4566+
used = true;
4567+
break;
4568+
}
4569+
else if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE2D &&
4570+
desc.Texture2D.MipSlice == mip)
4571+
{
4572+
used = true;
4573+
break;
4574+
}
4575+
else if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE2DARRAY &&
4576+
desc.Texture2DArray.MipSlice == mip &&
4577+
desc.Texture2DArray.FirstArraySlice <= slice &&
4578+
desc.Texture2DArray.FirstArraySlice+desc.Texture2DArray.ArraySize > slice)
4579+
{
4580+
used = true;
4581+
break;
4582+
}
4583+
else if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE2DMS)
4584+
{
4585+
used = true;
4586+
break;
4587+
}
4588+
else if(desc.ViewDimension == D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY &&
4589+
desc.Texture2DMSArray.FirstArraySlice <= slice &&
4590+
desc.Texture2DMSArray.FirstArraySlice+desc.Texture2DMSArray.ArraySize > slice)
4591+
{
4592+
used = true;
4593+
break;
4594+
}
4595+
4596+
if(!used) continue;
4597+
}
4598+
4599+
for(int i=0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; i++)
4600+
SAFE_RELEASE(curRTVs[i]);
4601+
for(int i=0; i < D3D11_1_UAV_SLOT_COUNT; i++)
4602+
SAFE_RELEASE(curUAVs[i]);
4603+
SAFE_RELEASE(curDSV);
4604+
}
4605+
44454606
curNumScissors = curNumViews = 16;
44464607
m_pImmediateContext->RSGetViewports(&curNumViews, curViewports);
44474608
m_pImmediateContext->RSGetScissorRects(&curNumScissors, curScissors);

renderdoc/driver/d3d11/d3d11_debug.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class D3D11DebugManager
166166

167167
void RenderHighlightBox(float w, float h, float scale);
168168

169-
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx);
169+
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx);
170170
ShaderDebugTrace DebugVertex(uint32_t frameID, uint32_t eventID, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset);
171171
ShaderDebugTrace DebugPixel(uint32_t frameID, uint32_t eventID, uint32_t x, uint32_t y, uint32_t sample, uint32_t primitive);
172172
ShaderDebugTrace DebugThread(uint32_t frameID, uint32_t eventID, uint32_t groupid[3], uint32_t threadid[3]);

renderdoc/driver/d3d11/d3d11_replay.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,9 +1354,9 @@ void D3D11Replay::FillCBufferVariables(ResourceId shader, uint32_t cbufSlot, vec
13541354
return;
13551355
}
13561356

1357-
vector<PixelModification> D3D11Replay::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx)
1357+
vector<PixelModification> D3D11Replay::PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx)
13581358
{
1359-
return m_pDevice->GetDebugManager()->PixelHistory(frameID, events, target, x, y, sampleIdx);
1359+
return m_pDevice->GetDebugManager()->PixelHistory(frameID, events, target, x, y, slice, mip, sampleIdx);
13601360
}
13611361

13621362
ShaderDebugTrace D3D11Replay::DebugVertex(uint32_t frameID, uint32_t eventID, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset)

renderdoc/driver/d3d11/d3d11_replay.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class D3D11Replay : public IReplayDriver
116116

117117
void FillCBufferVariables(ResourceId shader, uint32_t cbufSlot, vector<ShaderVariable> &outvars, const vector<byte> &data);
118118

119-
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t sampleIdx);
119+
vector<PixelModification> PixelHistory(uint32_t frameID, vector<EventUsage> events, ResourceId target, uint32_t x, uint32_t y, uint32_t slice, uint32_t mip, uint32_t sampleIdx);
120120
ShaderDebugTrace DebugVertex(uint32_t frameID, uint32_t eventID, uint32_t vertid, uint32_t instid, uint32_t idx, uint32_t instOffset, uint32_t vertOffset);
121121
ShaderDebugTrace DebugPixel(uint32_t frameID, uint32_t eventID, uint32_t x, uint32_t y, uint32_t sample, uint32_t primitive);
122122
ShaderDebugTrace DebugThread(uint32_t frameID, uint32_t eventID, uint32_t groupid[3], uint32_t threadid[3]);

0 commit comments

Comments
 (0)