From 17cdbc5729a3efbb5a865fa32e2c177b3f391f6c Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Thu, 16 Jan 2025 09:59:32 -0500 Subject: [PATCH] pipe: Add pipe_enc_cap_roi.log2_roi_min_block_pixel_size Reviewed-by: Ruijing Dong Part-of: --- src/gallium/frontends/va/config.c | 13 ++++++++++--- src/gallium/include/pipe/p_video_state.h | 7 ++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/gallium/frontends/va/config.c b/src/gallium/frontends/va/config.c index 588b69bfaf2..b82e923dfab 100644 --- a/src/gallium/frontends/va/config.c +++ b/src/gallium/frontends/va/config.c @@ -571,13 +571,20 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en case VAConfigAttribEncROI: { - int roi_support = pscreen->get_video_param(pscreen, ProfileToPipe(profile), + union pipe_enc_cap_roi roi_pipe_caps = {}; + roi_pipe_caps.value = pscreen->get_video_param(pscreen, ProfileToPipe(profile), PIPE_VIDEO_ENTRYPOINT_ENCODE, PIPE_VIDEO_CAP_ENC_ROI); - if (roi_support <= 0) + if (roi_pipe_caps.value <= 0) value = VA_ATTRIB_NOT_SUPPORTED; else - value = roi_support; + { + VAConfigAttribValEncROI roi_va_caps = {}; + roi_va_caps.bits.num_roi_regions = roi_pipe_caps.bits.num_roi_regions; + roi_va_caps.bits.roi_rc_priority_support = roi_pipe_caps.bits.roi_rc_priority_support; + roi_va_caps.bits.roi_rc_qp_delta_support = roi_pipe_caps.bits.roi_rc_qp_delta_support; + value = roi_va_caps.value; + } } break; default: diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h index 0dae7a99e80..55d0b4cd8bb 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -2405,7 +2405,12 @@ union pipe_enc_cap_roi { * because ROI delta QP is always required when VAConfigAttribRateControl == VA_RC_CQP. */ uint32_t roi_rc_qp_delta_support : 1; - uint32_t reserved : 22; + /* + * Indicates the minimum driver granularity to set a ROI region with a specific QP value. + * In other words, the QP delta block granularity pixel size of the hardware encoder. + */ + uint32_t log2_roi_min_block_pixel_size : 4; + uint32_t reserved : 18; } bits; uint32_t value;