OSDN Git Service

drm_hwcomposer: Split the drm compositor into per-display threads
[android-x86/external-drm_hwcomposer.git] / drm_hwcomposer.h
index a83acab..cebdbee 100644 (file)
  * limitations under the License.
  */
 
+#ifndef ANDROID_DRM_HWCOMPOSER_H_
+#define ANDROID_DRM_HWCOMPOSER_H_
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <hardware/hardware.h>
+#include <hardware/hwcomposer.h>
+
 struct hwc_import_context;
 
-struct hwc_drm_bo {
-       uint32_t width;
-       uint32_t height;
-       uint32_t format;        /* DRM_FORMAT_* from drm_fourcc.h */
-       uint32_t pitches[4];
-       uint32_t offsets[4];
-       uint32_t gem_handles[4];
-       uint32_t fb_id;
-       int acquire_fence_fd;
-
-       /* TODO: This is bad voodoo, remove it once drm_gralloc uses dma_buf */
-       int importer_fd;
+enum {
+  /* perform(const struct gralloc_module_t *mod,
+   *      int op,
+   *      int drm_fd,
+   *      buffer_handle_t buffer,
+   *      struct hwc_drm_bo *bo);
+   */
+  GRALLOC_MODULE_PERFORM_DRM_IMPORT = 0xffeeff00,
+
+  /* perform(const struct gralloc_module_t *mod,
+   *      int op,
+   *      buffer_handle_t buffer,
+   *      void (*free_callback)(void *),
+   *      void *priv);
+   */
+  GRALLOC_MODULE_PERFORM_SET_IMPORTER_PRIVATE = 0xffeeff01,
+
+  /* perform(const struct gralloc_module_t *mod,
+   *      int op,
+   *      buffer_handle_t buffer,
+   *      void (*free_callback)(void *),
+   *      void **priv);
+   */
+  GRALLOC_MODULE_PERFORM_GET_IMPORTER_PRIVATE = 0xffeeff02,
 };
 
+typedef struct hwc_drm_bo {
+  uint32_t width;
+  uint32_t height;
+  uint32_t format; /* DRM_FORMAT_* from drm_fourcc.h */
+  uint32_t pitches[4];
+  uint32_t offsets[4];
+  uint32_t gem_handles[4];
+  uint32_t fb_id;
+  int acquire_fence_fd;
+  void *priv;
+} hwc_drm_bo_t;
+
 int hwc_import_init(struct hwc_import_context **ctx);
 int hwc_import_destroy(struct hwc_import_context *ctx);
 
-int hwc_create_bo_from_import(int fd, struct hwc_import_context *ctx,
-                       buffer_handle_t buf, struct hwc_drm_bo *bo);
+int hwc_import_bo_create(int fd, struct hwc_import_context *ctx,
+                         buffer_handle_t buf, struct hwc_drm_bo *bo);
+bool hwc_import_bo_release(int fd, struct hwc_import_context *ctx,
+                           struct hwc_drm_bo *bo);
+
+#endif