summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/genX_cmd_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/vulkan/genX_cmd_buffer.c')
-rw-r--r--src/intel/vulkan/genX_cmd_buffer.c54
1 files changed, 12 insertions, 42 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index 1a08b5eaff5..3c703f6be44 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -750,7 +750,7 @@ anv_cmd_predicated_ccs_resolve(struct anv_cmd_buffer *cmd_buffer,
resolve_op = ISL_AUX_OP_FULL_RESOLVE;
anv_image_ccs_op(cmd_buffer, image, aspect, level,
- array_layer, 1, resolve_op, true);
+ array_layer, 1, resolve_op, NULL, true);
}
static void
@@ -770,7 +770,7 @@ anv_cmd_predicated_mcs_resolve(struct anv_cmd_buffer *cmd_buffer,
resolve_op, fast_clear_supported);
anv_image_mcs_op(cmd_buffer, image, aspect,
- array_layer, 1, resolve_op, true);
+ array_layer, 1, resolve_op, NULL, true);
#else
unreachable("MCS resolves are unsupported on Ivybridge and Bay Trail");
#endif
@@ -1026,7 +1026,7 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer,
anv_image_ccs_op(cmd_buffer, image, aspect, level,
base_layer, level_layer_count,
- ISL_AUX_OP_AMBIGUATE, false);
+ ISL_AUX_OP_AMBIGUATE, NULL, false);
if (image->planes[plane].aux_usage == ISL_AUX_USAGE_CCS_E) {
set_image_compressed_bit(cmd_buffer, image, aspect,
@@ -1044,7 +1044,7 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer,
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);
+ ISL_AUX_OP_FAST_CLEAR, NULL, false);
}
return;
}
@@ -1135,34 +1135,6 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer,
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT | ANV_PIPE_CS_STALL_BIT;
}
-static void
-update_fast_clear_color(struct anv_cmd_buffer *cmd_buffer,
- const struct anv_attachment_state *att_state,
- const struct anv_image_view *iview)
-{
- assert(GEN_GEN >= 10);
- assert(iview->image->aspects == VK_IMAGE_ASPECT_COLOR_BIT);
-
- struct anv_address clear_address =
- anv_image_get_clear_color_addr(cmd_buffer->device, iview->image,
- VK_IMAGE_ASPECT_COLOR_BIT);
- union isl_color_value clear_color;
- anv_clear_color_from_att_state(&clear_color, att_state, iview);
-
- /* Clear values are stored at the same bo as the aux surface, right
- * after the surface.
- */
- for (int i = 0; i < 4; i++) {
- anv_batch_emit(&cmd_buffer->batch, GENX(MI_STORE_DATA_IMM), sdi) {
- sdi.Address = (struct anv_address) {
- .bo = clear_address.bo,
- .offset = clear_address.offset + i * 4,
- };
- sdi.ImmediateData = clear_color.u32[i];
- }
- }
-}
-
/**
* Setup anv_cmd_state::attachments for vkCmdBeginRenderPass.
*/
@@ -3594,26 +3566,24 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
assert(iview->planes[0].isl.base_level == 0);
assert(iview->planes[0].isl.base_array_layer == 0);
+ union isl_color_value clear_color = {};
+ anv_clear_color_from_att_state(&clear_color, att_state, iview);
if (iview->image->samples == 1) {
anv_image_ccs_op(cmd_buffer, image, VK_IMAGE_ASPECT_COLOR_BIT,
- 0, 0, 1, ISL_AUX_OP_FAST_CLEAR, false);
+ 0, 0, 1, ISL_AUX_OP_FAST_CLEAR,
+ &clear_color,
+ false);
} else {
anv_image_mcs_op(cmd_buffer, image, VK_IMAGE_ASPECT_COLOR_BIT,
- 0, 1, ISL_AUX_OP_FAST_CLEAR, false);
+ 0, 1, ISL_AUX_OP_FAST_CLEAR,
+ &clear_color,
+ false);
}
base_clear_layer++;
clear_layer_count--;
if (is_multiview)
att_state->pending_clear_views &= ~1;
- if (GEN_GEN < 10) {
- genX(copy_fast_clear_dwords)(cmd_buffer, att_state->color.state,
- image, VK_IMAGE_ASPECT_COLOR_BIT,
- true /* copy from ss */);
- } else {
- update_fast_clear_color(cmd_buffer, att_state, iview);
- }
-
if (att_state->clear_color_is_zero) {
/* This image has the auxiliary buffer enabled. We can mark the
* subresource as not needing a resolve because the clear color