diff --git a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp index 54707271893..879bcbab10e 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp @@ -801,6 +801,12 @@ d3d12_screen_get_video_param_decode(struct pipe_screen *pscreen, enum pipe_video_cap param) { switch (param) { + case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME: + /* As sometimes we need to copy the output + and sync with the context, we handle the + flush internally on end frame for decode + */ + return 0; case PIPE_VIDEO_CAP_NPOT_TEXTURES: return 1; case PIPE_VIDEO_CAP_MAX_WIDTH: @@ -919,6 +925,8 @@ d3d12_screen_get_video_param_postproc(struct pipe_screen *pscreen, enum pipe_video_cap param) { switch (param) { + case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME: + return 1; case PIPE_VIDEO_CAP_NPOT_TEXTURES: return 1; case PIPE_VIDEO_CAP_MAX_WIDTH: @@ -1036,6 +1044,8 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen, struct d3d12_encode_codec_support codec_specific_support; memset(&codec_specific_support, 0, sizeof(codec_specific_support)); switch (param) { + case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME: + return 1; case PIPE_VIDEO_CAP_NPOT_TEXTURES: return 1; case PIPE_VIDEO_CAP_MAX_WIDTH: