summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Allansson <fredrik.allansson@stericsson.com>2010-09-20 09:42:33 +0200
committerRobert FEKETE <robert.fekete@stericsson.com>2010-09-21 16:36:22 +0200
commit1ed6bfdc0327fc89baa96f6236200da7799b8010 (patch)
treeb610008300d0deda2f7ea80bd22a5d3ce2cfb940
parentbd22b2300c0741bfa3e294443dc86a847adbb24f (diff)
b2r2lib: Support for hwmem buffers
The B2R2 library has been updated to support hwmem buffers. ST-Ericsson ID: WP269630 Change-Id: I8e96dac7dddf9b0cd0bac6226052ed3646e940c6 Signed-off-by: Fredrik Allansson <fredrik.allansson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/5196 Reviewed-by: Robert FEKETE <robert.fekete@stericsson.com> Tested-by: Robert FEKETE <robert.fekete@stericsson.com> Reviewed-by: Robert LIND <robert.lind@stericsson.com>
-rwxr-xr-xAndroid.mk3
-rwxr-xr-xinclude/blt_api.h20
-rwxr-xr-xsrc/b2r2_blt.h569
-rw-r--r--src/blt_b2r2.c2
4 files changed, 14 insertions, 580 deletions
diff --git a/Android.mk b/Android.mk
index f04dff8..c20deea 100755
--- a/Android.mk
+++ b/Android.mk
@@ -25,9 +25,6 @@ LOCAL_SHARED_LIBRARIES := liblog
LOCAL_MODULE := libblt_hw
-LOCAL_MODULE_PATH :=
-
LOCAL_MODULE_TAGS := eng
-#include $(BUILD_STATIC_LIBRARY)
include $(BUILD_SHARED_LIBRARY)
diff --git a/include/blt_api.h b/include/blt_api.h
index 1b0c1d0..0633e04 100755
--- a/include/blt_api.h
+++ b/include/blt_api.h
@@ -226,13 +226,13 @@ enum blt_ptr_type {
*/
BLT_PTR_PHYSICAL,
/**
- * @brief Use fd and offset to determine the userspace virtual address.
+ * @brief Use fd and offset to determine buffer location.
*/
BLT_PTR_FD_OFFSET,
/**
- * @brief GEM address
+ * @brief Use hwmem_buf_name and offset to determine buffer location.
*/
- BLT_PTR_GEM,
+ BLT_PTR_HWMEM_BUF_NAME_OFFSET,
};
/**
@@ -244,12 +244,18 @@ struct blt_buf {
*/
enum blt_ptr_type type;
/**
+ * @brief Hwmem buffer name.
+ */
+ int32_t hwmem_buf_name;
+ /**
* @brief File descriptor (e.g. file handle to a pmem device)
*/
int32_t fd;
/**
- * @brief Offset in file. If 'type' is set to BLT_PTR_VIRTUAL,
- * then the offset is interpreted as plain userspace virtual address
+ * @brief Offset where buffer can be found. When used in
+ * conjunction with a hwmem buffer the offset must be a multiple
+ * of the image size. If 'type' is set to BLT_PTR_VIRTUAL or
+ * BLT_PTR_PHYSICAL, then the offset is interpreted as an address.
*/
uint32_t offset;
/**
@@ -259,8 +265,8 @@ struct blt_buf {
/**
* @brief Pointer to the bitmap data. This field can be used to specify
* an alternative way to access the buffer. Whenever the 'bits' pointer
- * is set to non-NULL, the underlying implementation
- * is free to decide whether or not to use it in favor of 'fd' and/or 'offset'.
+ * is set to non-NULL, the underlying implementation is free to decide
+ * whether or not to use it in favor of other ways to locate the buffer.
*/
void *bits;
};
diff --git a/src/b2r2_blt.h b/src/b2r2_blt.h
deleted file mode 100755
index b85f46d..0000000
--- a/src/b2r2_blt.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * ST-Ericsson B2R2 user interface
- *
- * Author: Robert Fekete <robert.fekete@stericsson.com>
- * Author: Paul Wannback
- * for ST-Ericsson.
- *
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-
-#ifndef _LINUX_VIDEO_B2R2_BLT_H
-#define _LINUX_VIDEO_B2R2_BLT_H
-
-#include <linux/types.h>
-
-/**
- * struct b2r2_blt_rect - Specifies a B2R2 rectangle
- *
- * @left: X-coordinate of top left corner
- * @top: Y-coordinate of top left corner
- * @width: Rectangle width. Must be >= 0.
- * @height: Rectangle height. Must be >= 0.
- */
-struct b2r2_blt_rect {
- __s32 x;
- __s32 y;
- __s32 width;
- __s32 height;
-};
-
-/**
- * enum b2r2_blt_fmt - Defines the available B2R2 buffer formats
- *
- * Inspired by Khronos OpenMAX, please see
- * OpenMAX IL specification for detailed descriptions of the formats
- *
- * @B2R2_BLT_FMT_UNUSED: Placeholder value when format is unknown,
- * or specified using a vendor-specific means.
- * @B2R2_BLT_FMT_16_BIT_ARGB4444: 16 bits per pixel ARGB format with colors
- * stored as Alpha 15:12, Red 11:8, Green 7:4, and Blue 3:0.
- * @B2R2_BLT_FMT_16_BIT_ARGB1555: 16 bits per pixel ARGB format with colors
- * stored as Alpha 15, Red 14:10, Green 9:5, and Blue 4:0.
- * @B2R2_BLT_FMT_16_BIT_RGB565: 16 bits per pixel RGB format with colors
- * stored as Red 15:11, Green 10:5, and Blue 4:0.
- * @B2R2_BLT_FMT_24_BIT_RGB888: 24 bits per pixel RGB format with colors
- * stored as Red 23:16, Green 15:8, and Blue 7:0.
- * @B2R2_BLT_FMT_32_BIT_ARGB8888: 32 bits per pixel ARGB format with colors
- * stored as Alpha 31:24, Red 23:16, Green 15:8, and Blue 7:0.
- * @B2R2_BLT_FMT_YUV420_PACKED_PLANAR: YUV planar format, organized with
- * three separate planes for each color component, namely Y, U, and V.
- * U and V pixels are sub-sampled by a factor of two both horizontally and
- * vertically. The buffer shall contain a plane of Y, U, and V data in this
- * order
- * @B2R2_BLT_FMT_YUV422_PACKED_PLANAR: YUV planar format, organized with
- * three separate planes for each color component, namely Y, U, and V.
- * U and V pixels are subsampled by a factor of two horizontally.
- * The buffer shall contain a plane of Y, U, and V data in this order.
- * @B2R2_BLT_FMT_Y_CB_Y_CR: 16 bits per pixel YUV interleaved format organized
- * as YUYV (i.e., YCbYCr).
- * (Corresponds to YUV422 interleaved)
- * @B2R2_BLT_FMT_CB_Y_CR_Y: 16 bits per pixel YUV interleaved format organized
- * as UYVY (i.e., CbYCrY).
- * (Corresponds to YUV422R)
- * @B2R2_BLT_FMT_YUV420_PACKED_SEMI_PLANAR: YUV planar format, organized with
- * a first plane containing Y pixels, and a second plane containing U and V
- * pixels interleaved with the first U value first. U and V pixels are
- * sub-sampled by a factor of two both horizontally and vertically. The buffer
- * shall contain a plane of Y, U and V data.
- * (Same as B2R2 420 Raster 2 buffer - 420 R2B)
- * @B2R2_BLT_FMT_YUV422_PACKED_SEMI_PLANAR: YUV planar format, organized with
- * a first plane containing Y pixels, and a second plane containing U and V
- * pixels interleaved with the first U value first. U and V pixels are
- * sub-sampled by a factor of two horizontally. The buffer shall contain a
- * plane of Y, U and V data.
- * (Same as B2R2 422 Raster 2 buffer - 422 R2B)
- * @B2R2_BLT_FMT_32_BIT_ABGR8888: 32 bits per pixel ABGR format with colors
- * stored as Alpha 31:24,Blue 23:16, Green 15:8, and Red 7:0.
- * @B2R2_BLT_FMT_24_BIT_ARGB8565: 24 bits per pixel ARGB format with colors
- * stored as Alpha 23:16, Red 15:11, Green 10:5, and Blue 4:0.
- * @B2R2_BLT_FMT_24_BIT_YUV888: 24 bits per pixel YUV format with colors
- * stored as Y 23:16, U 15:8, and V 7:0.
- * @B2R2_BLT_FMT_32_BIT_AYUV8888: 32 bits per pixel AYUV format with colors
- * stored as Alpha 31:24, Y 23:16, U 15:8, and V 7:0.
- * @B2R2_BLT_FMT_YUV420_PACKED_SEMIPLANAR_MB_STE: Nomadik YUV 420 macro block
- * format, see B2R2 spec for details
- * @B2R2_BLT_FMT_YUV422_PACKED_SEMIPLANAR_MB_STE: Nomadik YUV 422 macro block
- * format, see B2R2 spec for details
- * @B2R2_BLT_FMT_1_BIT_A1: 1 bit per pixel A format, 1 bit alpha
- * @B2R2_BLT_FMT_8_BIT_A8: 8 bit per pixel A format, 8 bit alpha
- * @B2R2_BLT_FMT_YUV444_PACKED_PLANAR: YUV planar format, organized with
- * three separate planes, one for each color component, namely Y, U, and V.
- * All planes use full resolution, there is no subsampling.
- * The buffer shall contain a plane of Y, U, and V data in this order.
- */
-enum b2r2_blt_fmt {
- B2R2_BLT_FMT_UNUSED = 0,
- B2R2_BLT_FMT_16_BIT_ARGB4444 = 4,
- B2R2_BLT_FMT_16_BIT_ARGB1555 = 5,
- B2R2_BLT_FMT_16_BIT_RGB565 = 6,
- B2R2_BLT_FMT_24_BIT_RGB888 = 11,
- B2R2_BLT_FMT_32_BIT_ARGB8888 = 16,
- B2R2_BLT_FMT_YUV420_PACKED_PLANAR = 20,
- B2R2_BLT_FMT_YUV422_PACKED_PLANAR = 23,
- B2R2_BLT_FMT_Y_CB_Y_CR = 25,
- B2R2_BLT_FMT_CB_Y_CR_Y = 27,
- B2R2_BLT_FMT_YUV420_PACKED_SEMI_PLANAR = 39,
- B2R2_BLT_FMT_YUV422_PACKED_SEMI_PLANAR = 40,
- /* Extensions, non OpenMAX formats */
- B2R2_BLT_FMT_32_BIT_ABGR8888 = 0x7F000000, /* OpenMax vendor start */
- B2R2_BLT_FMT_24_BIT_ARGB8565 = 0x7F000001,
- B2R2_BLT_FMT_24_BIT_YUV888 = 0x7F000002,
- B2R2_BLT_FMT_32_BIT_AYUV8888 = 0x7F000003,
- B2R2_BLT_FMT_YUV420_PACKED_SEMIPLANAR_MB_STE = 0x7F000004,
- B2R2_BLT_FMT_YUV422_PACKED_SEMIPLANAR_MB_STE = 0x7F000005,
- B2R2_BLT_FMT_1_BIT_A1 = 0x7F000006,
- B2R2_BLT_FMT_8_BIT_A8 = 0x7F000007,
- B2R2_BLT_FMT_YUV444_PACKED_PLANAR = 0x7F000008,
-};
-
-/**
- * enum b2r2_blt_ptr_type - Specifies a B2R2 buffer pointer type
- *
- * @B2R2_BLT_PTR_NONE:
- * No pointer (NULL). E.g. src fill.
- * @B2R2_BLT_PTR_VIRTUAL:
- * Use offset as a userspace virtual address
- * @B2R2_BLT_PTR_PHYSICAL:
- * Use offset as a physical address
- * @B2R2_BLT_PTR_FD_OFFSET:
- * Use fd + offset to determine the userspace virtual address.
- */
-enum b2r2_blt_ptr_type {
- B2R2_BLT_PTR_NONE,
- B2R2_BLT_PTR_VIRTUAL,
- B2R2_BLT_PTR_PHYSICAL,
- B2R2_BLT_PTR_FD_OFFSET,
-};
-
-/**
- * struct b2r2_blt_buf - Specifies a B2R2 buffer pointer
- *
- * @type: Buffer pointer type
- * @fd: File descriptor (e.g. file handle to pmem or fb device)
- * @offset: Offset in file or userspace virtual address
- * @len: Size of buffer in bytes
- * @bits: Pointer to the bitmap data. This field can be used to specify
- * an alternative way to access the buffer. Whenever the 'bits' pointer
- * is set to non-NULL, the underlying implementation
- * is free to decide whether or not to use it in favor of 'fd' and/or 'offset'.
- */
-struct b2r2_blt_buf {
- enum b2r2_blt_ptr_type type;
- __s32 fd;
- __u32 offset;
- __u32 len;
- void *bits;
-};
-
-
-/**
- * struct b2r2_blt_img - Specifies a B2R2 image
- *
- * @fmt: Pixel format of image
- * @buf: Pixel buffer
- * @width: Width in pixels
- * @height: Height in pixels
- * @pitch: Pitch in bytes (from start of one line to start of next)
- */
-struct b2r2_blt_img {
- enum b2r2_blt_fmt fmt;
- struct b2r2_blt_buf buf;
- __s32 width;
- __s32 height;
- __u32 pitch;
-};
-
-
-/**
- * enum b2r2_blt_transform- Specifies rotation and flipping, mutually exclusive
- * @B2R2_BLT_TRANSFORM_NONE:
- * No rotation or flip
- * @B2R2_BLT_TRANSFORM_FLIP_H
- * Flip horizontally
- * @B2R2_BLT_TRANSFORM_FLIP_V
- * Flip vertically
- * @B2R2_BLT_TRANSFORM_CCW_ROT_90
- * Rotate 90 degrees counter clockwise
- * @B2R2_BLT_TRANSFORM_CCW_ROT_180
- * Rotate 180 degrees (same as flip horizontally together with
- * flip vertically)
- * @B2R2_BLT_TRANSFORM_CCW_ROT_270
- * Rotate 270 degrees counter clockwise
- * @B2R2_BLT_TRANSFORM_FLIP_H_CCW_ROT_90
- * Flip horizontally and then rotate 90 degrees counter clockwise
- * @B2R2_BLT_TRANSFORM_FLIP_V_CCW_ROT_90
- * Flip vertically and then rotate 90 degrees counter clockwise
- */
-enum b2r2_blt_transform {
- B2R2_BLT_TRANSFORM_NONE = 0,
- B2R2_BLT_TRANSFORM_FLIP_H = 1,
- B2R2_BLT_TRANSFORM_FLIP_V = 2,
- B2R2_BLT_TRANSFORM_CCW_ROT_90 = 4,
- B2R2_BLT_TRANSFORM_CCW_ROT_180 = 3,
- B2R2_BLT_TRANSFORM_CCW_ROT_270 = 7,
- B2R2_BLT_TRANSFORM_FLIP_H_CCW_ROT_90 = 5,
- B2R2_BLT_TRANSFORM_FLIP_V_CCW_ROT_90 = 6,
-};
-
-
-/**
- * enum b2r2_blt_flag - Flags that controls the B2R2 request
- *
- * Can be combined.
- *
- * @B2R2_BLT_FLAG_ASYNCH:
- * Asynchronous request. b2r2_blt will returns when the request
- * has been queued.
- * @B2R2_BLT_FLAG_DRY_RUN:
- * Dry run, just to check if request can be performed.
- * @B2R2_BLT_FLAG_PER_PIXEL_ALPHA_BLEND:
- * Enable per pixel alpha blend
- * @B2R2_BLT_FLAG_GLOBAL_ALPHA_BLEND:
- * Enable global alpha blend (alpha value in global_alpha)
- * @B2R2_BLT_FLAG_SOURCE_COLOR_KEY:
- * Enable source color key (color in src_color). Color should be in raw
- * format.
- * B2R2_BLT_FLAG_SOURCE_COLOR_KEY, B2R2_BLT_FLAG_SOURCE_FILL and
- * B2R2_BLT_FLAG_SOURCE_FILL_RAW cannot be specified at the same time.
- * B2R2_BLT_FLAG_SOURCE_COLOR_KEY and B2R2_BLT_FLAG_DEST_COLOR_KEY cannot be
- * specified at the same time.
- * @B2R2_BLT_FLAG_SOURCE_FILL:
- * Enable ARGB/AYUV source fill (color in src_color). Which of ARGB and AYUV
- * is determined by the destination format.
- * B2R2_BLT_FLAG_SOURCE_COLOR_KEY, B2R2_BLT_FLAG_SOURCE_FILL and
- * B2R2_BLT_FLAG_SOURCE_FILL_RAW cannot be specified at the same time
- * @B2R2_BLT_FLAG_SOURCE_FILL_RAW:
- * Enable raw color source fill (color in src_color)
- * B2R2_BLT_FLAG_SOURCE_COLOR_KEY, B2R2_BLT_FLAG_SOURCE_FILL and
- * B2R2_BLT_FLAG_SOURCE_FILL_RAW cannot be specified at the same time
- * @B2R2_BLT_FLAG_DEST_COLOR_KEY:
- * Enable dest color key (color in dst_color). Color in raw format.
- * @B2R2_BLT_FLAG_SRC_IS_NOT_PREMULT:
- * Source color not premultiplied (Valid for alpha formats only).
- * @B2R2_BLT_FLAG_DITHER:
- * Enable dithering
- * @B2R2_BLT_FLAG_BLUR:
- * Enable blur
- * @B2R2_BLT_FLAG_SOURCE_MASK:
- * Enable source mask
- * @B2R2_BLT_FLAG_DESTINATION_CLIP:
- * Enable destination clip rectangle
- * @B2R2_BLT_FLAG_INHERIT_PRIO
- * Inherit process priority
- * @B2R2_BLT_FLAG_REPORT_WHEN_DONE
- * Report through b2r2_blt file when done. A b2r2_blt_report structure is
- * read. Use poll() or select() if anything to read. (i.e. to help user space
- * to implement callback functionality)
- * @B2R2_BLT_FLAG_REPORT_PERFORMANCE
- * Include performance data in the report structure
- * @B2R2_BLT_FLAG_CLUT_COLOR_CORRECTION
- * Use color look-up table for color correction.
- * Pointer to the table must be specified in *clut field of
- * the b2r2_blt_req structure.
- * The table must map all input color values
- * for each channel to the desired output values.
- * It is an array with the following format:
- * R0 G0 B0 A0 R1 G1 B1 A1...R255 G255 B255 A255
- * where R0 is the 8 bit output value for red channel whenever its input
- * equals 0.
- * Similarly, R1 through R255 are the red channel outputs whenever
- * the channel's inputs equal 1 through 255 respectively.
- * Gn, Bn, An denote green, blue and alpha channel.
- * Whenever the input bitmap format lacks the alpha channel,
- * all alpha values in the color correction table should be set to 255.
- * Size of the array that specifies the color correction table
- * must be 1024 bytes.
- * A table that does not change anything has the form:
- * 0 0 0 0 1 1 1 1 2 2 2 2 ... 254 254 254 254 255 255 255 255.
- * CLUT color correction can be applied to YUV raster buffers as well,
- * in which case the RGB color channels are mapped onto YUV-space
- * as follows:
- * R = red chrominance
- * G = luminance
- * B = blue chrominance
- * A = alpha
- * If any of the planar or semi-planar formats is used, luminance cannot
- * be changed by the color correction table.
- */
-enum b2r2_blt_flag {
- B2R2_BLT_FLAG_ASYNCH = 0x1,
- B2R2_BLT_FLAG_DRY_RUN = 0x2,
- B2R2_BLT_FLAG_PER_PIXEL_ALPHA_BLEND = 0x4,
- B2R2_BLT_FLAG_GLOBAL_ALPHA_BLEND = 0x8,
- B2R2_BLT_FLAG_SOURCE_COLOR_KEY = 0x10,
- B2R2_BLT_FLAG_SOURCE_FILL = 0x20,
- B2R2_BLT_FLAG_SOURCE_FILL_RAW = 0x40,
- B2R2_BLT_FLAG_DEST_COLOR_KEY = 0x80,
- B2R2_BLT_FLAG_SRC_IS_NOT_PREMULT = 0x100,
- B2R2_BLT_FLAG_DITHER = 0x200,
- B2R2_BLT_FLAG_BLUR = 0x400,
- B2R2_BLT_FLAG_SOURCE_MASK = 0x800,
- B2R2_BLT_FLAG_DESTINATION_CLIP = 0x1000,
- B2R2_BLT_FLAG_INHERIT_PRIO = 0x2000,
- B2R2_BLT_FLAG_SRC_NO_CACHE_FLUSH = 0x4000,
- B2R2_BLT_FLAG_SRC_MASK_NO_CACHE_FLUSH = 0x8000,
- B2R2_BLT_FLAG_DST_NO_CACHE_FLUSH = 0x10000,
- B2R2_BLT_FLAG_REPORT_WHEN_DONE = 0x20000000,
- B2R2_BLT_FLAG_REPORT_PERFORMANCE = 0x40000000,
- B2R2_BLT_FLAG_CLUT_COLOR_CORRECTION = 0x80000000
-};
-
-
-/**
- * struct b2r2_blt_req - Specifies a request to B2R2
- *
- * @size: Size of this structure. Used for versioning. MUST be specified.
- * @flags: Flags that control the B2R2 request ORed together
- * @tfm: How source should be flipped and rotated when blitting
- * @prio: Priority (-20 to 19). Inherits process prio
- * if B2R2_BLT_FLAG_INHERIT_PRIO. Given priority is mapped onto B2R2.
- * TBD: How?
- * @clut: Pointer to the look-up table for color correction.
- * @src_img: Source image. Not used if source fill.
- * @src_mask: Source mask. Not used if source fill.
- * @src_rect: Source area to be blitted.
- * @src_color: Source fill color or color key
- * @dst_img: Destination image.
- * @dst_rect: Destination area to be blitted to.
- * @dst_color: Destination color key
- * @dst_clip_rect: Destination clip rectangle.
- * @global_alpha: Global alpha value (0 - 255)
- * @report1: Data 1 to report back when request is done.
- * See struct b2r2_blt_report.
- * @report2: Data 2 to report back when request is done.
- * See struct b2r2_blt_report.
- *
- */
-struct b2r2_blt_req {
- __u32 size;
- enum b2r2_blt_flag flags;
- enum b2r2_blt_transform transform;
- __s32 prio;
- void *clut;
- struct b2r2_blt_img src_img;
- struct b2r2_blt_img src_mask;
- struct b2r2_blt_rect src_rect;
- __u32 src_color;
- struct b2r2_blt_img dst_img;
- struct b2r2_blt_rect dst_rect;
- struct b2r2_blt_rect dst_clip_rect;
- __u32 dst_color;
- __u8 global_alpha;
- __u32 report1;
- __u32 report2;
-};
-
-/**
- * enum b2r2_blt_cap - Capabilities that can be queried for.
- *
- * Capabilities can be queried for a specific format or for formats in
- * general. To query for capabilities in general, specify BLT_FMT_UNUSED
- * as format.
- *
- * B2R2_BLT_CAP_UNUSED: Unused/unspecified capability
- * B2R2_BLT_CAP_FMT_SOURCE: Is format supported as source?
- * B2R2_BLT_CAP_FMT_SOURCE_MASK: Is format supported as source mask?
- * B2R2_BLT_CAP_FMT_DEST: Is format supported as dest?
- * B2R2_BLT_CAP_PER_PIXEL_ALPHA_BLEND: Is per pixel alpha blending supported
- * with format as source
- * B2R2_BLT_CAP_GLOBAL_ALPHA_BLEND: Is per global alpha blending supported
- * with format as source
- * B2R2_BLT_CAP_SOURCE_COLOR_KEY: Is source color key supported with format as
- * source
- * B2R2_BLT_CAP_SOURCE_FILL: Is source fill supported with format as source
- * B2R2_BLT_CAP_SOURCE_FILL_RAW: Is source fill raw supported with format as
- * dest
- * B2R2_BLT_CAP_DEST_COLOR_KEY: Is dest color key supported with format as dest
- * B2R2_BLT_CAP_DITHER: Is dithering supported with format as source
- * B2R2_BLT_CAP_BLUR: Is blur supported with format as source
- * B2R2_BLT_CAP_MINIFICATION_LIMIT: Minification limit (copybit support)
- * B2R2_BLT_CAP_MAGNIFICATION_LIMIT: Magnification limit (copybit support)
- * B2R2_BLT_CAP_SCALING_FRAC_BITS: Number of scaling fractional bits (copybit
- * support)
- * B2R2_BLT_CAP_ROTATION_STEP_DEG: Supported rotation step in degrees (copybit
- * support)
- */
-
-enum b2r2_blt_cap {
- B2R2_BLT_CAP_UNUSED = 0,
- /**
- * @brief Is format supported as source.
- */
- B2R2_BLT_CAP_FMT_SOURCE,
- /**
- * @brief Is format supported as source mask
- */
- B2R2_BLT_CAP_FMT_SOURCE_MASK,
- /**
- * @brief Is format supported as destination
- */
- B2R2_BLT_CAP_FMT_DEST,
- /**
- * @brief Is per pixel alpha blending supported with format as source
- */
- B2R2_BLT_CAP_PER_PIXEL_ALPHA_BLEND,
- /**
- * @brief Is global alpha blending supported with format as source
- */
- B2R2_BLT_CAP_GLOBAL_ALPHA_BLEND,
- /**
- * @brief Is source color key supported with format as source
- */
- B2R2_BLT_CAP_SOURCE_COLOR_KEY,
- /**
- * @brief Is source fill supported with format as source
- */
- B2R2_BLT_CAP_SOURCE_FILL,
- /**
- * @brief Is source fill raw supported with format as dest
- */
- B2R2_BLT_CAP_SOURCE_FILL_RAW,
- /**
- * @brief Is dest color key supported with format as dest
- */
- B2R2_BLT_CAP_DEST_COLOR_KEY,
- /**
- * @brief Is dithering supported with format as source
- */
- B2R2_BLT_CAP_DITHER,
- /**
- * @brief Is blur supported with format as source
- */
- B2R2_BLT_CAP_BLUR,
- /**
- * @brief Minification limit (copybit support)
- */
- B2R2_BLT_CAP_MINIFICATION_LIMIT,
- /**
- * @brief Magnification limit (copybit support)
- */
- B2R2_BLT_CAP_MAGNIFICATION_LIMIT,
- /**
- * @brief Number of scaling fractional bits (copybit support)
- */
- B2R2_BLT_CAP_SCALING_FRAC_BITS,
- /**
- * @brief Supported rotation step in degrees (copybit support)
- */
- B2R2_BLT_CAP_ROTATION_STEP_DEG,
-};
-
-/**
- * struct b2r2_blt_query_cap - Query B2R2 capabilities
- *
- * fmt: Format to query capabilities for or BLT_FMT_UNUSED for all
- * cap: Capability to query for
- * result: Returned capability. Interpretaion of this variable varies
- * with the capability queried
- */
-struct b2r2_blt_query_cap {
- enum b2r2_blt_fmt fmt;
- enum b2r2_blt_cap cap;
- __u32 result;
-};
-
-/**
- * struct b2r2_blt_report - Report from B2R2 driver back to user space
- *
- * This structure can be read from B2R2 driver if B2R2_BLT_FLAG_REPORT_WHEN_DONE
- * flag was specified when the request was issued.
- *
- * @request_id: The id for the request, same as reported from blt_request
- * @report1: Client data specified in struct blt_request
- * @report2: Client data specified in struct blt_request
- * @usec_elapsed: Number of microseconds needed to perform this blit
- * if B2R2_BLT_FLAG_REPORT_PERFORMANCE was specified when the
- * request was issued.
- *
- */
-struct b2r2_blt_report {
- __u32 request_id;
- __u32 report1;
- __u32 report2;
- __u32 usec_elapsed;
-};
-
-/**
- * B2R2 BLT driver is used in the following way:
- *
- * Obtain a file descriptor to the driver:
- * fd = open("/dev/b2r2_blt", O_RDWR);
- *
- * Issue requests:
- * struct b2r2_blt_request blt_request;
- * blt_request.size = sizeof(blt_request);
- * ... Fill request with data...
- *
- * request_id = ioctl(fd, B2R2_BLT_IOC, (__u32) &blt_request);
- *
- * Wait for a request to finish
- * ret = ioctl(fd, B2R2_BLT_SYNCH_IOC, (__u32) request_id);
- *
- * Wait for all requests from this context to finish
- * ret = ioctl(fd, B2R2_BLT_SYNCH_IOC, (__u32) 0);
- *
- * Wait indefinitely for report data from driver:
- * pollfd.fd = fd
- * pollfd.events = 0xFFFFFFFF; // ???
- * pollfd.revents = 0;
- * ret = poll(&pollfd, 1, -1); // select() can be used too
- *
- * Read report data from driver
- * struct b2r2_blt_report blt_report;
- *
- * nread = read(fd, &blt_report, sizeof(blt_report));
- *
- * Close the driver
- * close(fd);
- */
-
-/* B2R2 BLT IOCTLS */
-
-/**
- * B2R2_BLT_IOC_MAGIC is ioctl type group for B2R2 driver
- */
-#define B2R2_BLT_IOC_MAGIC 0xb2
-
-/**
- * The B2R2_BLT_IOC ioctl adds a blit request to B2R2.
- *
- * The ioctl returns when the blit has been performed if not
- * asynchronous execution has been specified. If asynchronous,
- * control is returned as soon as the request has been queued.
- *
- * Supplied parameter shall be a pointer to a struct b2r2_blt_req.
- *
- * Returns an unique request id if >= 0, else a negative error code.
- * This request id can be waited for using B2R2_BLT_SYNC_IOC.
- * Return values: -ESOMERROR Description of an error
- */
-#define B2R2_BLT_IOC _IOW(B2R2_BLT_IOC_MAGIC, 1, struct b2r2_blt_req)
-
-/**
- * The B2R2_BLT_SYNC_IOC waits for all or a specified request to be finished.
- *
- * Supplied parameter shall be a request id previously returned by
- * B2R2_BLT_IOC or 0 for all requests.
- *
- * Returns 0 if OK, else a negative error code
- * Return value: -ESOMERROR Description of an error
- */
-#define B2R2_BLT_SYNCH_IOC _IOW(B2R2_BLT_IOC_MAGIC, 2, int)
-
-/**
- * The BLT_QUERY_CAP_IOC returns capability information for all or
- * for a certain format
- *
- * Supplied parameter shall be a pointer to a struct b2r2_blt_query_cap.
- *
- * @return Returns 0 if OK, else a negative error code
- * @retval -ESOMERROR Description of an error
- */
-#define B2R2_BLT_QUERY_CAP_IOC _IOWR(B2R2_BLT_IOC_MAGIC, 3, \
- struct b2r2_blt_query_cap)
-
-#endif /* #ifdef _LINUX_VIDEO_B2R2_BLT_H */
diff --git a/src/blt_b2r2.c b/src/blt_b2r2.c
index 0b62240..5cb4dbb 100644
--- a/src/blt_b2r2.c
+++ b/src/blt_b2r2.c
@@ -21,7 +21,7 @@
#include <string.h>
#include <unistd.h>
-#include "b2r2_blt.h"
+#include <video/b2r2_blt.h>
#define LOG_TAG "libblt_hw"