- int (*bo_create)(struct bo *bo, uint32_t width, uint32_t height,
- drv_format_t format, uint32_t flags);
- void* (*bo_map)(struct bo *bo, struct map_info *data, size_t plane);
+ int (*bo_create)(struct bo *bo, uint32_t width, uint32_t height, uint32_t format,
+ 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);