nvk: Take depth image layer counts from the VkRenderingInfo
Otherwise OOB layers may render to the wrong layer in the depth image.
While we're here, add the same layer count asserts for color images.
Fixes: 9345b95346 ("nvk: Bind 3D depth/stencil images as 2D arrays")
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31033>
This commit is contained in:
committed by
Marge Bot
parent
d7d0287237
commit
e533484d06
@@ -836,9 +836,11 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
||||
addr += nil_image_level_z_offset_B(nil_image,
|
||||
iview->vk.base_mip_level,
|
||||
iview->vk.base_array_layer);
|
||||
assert(layer_count <= iview->vk.extent.depth);
|
||||
} else {
|
||||
addr += iview->vk.base_array_layer *
|
||||
(uint64_t)nil_image->array_stride_B;
|
||||
assert(layer_count <= iview->vk.layer_count);
|
||||
}
|
||||
|
||||
P_MTHD(p, NV9097, SET_COLOR_TARGET_A(i));
|
||||
@@ -949,7 +951,6 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
||||
uint64_t addr = nvk_image_base_address(image, ip);
|
||||
uint32_t mip_level = iview->vk.base_mip_level;
|
||||
uint32_t base_array_layer = iview->vk.base_array_layer;
|
||||
uint32_t layer_count = iview->vk.layer_count;
|
||||
|
||||
if (nil_image.dim == NIL_IMAGE_DIM_3D) {
|
||||
uint64_t level_offset_B;
|
||||
@@ -958,7 +959,9 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
||||
addr += level_offset_B;
|
||||
mip_level = 0;
|
||||
base_array_layer = 0;
|
||||
layer_count = iview->vk.extent.depth;
|
||||
assert(layer_count <= iview->vk.extent.depth);
|
||||
} else {
|
||||
assert(layer_count <= iview->vk.layer_count);
|
||||
}
|
||||
|
||||
const struct nil_image_level *level = &nil_image.levels[mip_level];
|
||||
|
||||
Reference in New Issue
Block a user