mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
egl/dri2: Add a helper for the number of planes for a FOURCC format
This also serves as a convenient "is this a fourcc format" check as well
which we'll take advantage of in the next commit.
Cc: mesa-stable@lists.freedesktop.org
Tested-By: Eero Tamminen <eero.t.tamminen@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
(cherry picked from commit b95896f492)
This commit is contained in:
parent
6a854c5620
commit
74a671d019
1 changed files with 21 additions and 11 deletions
|
|
@ -2223,13 +2223,13 @@ dri2_check_dma_buf_attribs(const _EGLImageAttribs *attrs)
|
|||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
/* Returns the total number of file descriptors. Zero indicates an error. */
|
||||
/* Returns the total number of planes for the format or zero if it isn't a
|
||||
* valid fourcc format.
|
||||
*/
|
||||
static unsigned
|
||||
dri2_check_dma_buf_format(const _EGLImageAttribs *attrs)
|
||||
dri2_num_fourcc_format_planes(EGLint format)
|
||||
{
|
||||
unsigned plane_n;
|
||||
|
||||
switch (attrs->DMABufFourCC.Value) {
|
||||
switch (format) {
|
||||
case DRM_FORMAT_R8:
|
||||
case DRM_FORMAT_RG88:
|
||||
case DRM_FORMAT_GR88:
|
||||
|
|
@ -2277,14 +2277,14 @@ dri2_check_dma_buf_format(const _EGLImageAttribs *attrs)
|
|||
case DRM_FORMAT_YVYU:
|
||||
case DRM_FORMAT_UYVY:
|
||||
case DRM_FORMAT_VYUY:
|
||||
plane_n = 1;
|
||||
break;
|
||||
return 1;
|
||||
|
||||
case DRM_FORMAT_NV12:
|
||||
case DRM_FORMAT_NV21:
|
||||
case DRM_FORMAT_NV16:
|
||||
case DRM_FORMAT_NV61:
|
||||
plane_n = 2;
|
||||
break;
|
||||
return 2;
|
||||
|
||||
case DRM_FORMAT_YUV410:
|
||||
case DRM_FORMAT_YVU410:
|
||||
case DRM_FORMAT_YUV411:
|
||||
|
|
@ -2295,9 +2295,19 @@ dri2_check_dma_buf_format(const _EGLImageAttribs *attrs)
|
|||
case DRM_FORMAT_YVU422:
|
||||
case DRM_FORMAT_YUV444:
|
||||
case DRM_FORMAT_YVU444:
|
||||
plane_n = 3;
|
||||
break;
|
||||
return 3;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns the total number of file descriptors. Zero indicates an error. */
|
||||
static unsigned
|
||||
dri2_check_dma_buf_format(const _EGLImageAttribs *attrs)
|
||||
{
|
||||
unsigned plane_n = dri2_num_fourcc_format_planes(attrs->DMABufFourCC.Value);
|
||||
if (plane_n == 0) {
|
||||
_eglError(EGL_BAD_ATTRIBUTE, "invalid format");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue