* 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