2D图形加速引擎(GE2D)

时间:2024-06-01 07:36:12

 转载请注明出处:http://blog.****.net/Righthek 谢谢!

【英文原文】NUC970 Series Technical Reference Manual   Chapter 5.28

一、概述

         32位2D图形引擎(GE2D)专门用于提高图形性能处理。它可以加速单个GUI功能的操作,如BitBLT和Bresenham线绘制在所有像素深度上运行,包括每像素8/16/32位。

         像素是MicrosoftWindows中定义的最小可寻址屏幕元素,以及线和图片由各种像素组成。 GE2D用于加快像素中的图形性能数据移动和线条绘制,以及加速几乎所有的计算机图形布尔值通过消除CPU开销进行操作。同时,旋转和缩小的功能实现了一些特殊应用。在图像缩小功能中,均可编程水平和垂直N / M缩放因子用于调整图像大小。对于2D旋转时,可以向左或向右旋转45度,90度或180度,并且还支持弹动/翻牌,镜像或上下相反的图片。

二、特点

  • 支持在MicrosoftGDI中定义的2D位块传输(BitBLT)功能
  • 支持主机BLT
  • 支持模式BLT
  • 支持彩色/字体扩展BLT
  • 支持透明BLT
  • 支持平铺BLT
  • 支持块移动BLT
  • 支持复制文件BLT
  • 支持彩色/字体扩展
  • 支持矩形填充
  • 支持RGB332 /RGB565 / RGB888数据格式。
  • 支持前置/背景颜色和所有Microsoft256三进制光栅操作代码(ROP)
  • 支持内外剪切功能
  • 支持源/目标图片叠加的Alpha混合
  • 支持快速Bresenham线条绘制算法绘制固体/纹理线
  • 支持矩形边框和框架图
  • 支持图片重新调整
  • 支持从1/255缩小到254/255
  • 支持扩展范围从1到1.996(1 + 254/255)
  • 支持不同程度旋转对象
  • 支持L45(左旋45度)和L90(左旋90度)
  • 支持R45(右旋45度)和R90(右旋90度)
  • 支持M180(镜像/翻牌)
  • 支持F180(上下翻转)和X180(180度旋转)

三、框图

2D图形加速引擎(GE2D)2D图形加速引擎(GE2D)

 

四、基本配置

         在使用2D图形引擎之前,需要启用2D图形引擎的时钟。 设置GE2D(CLK_HCLKEN [28])为高,以启用2D图形引擎操作的时钟。

 

五、功能描述

5.1  位块传输(BitBLT)

    BitBLT是加速显示存储器区域之间的数据传输,或者操作系统内存和显示内存之间的数据传输。 BitBLT引擎在三个像素图上运行(操作数):源,模式和目标,所有256个可能的栅格操作(ROP)。该图形引擎可以支持多种BitBLT,包括HostBLT,Pattern BLT,Color / Font扩展BLT,透明BLT,颜色/字体扩展和矩形填充等。

    源地图数据可以驻留在显示存储器或系统存储器中,两者都可以是彩色或单色。当它是彩色数据时,8x8图案图数据可能驻留在显示存储器中,或者可以当是单色数据时,来自内部模式寄存器。目的地图数据必须驻留在显示存储器中。由引擎生成的目的地数据通常被写入返回到显示存储器,或者可以由CPU读回。

 

5.2 HostBLT(系统内存和显示内存之间)

    HostBLT用于在系统内存和显示存储器之间快速传输数据。为了从系统内存快速传输数据到显示内存,主机可以设置主机写入BLT选择系统内存作为源数据。数据可能是彩色或单色。在单色数据的情况下对于颜色/字体扩展,源中的所有字体都将扩展为前景色和全部像素或者将零扩展为背景颜色或透明的像素。请注意,只能使用X / Y寻址来执行颜色/字体扩展。

    要将数据从显示存储器快速传输到系统内存,主机可能会设置主机读取BLT让结果的目标数据进入系统内存。注意只有源拷贝操作(SRCCOPY)在主机BLT中可用。

    HostBLT通过8个32位MMIO数据端口执行,用于位块数据传输。主机必须在将数据写入数据或从图形引擎读取数据时执行32位字对齐访问。

 

5.3图案BLT

    图案BLT用于以重复图案加速任意尺寸区域的填充颜色或单色,并且必要时可能涉及任何光栅操作。图案尺寸为8x8像素,选择与MicrosoftWindows兼容。请注意,所有图案总是与显示存储器左上角对齐,但不到目标区域,并且图案源必须对齐在边界上,等于目的地的大小。

    8x8图案可能是彩色或单色。在颜色的情况下,主机首先写入所需的以线性方式将帧缓冲器的屏幕外存图案化。当BitBLT涉及模式是图形引擎将从屏幕外存取出相应的行模式然后重复将其复制到目的地区域。

    在单色情况下,主机首先将所需的单模式写入内部8字节模式寄存器。然后,图形引擎重复将其复制到目标区域,其中所有区域图案被扩展到前景色的像素,所有的零都被扩展到像素背景颜色或透明。请注意,只有X / Y寻址可用于单模式BLT。

 

5.4颜色/字体扩展BLT

    为了进一步加快颜色/字体扩展操作,主机可以首先写入单色位图到帧缓冲区的屏幕外存储器,然后设置颜色/字体扩展BLT。在这个BitBLT的种类,图形引擎从屏幕内存中取出单色源数据帧缓冲区,将其扩展为像素,然后将其写入所需的目标区域。所有的人源扩展为前景色的像素,所有零都被扩展为像素背景颜色或透明。请注意,X / Y寻址方式始终用于颜色/字体扩大BLT

 

