#define DRV_PRIV_H
#include <pthread.h>
+#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
struct bo {
struct driver *drv;
struct bo_metadata meta;
+ bool is_test_buffer;
union bo_handle handles[DRV_MAX_PLANES];
void *priv;
};
uint64_t use_flags);
int (*bo_create_with_modifiers)(struct bo *bo, uint32_t width, uint32_t height,
uint32_t format, const uint64_t *modifiers, uint32_t count);
+ // Either both or neither _metadata functions must be implemented.
+ // If the functions are implemented, bo_create and bo_create_with_modifiers must not be.
+ int (*bo_compute_metadata)(struct bo *bo, uint32_t width, uint32_t height, uint32_t format,
+ uint64_t use_flags, const uint64_t *modifiers, uint32_t count);
+ int (*bo_create_from_metadata)(struct bo *bo);
int (*bo_destroy)(struct bo *bo);
int (*bo_import)(struct bo *bo, struct drv_import_fd_data *data);
void *(*bo_map)(struct bo *bo, struct vma *vma, size_t plane, uint32_t map_flags);
int (*bo_invalidate)(struct bo *bo, struct mapping *mapping);
int (*bo_flush)(struct bo *bo, struct mapping *mapping);
uint32_t (*resolve_format)(struct driver *drv, uint32_t format, uint64_t use_flags);
+ size_t (*num_planes_from_modifier)(struct driver *drv, uint32_t format, uint64_t modifier);
+ int (*resource_info)(struct bo *bo, uint32_t strides[DRV_MAX_PLANES],
+ uint32_t offsets[DRV_MAX_PLANES]);
};
// clang-format off