X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgbm%2Fmain%2Fgbmint.h;h=5ad85cc80fff21521907544fb6ec51cf1e964c1b;hb=2a16de9e4bb7d2f0e67fab42eb3f8a667393d04d;hp=fb8db804c1b2690037921c2efc8eff84c7ded6fe;hpb=4683529048ee133481b2d8f1cae1685aa1736f9a;p=mesa.git diff --git a/src/gbm/main/gbmint.h b/src/gbm/main/gbmint.h index fb8db804c1b..5ad85cc80ff 100644 --- a/src/gbm/main/gbmint.h +++ b/src/gbm/main/gbmint.h @@ -32,12 +32,22 @@ #include /* GCC visibility */ -#if defined(__GNUC__) && __GNUC__ >= 4 +#if defined(__GNUC__) #define GBM_EXPORT __attribute__ ((visibility("default"))) #else #define GBM_EXPORT #endif +/** + * \file gbmint.h + * \brief Internal implementation details of gbm + */ + +/** + * The device used for the memory allocation. + * + * The members of this structure should be not accessed directly + */ struct gbm_device { /* Hack to make a gbm_device detectable by its first element. */ struct gbm_device *(*dummy)(int); @@ -49,26 +59,70 @@ struct gbm_device { void (*destroy)(struct gbm_device *gbm); int (*is_format_supported)(struct gbm_device *gbm, - enum gbm_bo_format format, + uint32_t format, uint32_t usage); struct gbm_bo *(*bo_create)(struct gbm_device *gbm, uint32_t width, uint32_t height, - enum gbm_bo_format format, - uint32_t usage); - struct gbm_bo *(*bo_create_from_egl_image)(struct gbm_device *gbm, - void *egl_dpy, void *egl_img, - uint32_t width, uint32_t height, - uint32_t usage); + uint32_t format, + uint32_t usage, + const uint64_t *modifiers, + const unsigned int count); + struct gbm_bo *(*bo_import)(struct gbm_device *gbm, uint32_t type, + void *buffer, uint32_t usage); + void *(*bo_map)(struct gbm_bo *bo, + uint32_t x, uint32_t y, + uint32_t width, uint32_t height, + uint32_t flags, uint32_t *stride, + void **map_data); + void (*bo_unmap)(struct gbm_bo *bo, void *map_data); + int (*bo_write)(struct gbm_bo *bo, const void *buf, size_t data); + int (*bo_get_fd)(struct gbm_bo *bo); + int (*bo_get_planes)(struct gbm_bo *bo); + union gbm_bo_handle (*bo_get_handle)(struct gbm_bo *bo, int plane); + uint32_t (*bo_get_stride)(struct gbm_bo *bo, int plane); + int64_t (*bo_get_offset)(struct gbm_bo *bo, int plane); + uint64_t (*bo_get_modifier)(struct gbm_bo *bo); void (*bo_destroy)(struct gbm_bo *bo); + + struct gbm_surface *(*surface_create)(struct gbm_device *gbm, + uint32_t width, uint32_t height, + uint32_t format, uint32_t flags, + const uint64_t *modifiers, + const unsigned count); + struct gbm_bo *(*surface_lock_front_buffer)(struct gbm_surface *surface); + void (*surface_release_buffer)(struct gbm_surface *surface, + struct gbm_bo *bo); + int (*surface_has_free_buffers)(struct gbm_surface *surface); + void (*surface_destroy)(struct gbm_surface *surface); }; +/** + * The allocated buffer object. + * + * The members in this structure should not be accessed directly. + */ struct gbm_bo { struct gbm_device *gbm; uint32_t width; uint32_t height; - uint32_t pitch; + uint32_t stride; + uint32_t format; union gbm_bo_handle handle; + void *user_data; + void (*destroy_user_data)(struct gbm_bo *, void *); +}; + +struct gbm_surface { + struct gbm_device *gbm; + uint32_t width; + uint32_t height; + uint32_t format; + uint32_t flags; + struct { + uint64_t *modifiers; + unsigned count; + }; }; struct gbm_backend { @@ -76,7 +130,4 @@ struct gbm_backend { struct gbm_device *(*create_device)(int fd); }; -GBM_EXPORT struct gbm_device * -_gbm_mesa_get_device(int fd); - #endif