uint64_t cros_gralloc_convert_flags(int flags)
{
- if (flags & GRALLOC_USAGE_FOREIGN_BUFFERS) {
- cros_gralloc_error("Foreign buffers found: %d", flags);
- return CROS_GRALLOC_ERROR_BAD_VALUE;
- }
-
- if ((flags & sw_access()) && (flags & GRALLOC_USAGE_PROTECTED)) {
- cros_gralloc_error("Software access not allowed");
- return CROS_GRALLOC_ERROR_BAD_VALUE;
- }
-
uint64_t usage = DRV_BO_USE_NONE;
if (flags & GRALLOC_USAGE_CURSOR)
if ((flags & sw_write()) == GRALLOC_USAGE_SW_WRITE_OFTEN)
usage |= DRV_BO_USE_SW_WRITE_OFTEN;
if (flags & GRALLOC_USAGE_HW_TEXTURE)
- usage |= DRV_BO_USE_HW_TEXTURE;
+ usage |= DRV_BO_USE_RENDERING;
if (flags & GRALLOC_USAGE_HW_RENDER)
- usage |= DRV_BO_USE_HW_RENDER;
+ usage |= DRV_BO_USE_RENDERING;
if (flags & GRALLOC_USAGE_HW_2D)
- usage |= DRV_BO_USE_HW_2D;
+ usage |= DRV_BO_USE_RENDERING;
if (flags & GRALLOC_USAGE_HW_COMPOSER)
- usage |= DRV_BO_USE_HW_COMPOSER;
+ /* HWC wants to use display hardware, but can defer to OpenGL. */
+ usage |= DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING;
if (flags & GRALLOC_USAGE_HW_FB)
- usage |= DRV_BO_USE_HW_FB;
+ usage |= DRV_BO_USE_SCANOUT;
if (flags & GRALLOC_USAGE_EXTERNAL_DISP)
- usage |= DRV_BO_USE_EXTERNAL_DISP;
+ /* We're ignoring this flag until we decide what to with display link */
+ usage |= DRV_BO_USE_NONE;
if (flags & GRALLOC_USAGE_PROTECTED)
usage |= DRV_BO_USE_PROTECTED;
if (flags & GRALLOC_USAGE_HW_VIDEO_ENCODER)
#define DRV_BO_USE_SW_WRITE_NEVER (1ull << 7)
#define DRV_BO_USE_SW_WRITE_RARELY (1ull << 8)
#define DRV_BO_USE_SW_WRITE_OFTEN (1ull << 9)
-#define DRV_BO_USE_HW_TEXTURE (1ull << 10)
-#define DRV_BO_USE_HW_RENDER (1ull << 11)
-#define DRV_BO_USE_HW_2D (1ull << 12)
-#define DRV_BO_USE_HW_COMPOSER (1ull << 13)
-#define DRV_BO_USE_HW_FB (1ull << 14)
-#define DRV_BO_USE_EXTERNAL_DISP (1ull << 15)
-#define DRV_BO_USE_PROTECTED (1ull << 16)
-#define DRV_BO_USE_HW_VIDEO_ENCODER (1ull << 17)
-#define DRV_BO_USE_HW_CAMERA_WRITE (1ull << 18)
-#define DRV_BO_USE_HW_CAMERA_READ (1ull << 19)
-#define DRV_BO_USE_HW_CAMERA_ZSL (1ull << 20)
-#define DRV_BO_USE_RENDERSCRIPT (1ull << 21)
+#define DRV_BO_USE_EXTERNAL_DISP (1ull << 10)
+#define DRV_BO_USE_PROTECTED (1ull << 11)
+#define DRV_BO_USE_HW_VIDEO_ENCODER (1ull << 12)
+#define DRV_BO_USE_HW_CAMERA_WRITE (1ull << 13)
+#define DRV_BO_USE_HW_CAMERA_READ (1ull << 14)
+#define DRV_BO_USE_HW_CAMERA_ZSL (1ull << 15)
+#define DRV_BO_USE_RENDERSCRIPT (1ull << 16)
typedef enum {
DRV_FORMAT_NONE,
tiling_mode = I915_TILING_NONE;
else if (flags & DRV_BO_USE_SCANOUT)
tiling_mode = I915_TILING_X;
- else if (flags & (DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_SW_READ_RARELY |
- DRV_BO_USE_HW_2D | DRV_BO_USE_SW_WRITE_RARELY))
+ else if (flags & (DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY |
+ DRV_BO_USE_SW_WRITE_RARELY))
tiling_mode = I915_TILING_Y;
i915_align_dimensions(drv, tiling_mode, &width, &height, bpp);
.bo_map = i915_bo_map,
.resolve_format = i915_resolve_format,
.format_list = {
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_XRGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_ARGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_RGB565, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_UYVY, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_UYVY, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_YUYV, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_YUYV, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_XRGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ARGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_RGB565, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_UYVY, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_UYVY, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_YUYV, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_YUYV, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
{DRV_FORMAT_R8, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
{DRV_FORMAT_GR88, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
{DRV_FORMAT_YVU420, DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_YVU420, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY |
+ DRV_BO_USE_SW_WRITE_RARELY},
}
};
.bo_map = mediatek_bo_map,
.resolve_format = mediatek_resolve_format,
.format_list = {
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR
+ | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
{DRV_FORMAT_YVU420, DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
DRV_BO_USE_SW_WRITE_OFTEN},
}
.bo_map = rockchip_bo_map,
.resolve_format = rockchip_resolve_format,
.format_list = {
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
- DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
- DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
+ {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING
+ | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING |
- DRV_BO_USE_HW_TEXTURE | DRV_BO_USE_HW_RENDER |
- DRV_BO_USE_HW_2D | DRV_BO_USE_SW_READ_RARELY |
- DRV_BO_USE_SW_WRITE_RARELY},
+ DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR |
DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_YVU420, DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_YVU420, DRV_BO_USE_LINEAR | DRV_BO_USE_SCANOUT |
+ DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
}
};
.bo_map = tegra_bo_map,
.format_list = {
/* Linear support */
- {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
- {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
- DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
- DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR
+ | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
+ {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR
+ | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
/* Blocklinear support */
{DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING |
- DRV_BO_USE_HW_TEXTURE | DRV_BO_USE_HW_RENDER |
- DRV_BO_USE_HW_2D | DRV_BO_USE_SW_READ_RARELY |
- DRV_BO_USE_SW_WRITE_RARELY},
+ DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
{DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING |
- DRV_BO_USE_HW_TEXTURE | DRV_BO_USE_HW_RENDER |
- DRV_BO_USE_HW_2D | DRV_BO_USE_SW_READ_RARELY |
- DRV_BO_USE_SW_WRITE_RARELY},
+ DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
}
};