summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Radomski <dextero@google.com>2024-03-07 13:46:36 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-03-12 11:19:37 +0000
commit40b28f098a29589b3f72de1ba6753d46a616c48b (patch)
tree24d6a273cf197f7c60eca451be539ed4087caa1a
parent3b508e145f1acfd3895daab0089ebd54cd924bb2 (diff)
downloadminigbm-40b28f098a29589b3f72de1ba6753d46a616c48b.tar.gz
minigbm: add gbm_{bo,surface}_create_with_modifiers2
Rationale: this will help get Rust gbm bindings into Android (go/drm-gbm-rust-crates-for-android) without needing minigbm-specific patches to upstream Rust code. Upstream Mesa gbm defines those functions as variants with an extra "flags" argument[2][3] (these don't exist in the mesa version checked into Chromium though). The definitions added in this CL provide variants that fail for any non-zero flags. [1] https://crates.io/crates/gbm [2] https://gitlab.freedesktop.org/mesa/mesa/-/blob/b7d6d90dabad885c2578e2195901f60ac6ac4e7c/src/gbm/main/gbm.h#L303 [3] https://gitlab.freedesktop.org/mesa/mesa/-/blob/b7d6d90dabad885c2578e2195901f60ac6ac4e7c/src/gbm/main/gbm.h#L443 Bug: 328363177 Test: cros build-packages --board=amd64-generic minigbm drm-tests Change-Id: I9284d597e2d4de5ff9b677db0a0ffe6d274e4f57 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/5352371 Reviewed-by: Dominik Behr <dbehr@chromium.org> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> Commit-Queue: Marcin Radomski <dextero@google.com> Tested-by: Marcin Radomski <dextero@google.com>
-rw-r--r--gbm.c24
-rw-r--r--gbm.h19
2 files changed, 42 insertions, 1 deletions
diff --git a/gbm.c b/gbm.c
index b432b38..408fb98 100644
--- a/gbm.c
+++ b/gbm.c
@@ -87,10 +87,21 @@ PUBLIC struct gbm_surface *gbm_surface_create_with_modifiers(struct gbm_device *
const uint64_t *modifiers,
const unsigned int count)
{
+ return gbm_surface_create_with_modifiers2(gbm, width, height, format, modifiers, count, 0);
+}
+
+PUBLIC struct gbm_surface *
+gbm_surface_create_with_modifiers2(struct gbm_device *gbm, uint32_t width, uint32_t height,
+ uint32_t format, const uint64_t *modifiers,
+ const unsigned int count, uint32_t flags)
+{
if (count != 0 || modifiers != NULL)
return NULL;
- return gbm_surface_create(gbm, width, height, format, 0);
+ if (flags != 0)
+ return NULL;
+
+ return gbm_surface_create(gbm, width, height, format, flags);
}
PUBLIC struct gbm_bo *gbm_surface_lock_front_buffer(struct gbm_surface *surface)
@@ -161,8 +172,19 @@ PUBLIC struct gbm_bo *gbm_bo_create_with_modifiers(struct gbm_device *gbm, uint3
uint32_t height, uint32_t format,
const uint64_t *modifiers, uint32_t count)
{
+ return gbm_bo_create_with_modifiers2(gbm, width, height, format, modifiers, count, 0);
+}
+
+PUBLIC struct gbm_bo *gbm_bo_create_with_modifiers2(struct gbm_device *gbm, uint32_t width,
+ uint32_t height, uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count, uint32_t flags)
+{
struct gbm_bo *bo;
+ if (flags != 0)
+ return NULL;
+
bo = gbm_bo_new(gbm, format);
if (!bo)
diff --git a/gbm.h b/gbm.h
index ab614f7..8e32769 100644
--- a/gbm.h
+++ b/gbm.h
@@ -339,6 +339,16 @@ gbm_bo_create_with_modifiers(struct gbm_device *gbm,
uint32_t format,
const uint64_t *modifiers,
const unsigned int count);
+
+struct gbm_bo *
+gbm_bo_create_with_modifiers2(struct gbm_device *gbm,
+ uint32_t width,
+ uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count,
+ uint32_t flags);
+
#define GBM_BO_IMPORT_WL_BUFFER 0x5501
#define GBM_BO_IMPORT_EGL_IMAGE 0x5502
#define GBM_BO_IMPORT_FD 0x5503
@@ -491,6 +501,15 @@ gbm_surface_create_with_modifiers(struct gbm_device *gbm,
const uint64_t *modifiers,
const unsigned int count);
+struct gbm_surface *
+gbm_surface_create_with_modifiers2(struct gbm_device *gbm,
+ uint32_t width,
+ uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count,
+ uint32_t flags);
+
struct gbm_bo *
gbm_surface_lock_front_buffer(struct gbm_surface *surface);