Commit 15bf1efc by Chris Forbes

Fix blitter clears of 2D views of 3D textures

This was stomping all over memory beyond the image. Bug: b/nnn Test: dEQP-VK.pipeline.render_to_image.core.* Change-Id: Ie8738da787ea98c0d6431970cf6301bd6b5b5323 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/30528Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent 4fe8eb31
......@@ -101,15 +101,29 @@ namespace sw
0, 0, // sWidth, sHeight
};
for(subresLayers.baseArrayLayer = subresourceRange.baseArrayLayer; subresLayers.baseArrayLayer <= lastLayer; subresLayers.baseArrayLayer++)
if (renderArea && dest->is3DSlice())
{
for(uint32_t depth = 0; depth < extent.depth; depth++)
// Reinterpret layers as depth slices
subresLayers.baseArrayLayer = 0;
subresLayers.layerCount = 1;
for (uint32_t depth = subresourceRange.baseArrayLayer; depth <= lastLayer; depth++)
{
data.dest = dest->getTexelPointer({ 0, 0, static_cast<int32_t>(depth) }, subresLayers);
data.dest = dest->getTexelPointer({0, 0, static_cast<int32_t>(depth)}, subresLayers);
blitFunction(&data);
}
}
else
{
for(subresLayers.baseArrayLayer = subresourceRange.baseArrayLayer; subresLayers.baseArrayLayer <= lastLayer; subresLayers.baseArrayLayer++)
{
for(uint32_t depth = 0; depth < extent.depth; depth++)
{
data.dest = dest->getTexelPointer({ 0, 0, static_cast<int32_t>(depth) }, subresLayers);
blitFunction(&data);
}
}
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment