mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Explicitly set array layer selection value to 0 in D3D shader debugging
* This value should be ignored, so may contain something else from the register that we need to remove.
This commit is contained in:
@@ -1050,6 +1050,8 @@ bool D3D11DebugAPIWrapper::CalculateSampleGather(
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_C == DEBUG_SAMPLE_TEX_SAMPLE_C,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_D == DEBUG_SAMPLE_TEX_SAMPLE_D,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_C_LZ == DEBUG_SAMPLE_TEX_SAMPLE_C_LZ,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_GATHER4 == DEBUG_SAMPLE_TEX_GATHER4,
|
||||
@@ -1110,6 +1112,15 @@ bool D3D11DebugAPIWrapper::CalculateSampleGather(
|
||||
}
|
||||
}
|
||||
|
||||
// set array slice selection to 0 if the resource is declared non-arrayed
|
||||
|
||||
if(resourceData.dim == RESOURCE_DIMENSION_TEXTURE1D)
|
||||
uv.value.f32v[1] = 0.0f;
|
||||
else if(resourceData.dim == RESOURCE_DIMENSION_TEXTURE2D ||
|
||||
resourceData.dim == RESOURCE_DIMENSION_TEXTURE2DMS ||
|
||||
resourceData.dim == RESOURCE_DIMENSION_TEXTURECUBE)
|
||||
uv.value.f32v[2] = 0.0f;
|
||||
|
||||
DebugSampleOperation cbufferData = {};
|
||||
|
||||
memcpy(&cbufferData.debugSampleUV, uv.value.u32v.data(), sizeof(Vec4f));
|
||||
|
||||
@@ -1117,6 +1117,8 @@ bool D3D12DebugAPIWrapper::CalculateSampleGather(
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_C == DEBUG_SAMPLE_TEX_SAMPLE_C,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_D == DEBUG_SAMPLE_TEX_SAMPLE_D,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_SAMPLE_C_LZ == DEBUG_SAMPLE_TEX_SAMPLE_C_LZ,
|
||||
"Opcode enum doesn't match shader define");
|
||||
RDCCOMPILE_ASSERT((int)DXBCBytecode::OPCODE_GATHER4 == DEBUG_SAMPLE_TEX_GATHER4,
|
||||
@@ -1177,6 +1179,15 @@ bool D3D12DebugAPIWrapper::CalculateSampleGather(
|
||||
}
|
||||
}
|
||||
|
||||
// set array slice selection to 0 if the resource is declared non-arrayed
|
||||
|
||||
if(resourceData.dim == RESOURCE_DIMENSION_TEXTURE1D)
|
||||
uv.value.f32v[1] = 0.0f;
|
||||
else if(resourceData.dim == RESOURCE_DIMENSION_TEXTURE2D ||
|
||||
resourceData.dim == RESOURCE_DIMENSION_TEXTURE2DMS ||
|
||||
resourceData.dim == RESOURCE_DIMENSION_TEXTURECUBE)
|
||||
uv.value.f32v[2] = 0.0f;
|
||||
|
||||
DebugSampleOperation cbufferData = {};
|
||||
|
||||
memcpy(&cbufferData.debugSampleUV, uv.value.u32v.data(), sizeof(Vec4f));
|
||||
|
||||
Reference in New Issue
Block a user