From 7d843898e3fc06c8246e24713c7df89017eec33b Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 23 Jun 2016 11:20:07 +0200 Subject: [PATCH] For byte address buffers, convert element numbers to bytes. Refs #287 --- renderdoc/driver/shaders/dxbc/dxbc_debug.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/renderdoc/driver/shaders/dxbc/dxbc_debug.cpp b/renderdoc/driver/shaders/dxbc/dxbc_debug.cpp index 7344b2ba6..dbcb62408 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_debug.cpp +++ b/renderdoc/driver/shaders/dxbc/dxbc_debug.cpp @@ -2247,6 +2247,14 @@ State State::GetNext(GlobalState &global, State quad[4]) const uint32_t numElems = srv ? global.srvs[resIndex].numElements : global.uavs[resIndex].numElements; GlobalState::ViewFmt fmt = srv ? global.srvs[resIndex].format : global.uavs[resIndex].format; + // indexing for raw views is in bytes, but firstElement/numElements is in format-sized + // units. Multiply up by bytesize + if(op.operation == OPCODE_LD_RAW || op.operation == OPCODE_STORE_RAW) + { + offset *= fmt.byteWidth; + numElems *= fmt.byteWidth; + } + byte *data = srv ? &global.srvs[resIndex].data[0] : &global.uavs[resIndex].data[0]; bool texData = srv ? false : global.uavs[resIndex].tex; uint32_t rowPitch = srv ? 0 : global.uavs[resIndex].rowPitch;