summaryrefslogtreecommitdiff
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.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index 3fa7a61c1c4..10c6c975ead 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -4000,6 +4000,26 @@ cmd_buffer_barrier(struct anv_cmd_buffer *cmd_buffer,
false /* will_full_fast_clear */);
}
}
+
+ /* Mark image as compressed if the destination layout has untracked
+ * writes to the aux surface.
+ */
+ VkImageAspectFlags aspects =
+ vk_image_expand_aspect_mask(&image->vk, range->aspectMask);
+ anv_foreach_image_aspect_bit(aspect_bit, image, aspects) {
+ VkImageAspectFlagBits aspect = 1UL << aspect_bit;
+ if (anv_layout_has_untracked_aux_writes(
+ cmd_buffer->device->info,
+ image, aspect,
+ img_barrier->newLayout)) {
+ for (uint32_t l = 0; l < level_count; l++) {
+ set_image_compressed_bit(cmd_buffer, image, aspect,
+ range->baseMipLevel + l,
+ base_layer, layer_count,
+ true);
+ }
+ }
+ }
}
enum anv_pipe_bits bits =