blob: 80975607f44a4c4bef359ca9c780d2b8bf379003 [file] [log] [blame]
/*
* 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 */