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.
88 lines
2.6 KiB
88 lines
2.6 KiB
/*
|
|
* Copyright (C) 2016 Fuzhou Rockchip lectronics Co.Ltd
|
|
* Authors:
|
|
* Yakir Yang <ykk@rock-chips.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
*/
|
|
|
|
#ifndef _FIMrga_H_
|
|
#define _FIMrga_H_
|
|
|
|
enum e_rga_buf_type {
|
|
RGA_IMGBUF_COLOR,
|
|
RGA_IMGBUF_GEM,
|
|
RGA_IMGBUF_USERPTR,
|
|
};
|
|
|
|
#define RGA_PLANE_MAX_NR 3
|
|
#define RGA_MAX_CMD_NR 32
|
|
#define RGA_MAX_GEM_CMD_NR 10
|
|
#define RGA_MAX_CMD_LIST_NR 64
|
|
|
|
struct rga_image {
|
|
unsigned int color_mode;
|
|
unsigned int width;
|
|
unsigned int height;
|
|
unsigned int stride;
|
|
unsigned int hstride;
|
|
unsigned int fill_color;
|
|
enum e_rga_buf_type buf_type;
|
|
unsigned int bo[RGA_PLANE_MAX_NR];
|
|
struct drm_rockchip_rga_userptr user_ptr[RGA_PLANE_MAX_NR];
|
|
};
|
|
|
|
struct rga_context {
|
|
int fd;
|
|
int log;
|
|
unsigned int major;
|
|
unsigned int minor;
|
|
struct drm_rockchip_rga_cmd cmd[RGA_MAX_CMD_NR];
|
|
struct drm_rockchip_rga_cmd cmd_buf[RGA_MAX_GEM_CMD_NR];
|
|
unsigned int cmd_nr;
|
|
unsigned int cmd_buf_nr;
|
|
unsigned int cmdlist_nr;
|
|
};
|
|
|
|
struct rga_context *rga_init(int fd);
|
|
|
|
void rga_fini(struct rga_context *ctx);
|
|
|
|
int rga_exec(struct rga_context *ctx);
|
|
|
|
int rga_solid_fill(struct rga_context *ctx, struct rga_image *img,
|
|
unsigned int x, unsigned int y, unsigned int w,
|
|
unsigned int h);
|
|
|
|
int rga_copy(struct rga_context *ctx, struct rga_image *src,
|
|
struct rga_image *dst, unsigned int src_x,
|
|
unsigned int src_y, unsigned int dst_x, unsigned int dst_y,
|
|
unsigned int w, unsigned int h);
|
|
|
|
int rga_copy_with_scale(struct rga_context *ctx, struct rga_image *src,
|
|
struct rga_image *dst, unsigned int src_x,
|
|
unsigned int src_y, unsigned int src_w,
|
|
unsigned int src_h, unsigned int dst_x,
|
|
unsigned int dst_y, unsigned int dst_w,
|
|
unsigned int dst_h);
|
|
|
|
int rga_copy_with_rotate(struct rga_context *ctx, struct rga_image *src,
|
|
struct rga_image *dst, unsigned int src_x,
|
|
unsigned int src_y, unsigned int src_w,
|
|
unsigned int src_h, unsigned int dst_x,
|
|
unsigned int dst_y, unsigned int dst_w,
|
|
unsigned int dst_h, unsigned int degree);
|
|
|
|
int rga_multiple_transform(struct rga_context *ctx, struct rga_image *src,
|
|
struct rga_image *dst, unsigned int src_x,
|
|
unsigned int src_y, unsigned int src_w,
|
|
unsigned int src_h, unsigned int dst_x,
|
|
unsigned int dst_y, unsigned int dst_w,
|
|
unsigned int dst_h, unsigned int degree,
|
|
unsigned int x_mirr, unsigned int y_mirr);
|
|
#endif /* _RGA_H_ */
|