| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * 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; |
| |
| 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_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 |