radv: compress FMASK for all layouts except GENERAL

The COMPRESSION bit is FMASK and this is much faster! Should
speedup transfer dst operations with MSAA images considerably.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9990>
This commit is contained in:
Samuel Pitoiset
2021-04-01 17:29:22 +02:00
committed by Marge Bot
parent adf04d1af4
commit 87c8764448
3 changed files with 18 additions and 4 deletions
+4 -4
View File
@@ -1636,10 +1636,10 @@ radv_emit_fb_color_state(struct radv_cmd_buffer *cmd_buffer,
cb_color_info &= C_028C70_DCC_ENABLE;
}
if (!radv_layout_can_fast_clear(cmd_buffer->device, image, layout, in_render_loop,
radv_image_queue_family_mask(image,
cmd_buffer->queue_family_index,
cmd_buffer->queue_family_index))) {
if (!radv_layout_fmask_compressed(cmd_buffer->device, image, layout,
radv_image_queue_family_mask(image,
cmd_buffer->queue_family_index,
cmd_buffer->queue_family_index))) {
cb_color_info &= C_028C70_COMPRESSION;
}
+9
View File
@@ -2131,6 +2131,15 @@ bool radv_layout_dcc_compressed(const struct radv_device *device,
layout != VK_IMAGE_LAYOUT_GENERAL);
}
bool radv_layout_fmask_compressed(const struct radv_device *device,
const struct radv_image *image,
VkImageLayout layout,
unsigned queue_mask)
{
return radv_image_has_fmask(image) &&
layout != VK_IMAGE_LAYOUT_GENERAL &&
queue_mask == (1u << RADV_QUEUE_GENERAL);
}
unsigned radv_image_queue_family_mask(const struct radv_image *image, uint32_t family, uint32_t queue_family)
{
+5
View File
@@ -1925,6 +1925,11 @@ bool radv_layout_dcc_compressed(const struct radv_device *device,
bool in_render_loop,
unsigned queue_mask);
bool radv_layout_fmask_compressed(const struct radv_device *device,
const struct radv_image *image,
VkImageLayout layout,
unsigned queue_mask);
/**
* Return whether the image has CMASK metadata for color surfaces.
*/