anv: Fix a harmless overflow warning
[mesa.git] / src / intel / vulkan / anv_meta_clear.c
index eb4e56984c35659388fdb5d423f4c5870fdf63ad..fe750c859f8f2117eeae37963128fb7e528286c9 100644 (file)
@@ -697,7 +697,6 @@ void
 anv_cmd_buffer_clear_subpass(struct anv_cmd_buffer *cmd_buffer)
 {
    struct anv_cmd_state *cmd_state = &cmd_buffer->state;
-   struct anv_framebuffer *fb = cmd_buffer->state.framebuffer;
    struct anv_meta_saved_state saved_state;
 
    if (!subpass_needs_clear(cmd_buffer))
@@ -709,10 +708,7 @@ anv_cmd_buffer_clear_subpass(struct anv_cmd_buffer *cmd_buffer)
       anv_finishme("clearing multi-layer framebuffer");
 
    VkClearRect clear_rect = {
-      .rect = {
-         .offset = { 0, 0 },
-         .extent = { fb->width, fb->height },
-      },
+      .rect = cmd_state->render_area,
       .baseArrayLayer = 0,
       .layerCount = 1, /* FINISHME: clear multi-layer framebuffer */
    };
@@ -765,9 +761,11 @@ anv_cmd_clear_image(struct anv_cmd_buffer *cmd_buffer,
 
    for (uint32_t r = 0; r < range_count; r++) {
       const VkImageSubresourceRange *range = &ranges[r];
-
       for (uint32_t l = 0; l < anv_get_levelCount(image, range); ++l) {
-         for (uint32_t s = 0; s < anv_get_layerCount(image, range); ++s) {
+         const uint32_t layer_count = image->type == VK_IMAGE_TYPE_3D ?
+                                      anv_minify(image->extent.depth, l) :
+                                      anv_get_layerCount(image, range);
+         for (uint32_t s = 0; s < layer_count; ++s) {
             struct anv_image_view iview;
             anv_image_view_init(&iview, cmd_buffer->device,
                &(VkImageViewCreateInfo) {