- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验六图形系统项目
实验六:图形系统项目
背景知识介绍:
在Windows CE 中,显示驱动程序属于独立驱动程序,它们可以被其父进程
(GWE 子系统模块或设备管理器)直接加载和调用。
Windows CE 的大部分显示驱动程序使用一套称为图形原语引擎(GPE ,
Graphics Primitive Engine )的C++类别,将其作为基类,用来派生显示器硬件的
显示驱动程序。使用GPE 类可以节省大量的开发和调试时间。Platform Builder 以
二进制的形式提供了GPE 库,位于[CEROOT]\Public\Common\OAK\Lib 目录下。
Windows CE 的显示驱动程序通常使用分层的体系结构来编写:微软提供的
GPE 库作为显示驱动程序的模型装置驱动程序(MDD ,model device driver )层,
负责所有的精简绘图操作;OEM 或独立硬件厂商负责撰写硬件特定的原始码,
这些原始码对应于显示驱动程序分层体系结构中依赖平台的驱动程序(PDD ,
platform-dependent driver )层。
Platform Builder 中提供了包括S3 Trio64、CT6555X 等在内,多个显示驱动
程序的样本,代表了各种各样的显示器硬件装置。这些显示驱动程序的样本均利
用 GPE 来提供精简的绘图操作功能。显示驱动程序的开发人员可以通过修改这
些样本,从而用最少的时间和精力来建立显示驱动程序。显示驱动程序的样本位
于[CEROOT]\Public\Common\OAK\Drivers\Display\Samples 目录下。
项目任务:
显示驱动程序的大部分工作是通过少数的基本操作来完成,因此如果能够加
快这些操作的速度,就能大幅度的改善整个显示驱动程序的性能。最基本的操作
是位块传送(bit block transfers,blits )和画线。从主要储存媒体到显存的任何像
素矩形块传送操作都是blits,这些操作的例子包括显示图标、显示光标以及画颜
色填充的矩形。由于加速的目的,画线操作被局限于画直线。
这些类型的加速既可以用硬件也可以用软件来实现。位块传送和画线的硬件
加速通常很快,但并非对所有的显示器硬件都可行。然而,即使显示器不提供硬
件加速功能,也可以透过软件来得到比GPE 类别提供的精简情况要好的性能。
对于位块传送,显示驱动程序可以使用三个层次的处理:由 GPE 提供的位
块传送模拟、由模拟库或程序员自行定义的原始码提供的软件加速仿真、以及显
示装置硬件支持的硬件加速。显示驱动程序将位块传送转给 GPE 作为替代,显
示驱动程序可以将位块传送转给仿真库或直接给硬件。
S3 Trio64 驱动程序显示了如何支持硬件加速和使用软件仿真,该驱动程序位于
[CEROOT]\Public\Common\OAK\Drivers\Display\Samples\CEPC\S3Trio64 目录
下。
下面的原始码取自 S3 Trio64 驱动程序,它说明了当 GDI 呼叫驱动程序的
BltPrepare 函数时如何开始位块传送处理。驱动程序初始化位块传送的参数,并
决定使用哪个函数来完成位块传送,下面的原始码说明了初始化过程。
SCODE S3Trio64::BltPrepare(
GPEBltParms *pBltParms )
{
. . . . . . / /此处是侦错信息和可选的定时参数
pBltParms-pBlt = EmulatedBlt;
在初始化原始码的后面,显示驱动程序可以包含软件或硬件的加速原始码,
样 本 驱 动 程 序 可 以 在 编 辑 时 包 含 或 删 除 这 些 原 始 码 。
ENABLE_ACCELERATION 指 定 要 包 含 硬 件 加 速 原 始 码 ,
ENABLE_EMULATION 指定要包含软件加速的仿真原始码。下面的原始码取自
S3 Trio64 驱动程序,它说明了驱动程序如何评估栅格操作(raster operation,ROP )
原始码,并在可能的情况下将位块传送指定给支持的硬件加速。
#ifdef ENABLE_ACCELERATION
#define FUNCNAME(basename)(SCODE(GPE::*)(struct
文档评论(0)