diff mbox series

[FFmpeg-devel] qsv: Update ffmpeg qsv_errors to recognize GPU hang

Message ID 1658513179-11943-1-git-send-email-dmitry.v.rogozhkin@intel.com
State New
Headers show
Series [FFmpeg-devel] qsv: Update ffmpeg qsv_errors to recognize GPU hang | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Dmitry Rogozhkin July 22, 2022, 6:06 p.m. UTC
GPU hang is one of the most typical errors on Intel GPUs in
case something goes wrong. It's important to recognize it
explicitly for easier bugs triage. Also, this error code
can be used to trigger GPU recovery path in self-written
applications.

Signed-off-by: Hon Wai Chow <hon.wai.chow@intel.com>
Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
---
 libavcodec/qsv.c     | 1 +
 libavfilter/qsvvpp.c | 1 +
 2 files changed, 2 insertions(+)

Comments

Xiang, Haihao July 25, 2022, 1:21 a.m. UTC | #1
On Fri, 2022-07-22 at 11:06 -0700, Dmitry Rogozhkin wrote:
> GPU hang is one of the most typical errors on Intel GPUs in
> case something goes wrong. It's important to recognize it
> explicitly for easier bugs triage. Also, this error code
> can be used to trigger GPU recovery path in self-written
> applications.
> 
> Signed-off-by: Hon Wai Chow <hon.wai.chow@intel.com>
> Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
> ---
>  libavcodec/qsv.c     | 1 +
>  libavfilter/qsvvpp.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
> index 385b43b..55bcb6e 100644
> --- a/libavcodec/qsv.c
> +++ b/libavcodec/qsv.c
> @@ -125,6 +125,7 @@ static const struct {
>      { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid video
> parameters"             },
>      { MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined
> behavior"                   },
>      { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device
> failed"                        },
> +    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU
> Hang"                             },
>      { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio
> parameters"        },
>      { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid audio
> parameters"             },
>  
> diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
> index 954f882..7504906 100644
> --- a/libavfilter/qsvvpp.c
> +++ b/libavfilter/qsvvpp.c
> @@ -100,6 +100,7 @@ static const struct {
>      { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid video
> parameters"             },
>      { MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined
> behavior"                   },
>      { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device
> failed"                        },
> +    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU
> Hang"                             },
>      { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio
> parameters"        },
>      { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid audio
> parameters"             },
>  

Could you add other missing qsv video errors or warnings too ?

Thanks
Haihao
Dmitry Rogozhkin July 25, 2022, 3:25 p.m. UTC | #2
On Mon, 2022-07-25 at 01:21 +0000, Xiang, Haihao wrote:
> On Fri, 2022-07-22 at 11:06 -0700, Dmitry Rogozhkin wrote:
> > GPU hang is one of the most typical errors on Intel GPUs in
> > case something goes wrong. It's important to recognize it
> > explicitly for easier bugs triage. Also, this error code
> > can be used to trigger GPU recovery path in self-written
> > applications.
> > 
> > Signed-off-by: Hon Wai Chow <hon.wai.chow@intel.com>
> > Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
> > ---
> >  libavcodec/qsv.c     | 1 +
> >  libavfilter/qsvvpp.c | 1 +
> >  2 files changed, 2 insertions(+)
> > 
> > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
> > index 385b43b..55bcb6e 100644
> > --- a/libavcodec/qsv.c
> > +++ b/libavcodec/qsv.c
> > @@ -125,6 +125,7 @@ static const struct {
> >      { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid
> > video
> > parameters"             },
> >      {
> > MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined
> > behavior"                   },
> >      { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device
> > failed"                        },
> > +    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU
> > Hang"                             },
> >      { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL),
> > "incompatible audio
> > parameters"        },
> >      { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid
> > audio
> > parameters"             },
> >  
> > diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
> > index 954f882..7504906 100644
> > --- a/libavfilter/qsvvpp.c
> > +++ b/libavfilter/qsvvpp.c
> > @@ -100,6 +100,7 @@ static const struct {
> >      { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid
> > video
> > parameters"             },
> >      {
> > MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined
> > behavior"                   },
> >      { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device
> > failed"                        },
> > +    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU
> > Hang"                             },
> >      { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL),
> > "incompatible audio
> > parameters"        },
> >      { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid
> > audio
> > parameters"             },
> >  
> 
> Could you add other missing qsv video errors or warnings too ?
Yes, sure. For what I see we are missing 3 statuses returnable by
mediasdk library implementations: MFX_ERR_GPU_HANG,
MFX_ERR_NONE_PARTIAL_OUTPUT, MFX_ERR_REALLOC_SURFACE. Other statuses
defined in mfxdefs.h are not returnable to ffmpeg level (they are
internal or plugin specific stuff).
I will resubmit the patch under other name with added stuff.
> 
> Thanks
> Haihao
> 
>
diff mbox series

Patch

diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index 385b43b..55bcb6e 100644
--- a/libavcodec/qsv.c
+++ b/libavcodec/qsv.c
@@ -125,6 +125,7 @@  static const struct {
     { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid video parameters"             },
     { MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined behavior"                   },
     { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device failed"                        },
+    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU Hang"                             },
     { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio parameters"        },
     { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid audio parameters"             },
 
diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 954f882..7504906 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -100,6 +100,7 @@  static const struct {
     { MFX_ERR_INVALID_VIDEO_PARAM,      AVERROR(EINVAL), "invalid video parameters"             },
     { MFX_ERR_UNDEFINED_BEHAVIOR,       AVERROR_BUG,     "undefined behavior"                   },
     { MFX_ERR_DEVICE_FAILED,            AVERROR(EIO),    "device failed"                        },
+    { MFX_ERR_GPU_HANG,                 AVERROR(EIO),    "GPU Hang"                             },
     { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio parameters"        },
     { MFX_ERR_INVALID_AUDIO_PARAM,      AVERROR(EINVAL), "invalid audio parameters"             },