[Mesa-dev] [PATCH] gbm: Explicitly disallow a planar dumb BO
Ben Widawsky
ben at bwidawsk.net
Tue Mar 7 23:16:31 UTC 2017
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.
Cc: Jason Ekstrand <jason at jlekstrand.net>
Cc: Daniel Stone <daniels at collabora.com>
Cc: Kristian H. Kristensen <hoegsberg at gmail.com>
Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
src/gbm/backends/dri/gbm_dri.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index ac7ede87b6..9ddc2159fc 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -795,6 +795,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 +841,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;
--
2.12.0
More information about the mesa-dev
mailing list