gbm: Explicitly disallow a planar dumb BO
As more GBM functionality support planes is being evaluated, it becomes clear that a dumb bo can never actually be planar. It's questionable whether it was ever feasible to do this, and later functionality will implicitly assume a dumb BO is non-planar. v2: Include stdbool.h Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Acked-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
@@ -795,6 +796,31 @@ gbm_dri_bo_import(struct gbm_device *gbm,
|
||||
return &bo->base.base;
|
||||
}
|
||||
|
||||
static bool
|
||||
is_planar_format(uint32_t format)
|
||||
{
|
||||
switch (format) {
|
||||
case GBM_FORMAT_NV12:
|
||||
case GBM_FORMAT_NV21:
|
||||
case GBM_FORMAT_NV16:
|
||||
case GBM_FORMAT_NV61:
|
||||
case GBM_FORMAT_YUV410:
|
||||
case GBM_FORMAT_YVU410:
|
||||
case GBM_FORMAT_YUV411:
|
||||
case GBM_FORMAT_YVU411:
|
||||
case GBM_FORMAT_YUV420:
|
||||
case GBM_FORMAT_YVU420:
|
||||
case GBM_FORMAT_YUV422:
|
||||
case GBM_FORMAT_YVU422:
|
||||
case GBM_FORMAT_YUV444:
|
||||
case GBM_FORMAT_YVU444:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static struct gbm_bo *
|
||||
create_dumb(struct gbm_device *gbm,
|
||||
uint32_t width, uint32_t height,
|
||||
@@ -816,6 +842,11 @@ create_dumb(struct gbm_device *gbm,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (is_planar_format(format)) {
|
||||
errno = EINVAL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bo = calloc(1, sizeof *bo);
|
||||
if (bo == NULL)
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user