/* * Mesa 3-D graphics library * * Copyright (C) 2023 Roman Stratiienko (r.stratiienko@gmail.com) * SPDX-License-Identifier: MIT */ #ifndef U_GRALLOC_INTERNAL_H #define U_GRALLOC_INTERNAL_H #ifdef __cplusplus extern "C" { #endif #include "u_gralloc.h" struct u_gralloc_ops { int (*get_buffer_basic_info)(struct u_gralloc *gralloc, struct u_gralloc_buffer_handle *hnd, struct u_gralloc_buffer_basic_info *out); int (*get_buffer_color_info)(struct u_gralloc *gralloc, struct u_gralloc_buffer_handle *hnd, struct u_gralloc_buffer_color_info *out); int (*get_front_rendering_usage)(struct u_gralloc *gralloc, uint64_t *out_usage); int (*destroy)(struct u_gralloc *gralloc); }; struct u_gralloc { struct u_gralloc_ops ops; int type; }; extern struct u_gralloc *u_gralloc_cros_api_create(void); #ifdef USE_IMAPPER4_METADATA_API extern struct u_gralloc *u_gralloc_imapper_api_create(void); #endif extern struct u_gralloc *u_gralloc_qcom_create(void); extern struct u_gralloc *u_gralloc_libdrm_create(void); extern struct u_gralloc *u_gralloc_fallback_create(void); /* Helpers for legacy grallocs */ struct android_ycbcr; bool is_hal_format_yuv(int native); int get_hal_format_bpp(int native); int get_fourcc_from_hal_format(int native); int bufferinfo_from_ycbcr(const struct android_ycbcr *ycbcr, struct u_gralloc_buffer_handle *hnd, struct u_gralloc_buffer_basic_info *out); #ifdef __cplusplus } #endif #endif /* U_GRALLOC_INTERNAL_H */