可避免贴图撕裂情形的系统与方法

文档序号:6654849阅读:206来源:国知局
专利名称:可避免贴图撕裂情形的系统与方法
技术领域
本发明涉及一种使电脑显示装置免于贴图撕裂(frame tear)情况发生的系统与方法,尤指一种可即时判定扫描线是否位于安全区域,以便快速提供影像资料给显示装置的系统与方法。
贴图撕裂(frame tear)为电脑绘图(computer graphics)在屏幕上显示时所发生的问题。它使电脑绘图在屏幕上出现闪烁的现象,尤其当使用者在进行动画的影像输出时,屏幕上更容易出现令人不悦的闪烁现象。贴图撕裂的产生是因为资料传送到图框缓冲器(frame buffer)的时间,与资料从图框缓冲器扫描输出的时间不同步所致。参阅

图1以显示贴图撕裂的一种案例,其中A部份的影像资料与B部份的影像资料分别来自不同的图框。结果,显示在屏幕上的资料原本是来自单一图框的资料,而今却反而来自两个连续的图框资料。这种情形下所显示的图形会有上下不连续的情况发生,对使用者而言,便犹如图形被撕裂一般。
为解决上述之问题,美国专利5,461,981号提出利用一种中断机制来解决图框撕裂的问题。依据该专利,计算安全区域(safe region)的中断讯号(interrupt)会传送给中央处理器,以告知中央处理器何时可开始将资料传送至图框缓冲器。然而,该中断机制无法适用于以指令队列为基(command-queue-based)的绘图加速器(Graphics AccelerativeEngine)。因此,便无法即时判定扫描线是否位于安全区域内,而将资料提供给屏幕显示区域(on-screen display)。而且,由于该发明在确定安全区域之前,必须经常中断中央处理器的运作,一直到资料完全地显示于屏幕上,因此其处理的时间较长。如此,将影像资料转换到图框缓冲器的速度,便取决于中央处理器的速度。
本发明的目的之一在于提供一种可有效地即时判定安全区域,以解决贴图撕裂问题的改进系统与方法。
本发明的另一目的在于提出一种可适用于指令队列为基(command-queue-based)的绘图加速器的方法与系统,以加速影像的传送速度。
基于上述之目的,本发明的方法提供一种可解决屏幕上的图形撕裂情形的方法。本发明的方法包含下列步骤(1)判定应用程序的每个需求的图块传送型态。图块传送型态包含由上而下的图块传送型态,由下而上的图块传送型态,及直接图块传送型态。(2)依据判定的图块传送型态,传送图块传送指令至指令队列。(3)判定每个已定的图块传送指令的安全区域。(4)当扫描线目前的位置落在与相关的图块传送指令所判定的安全区域内时,将资料从来源位映像转送到目的位映像。
由上而下的图块传送型态可按照下列任一情况而判定(1)目的位映像为屏幕显示区域的一部份,而来源位映像为非显示于屏幕的部份。(2)目的及来源位映像两者皆为屏幕显示区域的一部份,而目的位映像的顶端位置高于来源位映像的顶端位置。(3)目的及来源位映像两者皆为屏幕显示区域的一部份,目的位映像的顶端位置低于来源位映像的顶端位置,且两者不重迭。
由下而上的图块传送型态必须满足以下所有情况(1)目的及来源位映像两者皆为屏幕显示区域的一部份。(2)目的位映像的顶端低于来源位映像的顶端。
(3)目的及来源位映像两者不重迭。且(4)目的位映像的高度小于屏幕显示区域一半的高度。
当目的位映像不是从屏幕显示区域选取的时候,执行直接图块传送。在此情况下,不会发生贴图撕裂的情形,因为此时的图块传送是不显示在屏幕上的。
在判定该需求的图块传送型态之后,必须依据该图块传送指令及扫描线的位置以判定安全区域。
本发明更提出一种系统,主要包含绘图驱动程序,系具有一种机制以依据每个绘图应用程序的需求,判定图块传送型态,并依据每个图块传送型态,传送图块传送指令至指令队列。绘图加速器存取指令队列,以接收已判定的图块传送指令。扫描线计数器,记录扫描线目前的位置。绘图加速器,具有可依据扫描线目前的位置,判定每个图块传送指令所界定的安全区域的机制。绘图加速器是可存取图框缓冲器,以在目前的扫描线位于安全区域时,将资料从来源位映像传送到目的位映像。
与现有技术相比,由于本发明利用指令队列,以依据绘图应用程序的每个需求,暂存各种图块传送型态。因此,CPU的执行及绘图加速器可同步进行。可有效改进图块传送的速度并可即时判定安全区域,以适时地将资料提供给屏幕显示。
图1为一显示贴图撕裂情况的示意图。
图2为一显示判定由上而下的图块传送之安全区域的方法示意图。
图3为一显示判定由上而下的图块传送之安全区域的方法流程图。
图4为一显示判定由下而上的图块传送之安全区域的方法示意图。
图5为一判定由下而上的图块传送之安全区域的方法流程图。
图6为一依据应用程序之需求而判定图块传送型态之方法流程图。
图7为一判定每一图块传送指令之安全区域的方法流程图。
图8为一系统方块图,显示本发明之最佳实施例。
附图符号说明如下S扫描线 X安全区域Y安全区域Z危险区域H目的位映像的高度41屏幕显示区域42目的位映像 801绘图加速器802指令队列 803图框缓冲器804VGA控制器 805扫描线计数器806绘图驱动程序 807绘图装置接口808绘图应用程序 809屏幕下面结合附图对本发明的实施例进行详细说明。
位图块传送(Bit Block Transfer)是把来源位映像的资料传送至目的位映像的一种操作。此传送是由三个光栅运算值(ternary rasteroperation value)来控制的。这个运算值指定了相对应的位来源(source),目的位(destination),及图案位的组合方式,以形成目的位映像(destination bitmap)的最后位资料流(bitstream)。在此,屏幕显示区域(on-screen display)指目前图框缓冲器中显示在屏幕上的部份。相对地,非屏幕显示区域(off-screen display)指图框缓冲器中目前未显示于屏幕上的部份。
为了解决贴图撕裂的情况,必须先决定安全区域(safe region),以便于安全地将来源位映像(source bitmap)的资料传送至目的位映像(destination bitmap)。安全区域的判定是基于两个因素资料传送至图框缓冲器的速率及传送的起始位置。依据本发明之最佳实施例,判定安全区域的机制是依据绘图加速器801所执行的各种图块传送型态而判定的,如图8所示。本发明的绘图驱动程序(graphics driver)806可依据每个绘图应用程序的需求,而判定一种图块传送指令的型态。
例如,参照图2,在屏幕显示区域21,S表示扫描线的水平位置,T表示目的位映像22的顶点位置,B表示目的位映像22的底部位置,p为避免扫描线扫过头的预留区间(guard band)。p的值依据硬体的预设值而定。例如,p的预设值为1。
如果扫描线S位于屏幕显示区域21之安全区域X的位置,界定为T-p,由于具有这样的安全距离,因此扫描线的速率无法赶上资料从图框缓冲器传送到目的位映像22的速率。结果,贴图撕裂的情形便不会发生。另一种情况,如果扫描线在下方的安全区域Y,界定为B,扫描的速率无法赶上资料从图框缓冲器传送至目的位映像22的速度。所以,也不会发生贴图撕裂的情形。
然而,如果扫描线位于危险区Z,以T-p与B之间的区域界定,则影像加速器801可以有两种动作模式(1)以扫描线为单位,逐条地检查目前的扫描线是否与目的位映像的顶端位置加上计数器值(T+i)维持一个安全的距离?(2)持续检查扫描线是否到达安全区域Y的位置。第二种动作模式比较安全但也较慢。由于检查的成本很少,因此本发明的最佳实施例采取第一种的动作模式。
假设绘图加速器801处理资料的速度比资料扫描的速度快。在这情况下,本发明提供由上而下的图块传送方法,如图3所示。步骤301参考来自VGA控制器的扫描线计数器所输出的扫描线的水平位置。步骤302判定扫描线S的水平位置是否高于T-p。如果是,这表示扫描线S位于上方的安全区域X,因此,可安全地以由上而下的方式传送图框缓冲器中的资料至目的位映像22。所以,执行步骤303以执行图块的转换。然后,执行步骤304,停止。
另一方面,如果扫描线S的水平位置位于比T-p低的位置,执行步骤305以进一步检查扫描线S的水平位置是否低于B。如果是,这表示扫描线S目前的位置位于下方的安全区域Y,所以执行步骤303以执行图块传送。如果扫描线S尚未到达较低的安全区域Y,则必然在危险的区域Z。因此,执行步骤306以启动计数器(i)。然后,至步骤307以参考扫描线计数值S。然后,执行步骤308以检查扫描线计数器值S是否大于位映像顶端的位置加上计数值(T+i)。如果否,这表示目前扫描线S仍在危险的区域,因此回到步骤308。如果是,执行步骤309传送水平位置(T+i)的资料及执行步骤310以累进计数器的值。然后,执行步骤311以检查计数器的值是否小于或等于目的位映像的底部位置减去目的位映像的顶端位置(B-T)。如果是,这表示有许多位映像须要传送,所以执行步骤307。否则,执行步骤304,停止。
参阅图4以显示本发明判断由下而上的图块传送指令的安全区域的方法。在屏幕显示区域41,S代表目前的扫描线的水平位置,T表示目的位映像42的顶端位置,B表示目的位映像42的底部位置,H表示目的位映像42的高度,p表示预防扫描线读过头的预留区间。依此,如果扫描线S位于上方的安全区域X,以T-H-p来界定,扫描的速率无法赶上资料从图框缓冲器传送至目的位映像42的速度。因此,贴图撕裂的情形便不会发生。另一方面,如果扫描线S位于下方的安全区域Y,以B来界定,扫描的速率无法赶上资料从图框缓冲器传送至目的位映像42的速度,因此,在此情况下可安全地将影像资料从图框缓冲器传送至目的位映像42,因为这时候不会发生贴图撕裂的情形。
假设绘图加速器801处理资料的速度比扫描资料的速度快,参阅图5,以显示图4所示的由下而上的图块传送方法流程图。步骤51从VGA控制器的扫描线计数器参考扫描线S。步骤52判断扫描线S的水平位置是否比T-H-p的位置高?如果是,这表示扫描线S位于安全的区域X,所以可安全地以由下而上的方式将资料从图框缓冲器传送至目的位映像42。因此,执行步骤53,以执行图框的传送。然后,至步骤54,结束。另一方面,如果扫描线S的水平位置低于T-H-p的位置,则至步骤55以检查扫描线S的水平位置是否低于B。如果是,这表示扫描线S已位于下方的安全区域Y,所以至步骤53以执行图框的传送。另一方面,如果扫描线S尚未到达下方的安全区域Y,执行步骤56,以等待并持续参考扫描线计数器的值,直到扫描线已到达下方的安全区域Y。
依据绘图应用程序的需求,图块传送的型态的判定可更清楚地描述于图6中。依据本发明的最佳实施例,中央处理器中的绘图驱动程序(Graphics Driver)806可执行下列步骤。步骤601绘图应用程序提出一个图块传送的需求。步骤602判定目的位映像是否在屏幕显示?如果不是,这表示图块传送是不显示于屏幕上的,因此执行步骤612以加入直接图块传送指令于指令队列。如果是,这表示目的位映像位于屏幕显示区域,因此执行步骤603。
步骤603检查来源位映像中的影像资料是否来自屏幕显示区域?如果是,执行步骤604。否则,执行步骤606以加入一个由上而下的图块传送指令至指令队列(command queue)中。步骤604检查目的位映像的顶端位置是否低于来源位映像的顶端位置?如果是,执行步骤605。否则,执行步骤606。
步骤605检查目的位映像与来源位映像是否重迭?如果是,执行步骤607。否则,执行步骤606。步骤606加入一个由上而下的图块传送指令至指令队列中。步骤607检查目的位映像的高度是否大于屏幕显示区域之一半的高度?如果是,这表示图块传送的面积很大,因此执行步骤608,以应用双缓冲器(double buffer)的技术。否则,执行步骤611。
步骤608由于目的位映像的面积很大,因此在非屏幕显示区域建立一暂存空间(temporary buffer)以储存来源位映像的资料。步骤609加入一个直接图块传送指令于指令队列,以将来源位映像的影像资料传送到暂存空间中。步骤610加入一个由上而下的图块传送指令至指令队列。然后,执行步骤613。
步骤611加入一个由下而上的图块传送指令至指令队列中。步骤612加入一个直接图块传送指令至指令队列中。然后,结束图块传送,步骤613。
指令队列802为一被动组件。绘图加速器801从指令队列802读取每个指令,并依据图3与图5的流程执行相关的安全区域判定。例如,参阅图7,绘图加速器801从指令队列802中撷取指令,步骤701。指令便依据其型态而分为由上而下的图块传送指令、由下而上的图块传送指令、及直接的图块传送指令,步骤702。
就由上而下的图块传送指令而言,参考扫描线计数器,步骤703。判定扫描线计数器的值S是否小于目的位映像的顶端位置(T)减去预留区间(p),步骤704。如果是,执行图块传送,步骤708。否则,检查扫描线计数器的值S是否大于目的位映像的底端位置(B)。如果是,执行图块传送,步骤708。否则,这表示扫描线目前的位置是在危险区域,所以执行步骤706以重置计数器i。
然后执行步骤707,以参考扫描线计数器的值S。然后,执行步骤709以检查计数器的值S是否大于位映像的顶端位置加上计数值(T+i)。如果不是,这表示目前的扫描线位置仍在危险的区域内,所以回到步骤707。如果是,执行步骤710以就第(T+i)条扫描线执行图块传送。然后,执行步骤711以累进计数器的值。然后,执行步骤712以检查计数器值是小于或等于目的位映像减去目的位映像的顶端位置(B-T)。如果是,执行步骤707。否则,执行步骤A。
就直接图块传送指令,可直接执行图块传送指令,步骤708,而不必担心会有贴图撕裂的情况发生。另一方面,就由下而上的图块传送指令,绘图加速器801参考扫描线计数器805,步骤713。判定扫描线计数器的值S是否小于目的位映像(T)的顶端位置减去目的位映像的高度(H)及预留区间(p),步骤714。如果是,执行图块传送,步骤708。否则,检查扫描线计数器的值S是否大于目的位映像(B)的底端位置,步骤715。如果是,执行图块传送,步骤708。否则,等待并参考扫描线计数器805,直到扫描线到达下方的安全区域,步骤716。
依据本发明的最佳实施例,本发明的系统可更清楚地显示于图8中。绘图应用程序808呼叫绘图装置接口(graphics device interface)807的函式以提出图形输出的需求。绘图装置接口807为一作业系统(Operating system)提供的模块,介于绘图驱动程序806及绘图应用程序808之间。绘图装置接口807通过一组装置驱动程序的接口(devicedriver interface)函式,与绘图驱动程序806沟通。资料便通过这些输入点的输出/输入参数,在绘图装置接口807与绘图驱动程序806之间传送。绘图驱动程序806支持某些装置驱动程序的接口函式,以供绘图装置接口807呼叫。绘图驱动程序806支持绘图装置接口807所提出的需求。其方式为,在返回至绘图装置接口807之前,输入绘图指令至指令队列802中。绘图应用程序808,绘图装置接口807及绘图驱动程序806是在中央处理器中执行的。
另一方面,VGA控制器804在每个更新的周期中读取来自图框缓冲器803的资料,将资料解码,传送最后所得到的颜色信号至屏幕809上。依据扫描线的位置,绘图加速器801可读取来自指令队列802的指令,并改变图框缓冲器803中的图形资料值(graphics values),以通过VGA控制器804将位资料流(bitstreams)传送至屏幕809上显示。
以上所述仅为本发明的较佳实施例而已,且已达广泛之实用功效,凡依本发明权利要求范围所作的等效变与修饰,皆仍属本发明专利涵盖的范围内。
权利要求
1.一种可避免屏幕上的贴图撕裂情形的方法,至少包含下列步骤依据绘图应用程序的需求,判定图块传送型态,该图块传送型态依据目前的扫描线,目的位映像,来源位映像,及屏幕显示区域等的相对位置,选择由上至下的图块传送型态,由下至上的图块传送型态,或直接的图块传送型态;依据所判定的图块传送型态,传送相对应的图块传送指令至指令队列;依据该相对应的图块传送指令,判定该扫描线目前是否位于安全区域;及当该扫描线目前的位置是在该相对应的图块传送指令所界定的安全区域内时,将资料从来源位映像传送至目的位映像。
2.如权利要求1所述的方法,其特征在于,所述的判定图块传送型态的步骤包含当所述的目的位映像位于屏幕显示的范围内时,判定所述的绘图应用程序的需求,适用于由上而下的图块传送型态。
3.如权利要求2所述的方法,其特征在于,所述的判定图块传送型态的步骤包含当所述的目的位映像的顶端位置高于所述的来源位映像的顶端位置时,判定所述的绘图应用程序的需求,适用于由上而下的图块传送型态。
4.如权利要求3所述的方法,其特征在于,所述的判定图块传送型态的步骤包含当所述的目的位映像与所述的来源位映像的范围重迭时,判定所述的绘图应用程序的需求,适用于由上而下的图块传送型态。
5.如权利要求4所述的方法,其特征在于,所述的判定图块传送型态的步骤包含当所述的目的位映像高度小于或等于屏幕显示区域高度的一半时,判定所述的绘图应用程序的需求,适用于由下而上的图块传送型态。
6.如权利要求5所述的方法,其特征在于,所述的判定图块传送型态的步骤包含当所述的目的位映像高度大于屏幕显示区域高度的一半时,复制所述的来源位映像的资料至暂存记忆空间;及加入一由上而下的图块传送指令至所述的指令队列。
7.如权利要求1所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含步骤当所述的扫描线目前的位置高于所述的目的位映像的顶端位置减掉一预留区间的距离时,判定所述的扫描线目前的位置,位于所述的由上而下的图块传送指令所界定的安全区域。
8.如权利要求7所述的方法,其特征在于,所述的判定扫描线目前是否在安全区域的步骤,包含当所述的扫描线目前的位置低于所述的目的位映像的底部位置时,判定所述的扫描线目前的位置,位于所述的由上而下的图块传送指令所界定的安全区域。
9.如权利要求8所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含当所述的扫描线目前的位置介于所述的目的位映像的顶端减去一预留区间(T-p)的位置,及所述的目的位映像的底部(B)位置时,判定所述的扫描线目前的位置,位于一危险区域。
10.如权利要求9所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含当所述的扫描线目前的位置低于所述的目的位映像的顶端加上一计数值(T+i)时,逐条地自一来源位映像传送资料至一目的位映像。
11.如权利要求7所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含当所述的扫描线目前的位置低于所述的目的位映像的底部的位置时,判定所述的扫描线位于所述的由下而上的图块传送指令所界定的安全区域。
12.如权利要求8所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含当所述的扫描线目前的位置在所述的目的位映像顶端位置减去所述的目的位映像的高度及一预留区间(T-H-p)时,判定所述的目前扫描线位于所述的由下而上的图块传送指令所界定的安全区域。
13.如权利要求1所述的方法,其特征在于,所述的判定目前的扫描线是否在安全区域的步骤,包含当所述的扫描线目前的位置在所述的目的位映像的底部下方时,判定所述的扫描线位于所述的由下而上的图块传送指令所界定的安全区域。
14.一种可避免贴图撕裂情形的系统,包含图块传送型态判定装置,用以依据绘图应用程序的需求,判定所对应的图块传送型态;传送装置,用以依据每一图块传送型态,传送相对应之图块传送指令;指令队列,用以接收每一图块传送型态所相对应的图块传送指令;扫描线计数器,用以产生一代表扫描线的目前位置的扫描线计数值;安全区域判定装置,用以依据该扫描线目前的位置,目的位映像,来源位映像,及屏幕显示区域等的相对位置,判定该相对应的图块传送指令的安全区域;以及图框缓冲器,用以当该目前扫描线的位置,位于该相对应的图块传送指令所界定之安全区域时,从来源位映像传送资料至目的位映像。
15.如权利要求14所述的系统,其特征在于,所述的图块传送型态可选择由上而下的图块传送型态,由下而上的图块传送型态,及直接的图块传送型态。
16.如权利要求14所述的系统,其特征在于,所述的绘图加速器,是用以判定所述的图块传送型态所界定的安全区域。
全文摘要
本发明是可即时判定扫描线是否位于安全区域,以避免图形撕裂的情形被显示于屏幕上。依据绘图应用程序的需求,本发明可依据目的位映像与来源位映像在图框缓冲器的位置关系,判定图块传送的型态。本发明界定了三种图块传送的型态:由上而下的图块传送型态,由下而上的图块传送型态,及直接图块传送型态。每一种图块传送型态皆有一相对的图块传送指令,以加入指令队列。在接收到每个相对的图块传送指令之后,便可即时判定其安全区域。然后,当扫描线目前的位置位于所判定的安全区域内时,来源位映像的资料便可安全地传送至目的位映像,而不会有贴图撕裂的情形发生。
文档编号G06F9/44GK1375768SQ0110917
公开日2002年10月23日 申请日期2001年3月16日 优先权日2001年3月16日
发明者邱永丰, 陈家杰, 赵昱森 申请人:矽统科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1