anv: Use more temp vars in cmd_buffer_begin_subpass

This is a mostly cosmetic change but there is one subtle functional
issue:  If we ever render to a 3D depth image, we are now handling the
base layer and number of layers correctly.  I'm not sure rendering to 3D
depth is even allowed but we can theoretically handle it now.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6549>
This commit is contained in:
Jason Ekstrand
2020-07-07 14:35:18 -05:00
committed by Marge Bot
parent 7c92e413af
commit e9d5ec342d

View File

@@ -5115,11 +5115,11 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
VkImageLayout target_stencil_layout =
subpass->attachments[i].stencil_layout;
uint32_t level = iview->planes[0].isl.base_level;
uint32_t base_layer, layer_count;
if (image->type == VK_IMAGE_TYPE_3D) {
base_layer = 0;
layer_count = anv_minify(iview->image->extent.depth,
iview->planes[0].isl.base_level);
layer_count = anv_minify(iview->image->extent.depth, level);
} else {
base_layer = iview->planes[0].isl.base_array_layer;
layer_count = fb->layers;
@@ -5128,8 +5128,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
if (image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) {
assert(image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);
transition_color_buffer(cmd_buffer, image, VK_IMAGE_ASPECT_COLOR_BIT,
iview->planes[0].isl.base_level, 1,
base_layer, layer_count,
level, 1, base_layer, layer_count,
att_state->current_layout, target_layout);
att_state->aux_usage =
anv_layout_to_aux_usage(&cmd_buffer->device->info, image,
@@ -5151,8 +5150,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
if (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) {
transition_stencil_buffer(cmd_buffer, image,
iview->planes[0].isl.base_level, 1,
base_layer, layer_count,
level, 1, base_layer, layer_count,
att_state->current_stencil_layout,
target_stencil_layout);
}
@@ -5172,8 +5170,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
if (att_state->fast_clear &&
do_first_layer_clear(cmd_state, att_state)) {
/* We only support fast-clears on the first layer */
assert(iview->planes[0].isl.base_level == 0);
assert(iview->planes[0].isl.base_array_layer == 0);
assert(level == 0 && base_layer == 0);
union isl_color_value clear_color = {};
anv_clear_color_from_att_state(&clear_color, att_state, iview);
@@ -5241,8 +5238,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
att_state->aux_usage,
iview->planes[0].isl.format,
iview->planes[0].isl.swizzle,
iview->planes[0].isl.base_level,
layer, 1,
level, layer, 1,
render_area,
vk_to_isl_color(att_state->clear_value.color));
}
@@ -5254,8 +5250,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
att_state->aux_usage,
iview->planes[0].isl.format,
iview->planes[0].isl.swizzle,
iview->planes[0].isl.base_level,
base_clear_layer, clear_layer_count,
level, base_clear_layer, clear_layer_count,
render_area,
vk_to_isl_color(att_state->clear_value.color));
}
@@ -5281,16 +5276,13 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
if (att_state->fast_clear) {
anv_image_hiz_clear(cmd_buffer, image,
att_state->pending_clear_aspects,
iview->planes[0].isl.base_level,
layer, 1, render_area,
level, layer, 1, render_area,
att_state->clear_value.depthStencil.stencil);
} else {
anv_image_clear_depth_stencil(cmd_buffer, image,
att_state->pending_clear_aspects,
att_state->aux_usage,
iview->planes[0].isl.base_level,
layer, 1,
render_area,
level, layer, 1, render_area,
att_state->clear_value.depthStencil.depth,
att_state->clear_value.depthStencil.stencil);
}
@@ -5301,17 +5293,15 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
if (att_state->fast_clear) {
anv_image_hiz_clear(cmd_buffer, image,
att_state->pending_clear_aspects,
iview->planes[0].isl.base_level,
iview->planes[0].isl.base_array_layer,
fb->layers, render_area,
level, base_layer, layer_count,
render_area,
att_state->clear_value.depthStencil.stencil);
} else {
anv_image_clear_depth_stencil(cmd_buffer, image,
att_state->pending_clear_aspects,
att_state->aux_usage,
iview->planes[0].isl.base_level,
iview->planes[0].isl.base_array_layer,
fb->layers, render_area,
level, base_layer, layer_count,
render_area,
att_state->clear_value.depthStencil.depth,
att_state->clear_value.depthStencil.stencil);
}