You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
6.3 KiB
251 lines
6.3 KiB
/*
|
|
* Copyright@ Samsung Electronics Co. LTD
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef _SEC_G2D_DRIVER_H_
|
|
#define _SEC_G2D_DRIVER_H_
|
|
typedef unsigned char u8;
|
|
typedef unsigned short u16;
|
|
typedef unsigned long u32;
|
|
|
|
#define SEC_G2D_DEV_NAME "/dev/fimg2d"
|
|
|
|
#define G2D_IOCTL_MAGIC 'G'
|
|
|
|
#define G2D_BLIT _IO(G2D_IOCTL_MAGIC,0)
|
|
#define G2D_GET_VERSION _IO(G2D_IOCTL_MAGIC,1)
|
|
#define G2D_GET_MEMORY _IOR(G2D_IOCTL_MAGIC,2, unsigned int)
|
|
#define G2D_GET_MEMORY_SIZE _IOR(G2D_IOCTL_MAGIC,3, unsigned int)
|
|
#define G2D_DMA_CACHE_CLEAN _IOWR(G2D_IOCTL_MAGIC,4, struct g2d_dma_info)
|
|
#define G2D_DMA_CACHE_FLUSH _IOWR(G2D_IOCTL_MAGIC,5, struct g2d_dma_info)
|
|
#define G2D_SYNC _IO(G2D_IOCTL_MAGIC,6)
|
|
#define G2D_RESET _IO(G2D_IOCTL_MAGIC,7)
|
|
|
|
#define G2D_MAX_WIDTH (2048)
|
|
#define G2D_MAX_HEIGHT (2048)
|
|
|
|
#define G2D_ALPHA_VALUE_MAX (255)
|
|
|
|
#define G2D_POLLING (1<<0)
|
|
#define G2D_INTERRUPT (0<<0)
|
|
#define G2D_CACHE_OP (1<<1)
|
|
#define G2D_NONE_INVALIDATE (0<<1)
|
|
#define G2D_HYBRID_MODE (1<<2)
|
|
|
|
typedef enum {
|
|
G2D_ROT_0 = 0,
|
|
G2D_ROT_90,
|
|
G2D_ROT_180,
|
|
G2D_ROT_270,
|
|
G2D_ROT_X_FLIP,
|
|
G2D_ROT_Y_FLIP
|
|
} G2D_ROT_DEG;
|
|
|
|
typedef enum {
|
|
G2D_ALPHA_BLENDING_MIN = 0, // wholly transparent
|
|
G2D_ALPHA_BLENDING_MAX = 255, // 255
|
|
G2D_ALPHA_BLENDING_OPAQUE = 256, // opaque
|
|
} G2D_ALPHA_BLENDING_MODE;
|
|
|
|
typedef enum {
|
|
G2D_COLORKEY_NONE = 0,
|
|
G2D_COLORKEY_SRC_ON,
|
|
G2D_COLORKEY_DST_ON,
|
|
G2D_COLORKEY_SRC_DST_ON,
|
|
} G2D_COLORKEY_MODE;
|
|
|
|
typedef enum {
|
|
G2D_BLUE_SCREEN_NONE = 0,
|
|
G2D_BLUE_SCREEN_TRANSPARENT,
|
|
G2D_BLUE_SCREEN_WITH_COLOR,
|
|
} G2D_BLUE_SCREEN_MODE;
|
|
|
|
typedef enum {
|
|
G2D_ROP_SRC = 0,
|
|
G2D_ROP_DST,
|
|
G2D_ROP_SRC_AND_DST,
|
|
G2D_ROP_SRC_OR_DST,
|
|
G2D_ROP_3RD_OPRND,
|
|
G2D_ROP_SRC_AND_3RD_OPRND,
|
|
G2D_ROP_SRC_OR_3RD_OPRND,
|
|
G2D_ROP_SRC_XOR_3RD_OPRND,
|
|
G2D_ROP_DST_OR_3RD,
|
|
} G2D_ROP_TYPE;
|
|
|
|
typedef enum {
|
|
G2D_THIRD_OP_NONE = 0,
|
|
G2D_THIRD_OP_PATTERN,
|
|
G2D_THIRD_OP_FG,
|
|
G2D_THIRD_OP_BG
|
|
} G2D_THIRD_OP_MODE;
|
|
|
|
typedef enum {
|
|
G2D_BLACK = 0,
|
|
G2D_RED,
|
|
G2D_GREEN,
|
|
G2D_BLUE,
|
|
G2D_WHITE,
|
|
G2D_YELLOW,
|
|
G2D_CYAN,
|
|
G2D_MAGENTA
|
|
} G2D_COLOR;
|
|
|
|
typedef enum {
|
|
G2D_RGB_565 = ((0<<4)|2),
|
|
|
|
G2D_ABGR_8888 = ((2<<4)|1),
|
|
G2D_BGRA_8888 = ((3<<4)|1),
|
|
G2D_ARGB_8888 = ((0<<4)|1),
|
|
G2D_RGBA_8888 = ((1<<4)|1),
|
|
|
|
G2D_XBGR_8888 = ((2<<4)|0),
|
|
G2D_BGRX_8888 = ((3<<4)|0),
|
|
G2D_XRGB_8888 = ((0<<4)|0),
|
|
G2D_RGBX_8888 = ((1<<4)|0),
|
|
|
|
G2D_ABGR_1555 = ((2<<4)|4),
|
|
G2D_BGRA_5551 = ((3<<4)|4),
|
|
G2D_ARGB_1555 = ((0<<4)|4),
|
|
G2D_RGBA_5551 = ((1<<4)|4),
|
|
|
|
G2D_XBGR_1555 = ((2<<4)|3),
|
|
G2D_BGRX_5551 = ((3<<4)|3),
|
|
G2D_XRGB_1555 = ((0<<4)|3),
|
|
G2D_RGBX_5551 = ((1<<4)|3),
|
|
|
|
G2D_ABGR_4444 = ((2<<4)|6),
|
|
G2D_BGRA_4444 = ((3<<4)|6),
|
|
G2D_ARGB_4444 = ((0<<4)|6),
|
|
G2D_RGBA_4444 = ((1<<4)|6),
|
|
|
|
G2D_XBGR_4444 = ((2<<4)|5),
|
|
G2D_BGRX_4444 = ((3<<4)|5),
|
|
G2D_XRGB_4444 = ((0<<4)|5),
|
|
G2D_RGBX_4444 = ((1<<4)|5),
|
|
|
|
G2D_PACKED_BGR_888 = ((2<<4)|7),
|
|
G2D_PACKED_RGB_888 = ((0<<4)|7),
|
|
|
|
G2D_MAX_COLOR_SPACE
|
|
} G2D_COLOR_SPACE;
|
|
|
|
typedef enum {
|
|
G2D_Clear_Mode, //!< [0, 0]
|
|
G2D_Src_Mode, //!< [Sa, Sc]
|
|
G2D_Dst_Mode, //!< [Da, Dc]
|
|
G2D_SrcOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Sc + (1 - Sa)*Dc]
|
|
G2D_DstOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Dc + (1 - Da)*Sc]
|
|
G2D_SrcIn_Mode, //!< [Sa * Da, Sc * Da]
|
|
G2D_DstIn_Mode, //!< [Sa * Da, Sa * Dc]
|
|
G2D_SrcOut_Mode, //!< [Sa * (1 - Da), Sc * (1 - Da)]
|
|
G2D_DstOut_Mode, //!< [Da * (1 - Sa), Dc * (1 - Sa)]
|
|
G2D_SrcATop_Mode, //!< [Da, Sc * Da + (1 - Sa) * Dc]
|
|
G2D_DstATop_Mode, //!< [Sa, Sa * Dc + Sc * (1 - Da)]
|
|
G2D_Xor_Mode, //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
|
|
|
|
// these modes are defined in the SVG Compositing standard
|
|
// http://www.w3.org/TR/2009/WD-SVGCompositing-20090430/
|
|
G2D_Plus_Mode,
|
|
G2D_Multiply_Mode,
|
|
G2D_Screen_Mode,
|
|
G2D_Overlay_Mode,
|
|
G2D_Darken_Mode,
|
|
G2D_Lighten_Mode,
|
|
G2D_ColorDodge_Mode,
|
|
G2D_ColorBurn_Mode,
|
|
G2D_HardLight_Mode,
|
|
G2D_SoftLight_Mode,
|
|
G2D_Difference_Mode,
|
|
G2D_Exclusion_Mode,
|
|
|
|
kLastMode = G2D_Exclusion_Mode
|
|
} G2D_PORTTERDUFF_MODE;
|
|
|
|
typedef enum {
|
|
G2D_MEMORY_KERNEL,
|
|
G2D_MEMORY_USER
|
|
} G2D_MEMORY_TYPE;
|
|
|
|
typedef struct {
|
|
int x;
|
|
int y;
|
|
unsigned int w;
|
|
unsigned int h;
|
|
unsigned int full_w;
|
|
unsigned int full_h;
|
|
int color_format;
|
|
unsigned int bytes_per_pixel;
|
|
unsigned char * addr;
|
|
} g2d_rect;
|
|
|
|
typedef struct {
|
|
unsigned int rotate_val;
|
|
unsigned int alpha_val;
|
|
|
|
unsigned int blue_screen_mode; //true : enable, false : disable
|
|
unsigned int color_key_val; //screen color value
|
|
unsigned int color_switch_val; //one color
|
|
|
|
unsigned int src_color; // when set one color on SRC
|
|
|
|
unsigned int third_op_mode;
|
|
unsigned int rop_mode;
|
|
unsigned int mask_mode;
|
|
unsigned int render_mode;
|
|
unsigned int potterduff_mode;
|
|
unsigned int memory_type;
|
|
} g2d_flag;
|
|
|
|
typedef struct {
|
|
unsigned int t;
|
|
unsigned int b;
|
|
unsigned int l;
|
|
unsigned int r;
|
|
} g2d_clip;
|
|
|
|
typedef struct {
|
|
g2d_rect src_rect;
|
|
g2d_rect dst_rect;
|
|
g2d_clip clip;
|
|
g2d_flag flag;
|
|
} g2d_params;
|
|
|
|
struct g2d_dma_info {
|
|
unsigned long addr;
|
|
unsigned int size;
|
|
};
|
|
|
|
typedef struct _sec_g2d_t {
|
|
int dev_fd;
|
|
g2d_params params;
|
|
}sec_g2d_t;
|
|
|
|
typedef struct __s5p_rect {
|
|
uint32_t x;
|
|
uint32_t y;
|
|
uint32_t w;
|
|
uint32_t h;
|
|
} __s5p_rect;
|
|
|
|
typedef struct __s5p_img {
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint32_t format;
|
|
uint32_t offset;
|
|
uint32_t base;
|
|
int memory_id;
|
|
} __s5p_img;
|
|
|
|
#endif /*_SEC_G2D_DRIVER_H_*/
|
|
|