vkformat: check the requested usage against format features correctly (and other fixes)

Matthew Waters requested to merge ystreet/gstreamer:vulkan-image-format into main

This does mean that if the primary format fails validation, then we need to fallback to the secondary vulkan format/s.

Fixes: #2957 (closed)

Other fixes:

commit c6e318de

vkformat: assume that unknown rgb transfer is sRGB

commit 22ce6f9d

vkformat: also check configured usage flags

This does also mean that if the primary format fails this check, we need
to try the secondary format before returning an error

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2957

commit a07056d7

vkformat: invert srgb and multiplane && planes > 1 checks

The primary format for RGB includes sRGB transfer but was not actually
being used.

The !(no_multiplane && planes > 1) check for YUV resulted in those
formats never being used.

commit ec9ff76d


commit f01dbc5a

vkformat: reorder RGBA formats before RGBx formats

Fixes gst_vulkan_format_to_video_format to use the RGBA formats instead
of RGBx formats.

Fixes vulkansink exposing a RGBx/BGRx format instead of the more
relevant RGBA/BGRA formats
Edited by Matthew Waters

Merge request reports