gbm: Add gbm_bo_get_fd()
[mesa.git] / src / gbm / main / gbmint.h
index 9e4072ef6ea60e47a052390f8afbb50c3545a512..31345e6f6dec7d94afdf69ba21716f9ff215a7db 100644 (file)
@@ -59,18 +59,27 @@ 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 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);
+   struct gbm_bo *(*bo_import)(struct gbm_device *gbm, uint32_t type,
+                               void *buffer, uint32_t usage);
+   int (*bo_write)(struct gbm_bo *bo, const void *buf, size_t data);
+   int (*bo_get_fd)(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);
+   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);
 };
 
 /**
@@ -82,8 +91,19 @@ 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 gbm_backend {
@@ -91,7 +111,7 @@ struct gbm_backend {
    struct gbm_device *(*create_device)(int fd);
 };
 
-GBM_EXPORT struct gbm_device *
+struct gbm_device *
 _gbm_mesa_get_device(int fd);
 
 #endif