diff options
author | Jason Ekstrand <[email protected]> | 2017-11-27 18:07:57 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2018-02-08 16:35:31 -0800 |
commit | 84fd2ebfbcd743840a173a2e8b4268991e0fcc78 (patch) | |
tree | d735291df0ffe0ed93f701c24d7837cb5c353dfa /src/intel | |
parent | 3ef8c4b2f53e00701375597aaaef9fc9617d7b4d (diff) |
anv/cmd_buffer: Re-arrange the logic around UNDEFINED fast-clears
Reviewed-by: Topi Pohjolainen <[email protected]>
Reviewed-by: Nanley Chery <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index d3449f5b334..39f93c44d93 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -692,29 +692,26 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer, * We don't have any data to show that this is a problem, but we want to * avoid causing difficult-to-debug problems. */ - if ((GEN_GEN >= 9 && image->samples == 1) || image->samples > 1) { + if (GEN_GEN >= 9 && image->samples == 1) { + for (uint32_t l = 0; l < level_count; l++) { + const uint32_t level = base_level + l; + const uint32_t level_layer_count = + MIN2(layer_count, anv_image_aux_layers(image, aspect, level)); + anv_image_ccs_op(cmd_buffer, image, aspect, level, + base_layer, level_layer_count, + ISL_AUX_OP_FAST_CLEAR, false); + } + } else if (image->samples > 1) { if (image->samples == 4 || image->samples == 16) { anv_perf_warn(cmd_buffer->device->instance, image, "Doing a potentially unnecessary fast-clear to " "define an MCS buffer."); } - if (image->samples == 1) { - for (uint32_t l = 0; l < level_count; l++) { - const uint32_t level = base_level + l; - const uint32_t level_layer_count = - MIN2(layer_count, anv_image_aux_layers(image, aspect, level)); - anv_image_ccs_op(cmd_buffer, image, aspect, level, - base_layer, level_layer_count, - ISL_AUX_OP_FAST_CLEAR, false); - } - } else { - assert(image->samples > 1); - assert(base_level == 0 && level_count == 1); - anv_image_mcs_op(cmd_buffer, image, aspect, - base_layer, layer_count, - ISL_AUX_OP_FAST_CLEAR, false); - } + assert(base_level == 0 && level_count == 1); + anv_image_mcs_op(cmd_buffer, image, aspect, + base_layer, layer_count, + ISL_AUX_OP_FAST_CLEAR, false); } /* At this point, some elements of the CCS buffer may have the fast-clear * bit-arrangement. As the user writes to a subresource, we need to have |