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:
committed by
Marge Bot
parent
adf04d1af4
commit
87c8764448
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user