From c6aed295dcd2132e19cf4e37ef547918fb700459 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Tue, 2 Sep 2025 17:56:56 +0200 Subject: [PATCH] radeonsi/vcn: Fix calculating QP map region dimensions It needs to be aligned to block size otherwise it would skip last row/column on resolutions like 1080p. Cc: mesa-stable Reviewed-by: Ruijing Dong Part-of: (cherry picked from commit 8eb84f8854219e95e2795d36aee99418a7bcda79) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index abd096ecfa2..0f9270ec9b4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -6334,7 +6334,7 @@ "description": "radeonsi/vcn: Fix calculating QP map region dimensions", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c index a909e27179a..c342c43a9eb 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -206,10 +206,10 @@ static void radeon_vcn_enc_get_roi_param(struct radeon_encoder *enc, } else map->qp_delta = region->qp_value; - map->x_in_unit = CLAMP((region->x / block_length), 0, width_in_block - 1); - map->y_in_unit = CLAMP((region->y / block_length), 0, height_in_block - 1); - map->width_in_unit = CLAMP((region->width / block_length), 0, width_in_block); - map->height_in_unit = CLAMP((region->height / block_length), 0, width_in_block); + map->x_in_unit = MIN2(DIV_ROUND_UP(region->x, block_length), width_in_block - 1); + map->y_in_unit = MIN2(DIV_ROUND_UP(region->y, block_length), height_in_block - 1); + map->width_in_unit = MIN2(DIV_ROUND_UP(region->width, block_length), width_in_block); + map->height_in_unit = MIN2(DIV_ROUND_UP(region->height, block_length), width_in_block); } } }