5.5透明BLT

    在BitBLT操作期间,某些区域的目的地可能是透明的,其余的是不透明。该芯片中都支持单色和彩色透明度。单色透明度,源或模式数据可以控制BitBLT的透明度,所有的都是扩展为前景色的像素,全零是透明的。

    在颜色透明度方面,支持源和目标透明度,只有一个在一次效果透明的源颜色(颜色或颜色空间)不会覆盖背景目的地,而只有透明的目的地颜色可能被源覆盖。

 

5.6颜色/字体扩展

    颜色/字体扩展用于将单色数据扩展到全深度彩色像素(包括8/16/32位像素颜色),具有透明度,大大加快了文本,图标,和其他单色源对象。

    颜色/字体扩展可以使用主机写BLT或颜色/字体扩展BLT来实现如上所述。 请注意,颜色/字体扩展和单声道模式使用相同的背景和前景色。

 

5.7矩形填充

    固定颜色的矩形可以使用前景颜色或背景颜色填充矩形填充,不需要源区。所有BitBLT操作都可以正常使用。

 

5.8栅格操作(ROP)

    GE支持所有Microsoft 256三进制光栅操作代码。这些三进制光栅操作代码定义了BitBLT如何将源映射中的位与刷或模式中的位组合地图和目的地图中的位。BitBLT期间光栅操作始终处于活动状态,必须加载适当的值。

 

5.9 BitBLT方向

    BitBLT方向指示X,Y地址跨越矩形的方向。它还定义了转移的起始角。如果目标矩形重叠,这是很重要的源矩形。必须确保操作进行,以便源区不是在使用前被覆盖。BitBLT方向如下图所示进行控制。

 2D图形加速引擎(GE2D)2D图形加速引擎(GE2D)

 

5.10线性和X / Y寻址

    可以使用线性或X / Y寻址来执行所有BitBLT操作。 在线性寻址所有源起始地址,目的地起始地址,尺寸X,源间距和目标间距以字节表示。在X / Y寻址中,所有源起始X,目的地起始X和维X以像素表示。源间距和目标间距在X / Y寻址中是相同的,其定义有三个选择:160,320及640以上。

 

5.11自动目的地更新

    当自动更新位设置为1时,目标起始X,Y(地址)寄存器将自动进行在每个BitBLT操作结束时更新,以指示右上角的右侧以前的目的地区域。这对于改进字体扩展BLT尤其有用的时候,只需要启动X,Y(地址)寄存器来更新每个BitBLT。

 

5.12 Alpha混合

    支持Alpha混合图形叠加。两个8位alpha深度混合因子是支持通过正确编程alpha混合因子Ks和Kd来覆盖杂项控制寄存器。Ks指定源流的8位alpha值,Kd指定目的流分别为8位alpha值。请注意,Ks + Kd将为<= 256。混合方程为:[PsKsPdKd]256,其中Ps表示源流像素和Pd表示目标流像素。

 

5.13Bresenham线画

    Bresenham线绘制算法用于从屏幕绘制像素宽的实线或纹理线坐标x1,y1到x2,y2。要画一条实线,前景色用于指定颜色线。要绘制纹理线,使用16位线条样式来指定线条图案,其中所有线条样式风格被扩展到前景色的像素,所有的零都被扩展到像素背景颜色或透明。

    Bresenham线图算法以所有参数归一化为第一个八分圆(辛烷值0)。指定3位八进制代码,如下图所示。

2D图形加速引擎(GE2D)

 2D图形加速引擎(GE2D)

5.14Bresenham线绘制Octant编码

    为了避免绘制多线的端点两次,该芯片提供抑制的功能绘制线的最后一个像素,此功能为Bresenham Line Draw提供。该Bresenham Line Draw操作可以是绘制操作,也可以是移动操作。上完成Bresenham Line Draw操作,目的地起始X,Y通常指向最后通过将“自动目标更新”设置为1,将该行的像素设置为1.它也可以指向原始位置自动目标更新为0时的行。请注意,Bresenham Line Draw操作可用仅在X / Y寻址模式下。

 

5.15移动/绘制

    当该位为0时,当前的X,Y指针将被移动,但不会绘制任何像素。什么时候该位为1,应绘制像素。

 

5.16剪切

    剪切功能支持在其中的任何矩形区域内部或外部的剪切绘图写入在图形引擎操作期间显示内存。该芯片支持矩形限幅Bresenham Line的BitBLT和线路剪辑。启用时,剪辑功能只需屏蔽在剪辑窗口内或外部写入。请注意,剪切功能仅在X / Y中可用寻址模式。

 

5.17向上/向下旋转和缩放

    主要功能是支持在显示屏中的任何矩形区域中旋转或缩放内存在图形引擎操作。对于2D旋转,它可以向左或向右旋转45,90或180度,并且还支持弹动/翻转,镜像或向上 - 向下的图片。就像矩形剪辑BitBLTs和线路剪辑Bresenham线,当剪辑标志启用剪辑功能只需屏蔽剪辑窗口内部或外部的写入。用户可以在矩形上进行转发剪辑功能为其不同和特殊的视图效果。在图像放大/缩小功能,两者提供可编程水平和垂直N / M放大/缩小因子来调整图像大小。为了放大(1 + N / M)或缩小(N / M),N的值必须等于或小于M.标度支持1.0〜1.996。

    在旋转或缩放尺寸期间仅支持源颜色控制的透明度流程。透明的源颜色(颜色或颜色空间)可以覆盖或不覆盖背景目的地。图形引擎旋转控制以参考第一个八分圆的所有参数进行操作(辛烷值0)。指定3位八进制代码,如下图所示。

2D图形加速引擎(GE2D)

 2D图形加速引擎(GE2D)