diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 908fb1eade3..cb67fb5d0f7 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 e20d561c5d7..310e48cc88c 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