X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=drv.h;h=7abaf79a4e27f101737fffed3a4727f51fe86c65;hb=bc8c5930f7db53ef0faa6c264c5da805fab2f17a;hp=18e9233959b1acec0f937da2810cf9c14c92b6e9;hpb=1b1d56ae4018eaed1da9d6e7032554156b7be020;p=android-x86%2Fexternal-minigbm.git diff --git a/drv.h b/drv.h index 18e9233..7abaf79 100644 --- a/drv.h +++ b/drv.h @@ -33,12 +33,17 @@ extern "C" { #define BO_USE_EXTERNAL_DISP (1ull << 10) #define BO_USE_PROTECTED (1ull << 11) #define BO_USE_HW_VIDEO_ENCODER (1ull << 12) -#define BO_USE_HW_CAMERA_WRITE (1ull << 13) -#define BO_USE_HW_CAMERA_READ (1ull << 14) -#define BO_USE_HW_CAMERA_ZSL (1ull << 15) +#define BO_USE_CAMERA_WRITE (1ull << 13) +#define BO_USE_CAMERA_READ (1ull << 14) #define BO_USE_RENDERSCRIPT (1ull << 16) #define BO_USE_TEXTURE (1ull << 17) +/* Map flags */ +#define BO_MAP_NONE 0 +#define BO_MAP_READ (1 << 0) +#define BO_MAP_WRITE (1 << 1) +#define BO_MAP_READ_WRITE (BO_MAP_READ | BO_MAP_WRITE) + /* This is our extension to . We need to make sure we don't step * on the namespace of already defined formats, which can be done by using invalid * fourcc codes. @@ -49,10 +54,6 @@ extern "C" { #define DRM_FORMAT_FLEX_IMPLEMENTATION_DEFINED fourcc_code('9', '9', '9', '8') #define DRM_FORMAT_FLEX_YCbCr_420_888 fourcc_code('9', '9', '9', '9') -#define BO_COMMON_USE_MASK BO_USE_LINEAR | BO_USE_RENDERING | \ - BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN | \ - BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY | \ - BO_USE_TEXTURE // clang-format on struct driver; struct bo; @@ -70,17 +71,18 @@ struct drv_import_fd_data { int fds[DRV_MAX_PLANES]; uint32_t strides[DRV_MAX_PLANES]; uint32_t offsets[DRV_MAX_PLANES]; - uint32_t sizes[DRV_MAX_PLANES]; uint64_t format_modifiers[DRV_MAX_PLANES]; uint32_t width; uint32_t height; uint32_t format; + uint64_t use_flags; }; struct map_info { void *addr; size_t length; uint32_t handle; + uint32_t map_flags; int32_t refcount; void *priv; }; @@ -93,12 +95,13 @@ int drv_get_fd(struct driver *drv); const char *drv_get_name(struct driver *drv); -struct combination *drv_get_combination(struct driver *drv, uint32_t format, uint64_t usage); +struct combination *drv_get_combination(struct driver *drv, uint32_t format, uint64_t use_flags); -struct bo *drv_bo_new(struct driver *drv, uint32_t width, uint32_t height, uint32_t format); +struct bo *drv_bo_new(struct driver *drv, uint32_t width, uint32_t height, uint32_t format, + uint64_t use_flags); struct bo *drv_bo_create(struct driver *drv, uint32_t width, uint32_t height, uint32_t format, - uint64_t flags); + uint64_t use_flags); struct bo *drv_bo_create_with_modifiers(struct driver *drv, uint32_t width, uint32_t height, uint32_t format, const uint64_t *modifiers, uint32_t count); @@ -108,9 +111,13 @@ void drv_bo_destroy(struct bo *bo); struct bo *drv_bo_import(struct driver *drv, struct drv_import_fd_data *data); void *drv_bo_map(struct bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, - uint32_t flags, struct map_info **map_data, size_t plane); + uint32_t map_flags, struct map_info **map_data, size_t plane); + +int drv_bo_unmap(struct bo *bo, struct map_info *data); -int drv_bo_unmap(struct bo *bo, struct map_info *map_data); +int drv_bo_invalidate(struct bo *bo, struct map_info *data); + +int drv_bo_flush(struct bo *bo, struct map_info *data); uint32_t drv_bo_get_width(struct bo *bo); @@ -136,12 +143,10 @@ uint32_t drv_bo_get_format(struct bo *bo); uint32_t drv_bo_get_stride_in_pixels(struct bo *bo); -uint32_t drv_resolve_format(struct driver *drv, uint32_t format); +uint32_t drv_resolve_format(struct driver *drv, uint32_t format, uint64_t use_flags); size_t drv_num_planes_from_format(uint32_t format); -uint32_t drv_size_from_format(uint32_t format, uint32_t stride, uint32_t height, size_t plane); - uint32_t drv_num_buffers_per_bo(struct bo *bo); #ifdef __cplusplus