From a3c91624f487ee7676dfce0f8ed4e4c87ce2c0a2 Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Mon, 22 Jan 2024 13:44:30 -0500 Subject: [PATCH] d3d12: Implement cap for PIPE_VIDEO_CAP_ENC_INTRA_REFRESH Fixes: c81967fa89d ("d3d12: Implement Intra Refresh for H264, HEVC, AV1") Part-of: --- src/gallium/drivers/d3d12/d3d12_video_screen.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp index 9f8d03503f2..4e14b5bbe2f 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp @@ -1718,6 +1718,7 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen, case PIPE_VIDEO_CAP_ENC_MAX_TILE_ROWS: case PIPE_VIDEO_CAP_ENC_MAX_TILE_COLS: case PIPE_VIDEO_CAP_ENC_INTRA_REFRESH_MAX_DURATION: + case PIPE_VIDEO_CAP_ENC_INTRA_REFRESH: case PIPE_VIDEO_CAP_ENC_H264_DISABLE_DBK_FILTER_MODES_SUPPORTED: case PIPE_VIDEO_CAP_ENC_H264_SUPPORTS_CABAC_ENCODE: case PIPE_VIDEO_CAP_ENC_ROI: @@ -1768,6 +1769,14 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen, return maxReferencesPerFrame; } else if (param == PIPE_VIDEO_CAP_ENC_INTRA_REFRESH_MAX_DURATION) { return maxIRDuration; + } else if (param == PIPE_VIDEO_CAP_ENC_INTRA_REFRESH) { + return (maxIRDuration == 0) ? 0 : + (PIPE_VIDEO_ENC_INTRA_REFRESH_ROW | + PIPE_VIDEO_ENC_INTRA_REFRESH_ADAPTIVE | + PIPE_VIDEO_ENC_INTRA_REFRESH_CYCLIC | + PIPE_VIDEO_ENC_INTRA_REFRESH_P_FRAME | + PIPE_VIDEO_ENC_INTRA_REFRESH_B_FRAME | + PIPE_VIDEO_ENC_INTRA_REFRESH_MULTI_REF); } else if (param == PIPE_VIDEO_CAP_ENC_SUPPORTS_MAX_FRAME_SIZE) { return isRCMaxFrameSizeSupported; } else if (param == PIPE_VIDEO_CAP_ENC_HEVC_FEATURE_FLAGS) {