diff --git a/.pick_status.json b/.pick_status.json index 3f26f535fcd..4b639e0c6eb 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -244,7 +244,7 @@ "description": "d3d12: Implement cap for PIPE_VIDEO_CAP_ENC_INTRA_REFRESH", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c81967fa89d918e11107cc787ae70bf32cc56a56", "notes": null 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) {