嵌入式环境图形加紧浅析(以机顶盒平台为例)

嵌入式环境图形加速浅析(以机顶盒平台为例)
一、介绍下图形加速的概念
1)从横向上来说,图形加速是硬件加速的一种,所谓的硬件加速,就是用专有硬件实现某些操作,以免浪费大量的cpu资源,常见的有硬浮点处理器FPU、图形处理器GPU(也通俗称为显卡) 以及 音视频解码硬件等

2)从纵向上来说,图形加速也是GPU(Graphic Process Unit)的一种,只不过功能较弱而已


二、关于嵌入式环境的图形加速功能(以机顶盒芯片平台st7162、hi3716m等为例)
图形加速在嵌入式下,一般称之为2D图形引擎,所提供的图形加速相关功能:
Alpha混合
Raster Operation
blit操作等

2D图形引擎在st7162上也称之为blitter,从字面上来说主要的功能就是提供blit,原理上提供部分二维操作,可以一个指令处理一批数据

嵌入式环境图形加紧浅析(以机顶盒平台为例)

三、关于某一平台图形加速功能的驱动接口
当然,嵌入式芯片的数据手册一般会说明是否包含2D图形引擎
若从驱动接口来看,只需关注两点:
1)是否提供类似分配显存的接口(显存对 边界对齐、存放位置等有一定要求),不能使用一般的c标准函数进行操作
2)是否提供相关的blit接口,对上述显存进行操作
另外,可能部分平台提供更高层次的概念,如surface、canvas等,但实质是一样的:
引用一段使用pygame库的代码来阐明此问题(引自beginning-game-development-with-python一书):
#!/usr/bin/env python

backgroud_image_filename="caoyuan.jpg"
mouse_image_filename="hanta.jpg"

import pygame
from pygame.locals import *
from sys import exit

pygame.init()

# 创建一个screen surface,代表屏幕所在的surface
screen=pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("Hello,World!")


#创建 background 和 mouse_cursor两个 surface
#此时做的工作就是,1)分配两块显存,然后用surface管理,2)将解码后的图片导入显存

backgroud=pygame.image.load(backgroud_image_filename).convert()
mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()
while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            exit()
    #对surface进行blit操作、实际上就是对显存进行blit操作
    screen.blit(backgroud,(0,0))
    x,y=pygame.mouse.get_pos()
    x-=mouse_cursor.get_width()/2
    y-=mouse_cursor.get_height()/2
    #对surface进行blit操作、实际上就是对显存进行blit操作
    screen.blit(mouse_cursor,(x,y))
    pygame.display.update()