gbm_{bo,surface}_create_with_modifiers is missing the usage flags. Add a new function which lets library users specify it.
Signed-off-by: Simon Ser <cont...@emersion.fr> --- src/gbm/main/gbm.c | 38 ++++++++++++++++++++++++++++++++++++++ src/gbm/main/gbm.h | 17 +++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c index 38480ca966c6..ca68a3292327 100644 --- a/src/gbm/main/gbm.c +++ b/src/gbm/main/gbm.c @@ -491,6 +491,27 @@ gbm_bo_create_with_modifiers(struct gbm_device *gbm, return gbm->bo_create(gbm, width, height, format, 0, modifiers, count); } +GBM_EXPORT 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 usage) +{ + if (width == 0 || height == 0) { + errno = EINVAL; + return NULL; + } + + if ((count && !modifiers) || (modifiers && !count)) { + errno = EINVAL; + return NULL; + } + + return gbm->bo_create(gbm, width, height, format, usage, modifiers, count); +} + /** * Create a gbm buffer object from a foreign object * @@ -616,6 +637,23 @@ gbm_surface_create_with_modifiers(struct gbm_device *gbm, modifiers, count); } +GBM_EXPORT 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 && !modifiers) || (modifiers && !count)) { + errno = EINVAL; + return NULL; + } + + return gbm->surface_create(gbm, width, height, format, flags, + modifiers, count); +} + /** * Destroys the given surface and frees all resources associated with * it. diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h index 9b5288710a5b..0bb2e4443f97 100644 --- a/src/gbm/main/gbm.h +++ b/src/gbm/main/gbm.h @@ -263,6 +263,15 @@ 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 @@ -390,6 +399,14 @@ 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); -- 2.22.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev