11
V536/V316 项目 图形开发用户指南 文档版本号:V1.0 发布日期:2019.05.30 nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni nulllindeni

files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

V536/V316 项目

图形开发用户指南

文档版本号:V1.0

发布日期:2019.05.30

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 2: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

版权所有 © 珠海全志科技股份有限公司 2017。保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任

何形式传播。

商标声明

、全志和其他全志商标均为珠海全志科技股份有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受全志公司商业合同和条款的约束,本文档中描述的全部或部分产

品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,全志公司对本文档内容不

做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用

指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 3: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 前 言

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved i

前 言

概述

本文档给出了图形开发的推荐方案,并分别从方案介绍、衍生方案、开发流程、应用场景及优

点和限制等方面介绍,为用户在进行图形界面开始时提供参考。

产品版本

产品名称 产品版本

读者对象

本文档(本指南)主要适用于以下工程师:

技术支持工程师

图形界面开发工程师

修订记录

版本号 修订日期 修订内容

V0.1 2017-08-25 创建:图形开发推荐方案等

V1.0 2019-5-30 修正对 UI图层和视频图层的阐述等内容

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 4: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 目 录

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved ii

目 录1. 显示系统基础介绍.............................................................................................................................. 1

1.1显示系统中的常见概念............................................................................................................. 1

1.2硬件模块介绍............................................................................................................................. 1

2. 图形开发推荐方案.............................................................................................................................. 5

2.1双通道显示的推荐方案介绍..................................................................................................... 5

2.2单通道显示的推荐方案介绍..................................................................................................... 5

2.3 V536的显示方案介绍................................................................................................................6

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 5: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 1 显示系统基础介绍

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 1

1. 显示系统基础介绍1.1显示系统中的常见概念(1)layer

A display resource of video hardware,the image buffer of a layer can be display on the screen。

Layer是 sunxi_display显示框架对显示 buffer的抽象描述,每个需要由 DE显示的数据 buffer通

过该结构体传递给显示驱动。

(2)alpha blending图像的透明混合有个专属名词 Alpha Blending。对任意两张图像可以合成为一张图像,合成图像

的像素取值根据数学公式:

RGB3 = (1- a) * RGB1 + a * RGB2

其中 a为混合透明度取值范围[0, 1]之间,RGB3为目标像素值,RGB1与 RGB2的值分别来自

两张不同的图像。

(3)Display EngineDisplay Engine即显示引擎,简称为 DE,全志平台特有的显示系统硬件加速模块。

1.2硬件模块介绍(1)DE简介DE(Display Engine)显示引擎用于实现对图层的管理以及显示工作,支持 HDMI、TV、LCD

等输出模式。它不但支持 linux标准的 framebuffer接口,还支持多种显示效果处理,比如 alpha, colorkey,

图像增强,亮度/对比度/饱和度/色度调整。

DE显示驱动中最重要的显示资源为图层,对于 V5系列处理器来说,全志 sunxi平台支持 1路

显示通路,该显示通路支持四个可以做 alpha blending操作的通道(channel),通道之间的排序可以通

过 Z值控制,Z值越大越靠上。每个通道又支持四个可以做 overlay操作的图层(layer)。也就是说 V5

的显示通路支持 16个图层,每四个图层归属于一个通道,每个通道内部的四个图层可以做 overlay

操作,四个通道之间可以做 alpha blending操作。

需要注意的是,显示通路内的四个通道并不完全一致,通道 0和通道 1称为 Video Channel,支

持 YUV和 RGB数据格式的输入;通道 2和通道 3称为 UI Channel,仅支持 RGB数据格式的输入。

a).Video通道和 UI通道介绍

对于V5系列处理器来说,channel[0]和channel[1](通道0和通道1)对应的通道被称为Video

Channel,每个通道内的四个图层都可以被称作视频图层,视频图层支持RGB和YUV格式的数据。支

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 6: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 1 显示系统基础介绍

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 2

持的数据格式包括:semi-planar of YUV422/YUV420/YUV411 and planar of YUV422 YUV420 YUV411

以及ARGB8888 XRGB8888 RGB888 ARGB4444 ARGB1555 RGB565等。

channel[2]和 channel[3]对应的通道被称为 UI Channel,每个通道内的四个图层都可以被称作 UI

图层,UI 图层仅支持 RGB 格式的数据,支持的数据格式包括:ARGB8888 XRGB8888 RGB888

ARGB4444 ARGB1555 RGB565等。

每个显示通道都有四个图层,每个通道内图层支持 overlay操作,但同一通道内的图层 scale参

数需要保持一致。一般对于像 SDV这样的简单应用,可以只使用两个通道:一个放 UI数据,一个

放 Video数据,每个通道只使用一个图层,简化操作。

在 Video通道内部,集成了一个 VEP硬件处理单元,可以用来做图像的后期处理。

b).DE显示引擎的内部流程图

c).DE对图层操作的 Demo

/* 设置图层参数,disphd 为显示驱动句柄 */

unsigned long arg[3];

/* 一个 struct disp_layer_config 结构体对应一个图层的全部信息 */

struct disp_layer_config config;

unsigned int width = 1280;

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 7: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 1 显示系统基础介绍

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 3

unsigned int height = 800;

unsigned int ret = 0;

memset(&config, 0, sizeof(struct disp_layer_config));

/* 选择图层所属的通道以及本图层 ID(0-3)*/

config.channnel = 0;

config.layer_id = 0;

config.info.enable = 1;

config.info.mode = LAYER_MODE_BUFFER;

config.info.fb.addr[0] = (unsigned long long)mem_in; //FB 物理地址

config.info.fb.size[0].width = width;

config.info.fb.size[0].height = height;

config.info.fb.align[0] = 4;//bytes

config.info.fb.format = DISP_FORMAT_ARGB_8888; //DISP_FORMAT_YUV420_P

/* crop 表示裁剪区域的大小 */

config.info.fb.crop.x = 0;

config.info.fb.crop.y = 0;

/* 定点小数。 高 32bit 为整数,低 32bit 为小数 */

config.info.fb.crop.width = ((unsigned long)width) << 32;

/* 定点小数。 高 32bit 为整数,低 32bit 为小数 */

config.info.fb.crop.height= ((uunsigned long)height)<<32;

config.info.fb.flags = DISP_BF_NORMAL;

config.info.fb.scan = DISP_SCAN_PROGRESSIVE;

config.info.alpha_mode = 2; //global pixel alpha

config.info.alpha_value = 0xff;//global alpha value

/* 显示窗口的大小 */

config.info.screen_win.x = 0;

config.info.screen_win.y = 0;

config.info.screen_win.width = width;

config.info.screen_win.height= height;

config.info.id = 0;

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 8: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 1 显示系统基础介绍

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 4

/* 上层调用 DE 显示引擎所用的 ioctl 接口 */

arg[0] = 0;//screen 0 即选择显示通路 0

arg[1] = (unsigned long)&config;

arg[2] = 1; //只设置一个图层即当前图层

ret = ioctl(disphd, DISP_LAYER_SET_CONFIG, (void*)arg);

(2)G2D简介G2D主要实现图像缩放、数据格式、颜色空间转换和图层合成(包括 alpha、colorkey、rotate、

mirror、rop、maskblt)等加速功能。

由于部分功能和 DE重合,实际使用中,一般使用 G2D硬件旋转功能。比如对于 App是横屏而

LCD为竖屏的情况,如果只是旋转 UI可以考虑使用 DE的软件旋转功能,而一旦涉及到 video之类

的大数据旋转,建议使用 G2D的硬件旋转功能,效率更高,CPU占用资源更低。

这里给出一个用 DE软件旋转 UI,用 G2D硬件旋转 Video图像的演示框图:

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 9: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 2 图形开发推荐方案

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 5

2. 图形开发推荐方案2.1双通道显示的推荐方案介绍

A.基本显示内容

在监控领域,一般输出设备的图形界面内容包括:

GUI图形界面:整套 GUI界面包含很多的内容,比如分割线、时间、当前录制模式等内容。

Video视频监控界面:摄像头的实时监控画面。

B.双通道显示的推荐方案

之前有提过,DE有 2个 UI通道和 2个 Video通道每个通道又有四个图层。图层之间可以做合

成,通道之间也可以做 alpha blending,所以推荐的方案就是:

一个 Video通道用于实现 GUI界面的显示,而 Video通道内的四个图层又可以做进一步的细分,

每一个图层用于实现专门的元素显示。另一个 Video通道用于实现 Video界面的显示。最后两个通

道之间在进行合成,得到我们最终的输出内容给到显示设备。

同时为了防止一块 FB缓冲被边绘制边显示的情况,建议使用 FB双缓冲机制,它的原理是为

FB分配 2块大小相同的缓冲区作为显存交替绘制和显示。如 DE正在显示缓冲 2,则本次绘制

的对象为缓冲 1,然后对于 FB 标准模式可通过 FB 的 PAN_DISPLAY调用通知 DE显示缓冲 1。

整体流程图如下所示:

2.2单通道显示的推荐方案介绍(1)基本显示内容

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 10: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 2 图形开发推荐方案

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 6

如果不需要显示 Video视频界面,而只是简单的 GUI显示,比如菜单栏、状态栏、背景框等显

示内容,建议使用单通道的显示方案,每个通道最多支持四个图层的叠加显示。

(2)单通道显示的推荐方案

每个通道内的四个图层记为 layer0~3,通道内的四个图层可以做 Overlay操作,默认的优先级为

layer3>layer2>layer1>layer0,即 layer3的在本通道内的显示优先级最高。

基于上面的内容,我们可以把 GUI界面分为四大块元素,绘制到各自的 layer中去,最后通过

默认的优先级将内容合成到一起,得到最终的 GUI显示界面。也可以将全部的 GUI显示数据绘制到

一个 layer中去。

最后建议使用通道 1(channel 1)作为 GUI界面的显示通道。

整体流程图如下所示:

2.3 V536/V316的显示方案介绍(1)显示节点的输出信息

图层各信息描述如下:

BUF: 图层类型,BUF/COLOR,一般为 BUF,即图层是带 BUFFER的。COLOR意思是显

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

Page 11: files.lindeni.orgfiles.lindeni.org/lindenis-v536/Documents/AW/...!"#$%&'( )*+ , -./01 2- !"# $ % &'()* 3456 #+ ,-#+./0123#+456789 ./* :; ,-

图形开发推荐方案 2 图形开发推荐方案

版权所有 侵权必究

Copyright © by Allwinner. All rights reserved 7

示一个纯色的画面,不带 BUFFER。

enable: 显示处于 enable状态

ch[0]: 该图层处于 blending通道 0

lyr[0]: 该图层处于当前 blending通道中的图层 0

z[0]: 图层 z序

fb: 图层 buffer的 size,width,hei,越小越在底部,可能会被 z序大的图层覆盖住

prem[Y]: 是否预乘格式,Y是,N否

a: alpha参数, globl/pixel/; alpha值

fmt: 图层格式,值 64以下为 RGB格式;以上为 YUV格式

crop: 图像 buffer中的裁减区域, [x,y,w,h]

frame: 图层在屏幕上的显示区域,[x,y,w,h]

addr: 三个分量的地址

flags: 一般为 0, 3D SS时 0x4, 3D TB时为 0x1, 3D FP时为 0x2;

trd: 是否 3D输出,3D输出的类型(HDMI FP输出时为 1)

各 counter描述如下:

err: de缺数的次数,de缺数可能会出现屏幕抖动,花屏的问题。de缺数一般为带宽不足引起。

skip: 表示 de跳帧的次数,跳帧会出现卡顿问题。跳帧是指本次中断响应较慢,de模块判断在

本次中断已经接近或者超过了消隐区,将放弃本次更新图像的机会,选择继续显示原有的图像。

irq: 表示该通路上垂直消隐区中断执行的次数,一直增长表示该通道上的 timing controller正在

运行当中。

vsync:表示显示模块往用户空间中发送的 vsync消息的数目,一直增长表示正在不断地发送中。

(2)从当前显示节点的信息可以获取到当前显示方案

V5中使用通道 1(ch[1])作为 GUI显示界面的通道,显示数据绘制在 layer0(lyr[0])中;使用

通道 0(ch[0])作为 Video显示界面的通道,数据同样绘制在 layer0(lyr[0])中。又由于通道 1的

zorder值大于通道 0的 zorder值(z[16] > z[0]),所以在做 alpha blending操作时,通道 1的显示图像

在上。

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni

nulllindeni