st/vdpau: Only call is_video_format_supported hook if needed
authorMichel Dänzer <mdaenzer@redhat.com>
Tue, 18 Feb 2020 11:12:01 +0000 (12:12 +0100)
committerMichel Dänzer <michel@daenzer.net>
Wed, 19 Feb 2020 11:41:08 +0000 (12:41 +0100)
Namely only if *is_supported is true, otherwise the hook result can't
affect it.

Avoids

../src/gallium/state_trackers/vdpau/vdpau_private.h:138: FormatYCBCRToPipe: Assertion `0' failed.

with assertions enabled.

Fixes: 5d5b414a7b84 "st/vdpau: fix chroma_format handling in
                     VideoSurfaceQueryGetPutBitsYCbCrCapabilities"

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3848>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3848>

src/gallium/state_trackers/vdpau/query.c

index 5f644bbeea00ca743bf06e8496a0d167c4853645..eca1b3031c16e4ae73ed4fb712b0b0a984299226 100644 (file)
@@ -154,13 +154,13 @@ vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device, VdpChromaTyp
       break;
    }
 
-   *is_supported &= pscreen->is_video_format_supported
-   (
-      pscreen,
-      FormatYCBCRToPipe(bits_ycbcr_format),
-      PIPE_VIDEO_PROFILE_UNKNOWN,
-      PIPE_VIDEO_ENTRYPOINT_BITSTREAM
-   );
+   if (*is_supported &&
+       !pscreen->is_video_format_supported(pscreen,
+                                           FormatYCBCRToPipe(bits_ycbcr_format),
+                                           PIPE_VIDEO_PROFILE_UNKNOWN,
+                                           PIPE_VIDEO_ENTRYPOINT_BITSTREAM)) {
+      *is_supported = false;
+   }
    mtx_unlock(&dev->mutex);
 
    return VDP_STATUS_OK;