From b24b3026cc0541c59613463a124b16954b2a7cd8 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 3 Dec 2020 12:51:35 +0100 Subject: [PATCH] radv: use 32-bit predication for skipping FCE on GFX10.3+ Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_image.c | 8 ++++++-- src/amd/vulkan/radv_meta_fast_clear.c | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 908fb1e..cb67fb5 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -1278,11 +1278,15 @@ static void radv_image_alloc_values(const struct radv_device *device, struct radv_image *image) { if (radv_image_has_dcc(image)) { + unsigned pred_size = 8; + if (device->physical_device->rad_info.has_32bit_predication) + pred_size = 4; + image->fce_pred_offset = image->size; - image->size += 8 * image->info.levels; + image->size += pred_size * image->info.levels; image->dcc_pred_offset = image->size; - image->size += 8 * image->info.levels; + image->size += pred_size * image->info.levels; } if (radv_image_has_dcc(image) || radv_image_has_cmask(image) || diff --git a/src/amd/vulkan/radv_meta_fast_clear.c b/src/amd/vulkan/radv_meta_fast_clear.c index e20d561..310e48c 100644 --- a/src/amd/vulkan/radv_meta_fast_clear.c +++ b/src/amd/vulkan/radv_meta_fast_clear.c @@ -565,14 +565,18 @@ radv_emit_set_predication_state_from_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, uint64_t pred_offset, bool value) { + unsigned pred_op = PREDICATION_OP_BOOL64; uint64_t va = 0; + if (cmd_buffer->device->physical_device->rad_info.has_32bit_predication) + pred_op = PREDICATION_OP_BOOL32; + if (value) { va = radv_buffer_get_va(image->bo) + image->offset; va += pred_offset; } - si_emit_set_predication_state(cmd_buffer, true, PREDICATION_OP_BOOL64, va); + si_emit_set_predication_state(cmd_buffer, true, pred_op, va); } static void -- 2.7.4