diff options
Diffstat (limited to 'src/intel/vulkan/genX_cmd_buffer.c')
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 20 |
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 = |