缓冲区交换的方法和相关处理器与流程

文档序号:18214099发布日期:2019-07-19 22:30阅读:299来源:国知局
缓冲区交换的方法和相关处理器与流程

本发明涉及缓冲区(buffer)交换的方法和相关处理器,更具体地说,涉及通过根据输入数据选择交换行为来实现的缓冲区交换的方法和相关处理器,所述输入数据可以反映芯片类型、电源状态、自定义设置和/或者帧之间的差异是否大于阈值。



背景技术:

图形用户界面被诸如移动电话、智能电话、数码相机、摄像机、导航仪、游戏控制台、手持式计算机和可穿戴小配件等现代电子设备广泛采用。图形用户界面通过绘制(draw)和显示帧序列实现。

为了实现图形用户界面的效率,通过分别对多个帧执行多次缓冲区交换的迭代来利用多重缓冲(例如双缓冲)。缓冲区交换的每次迭代可以包括交换多个缓冲区以分别成为前(front)缓冲区和一个或多个后(back)缓冲区,因此可以读取(例如,用于显示)在缓冲区交换的前一次迭代中已经被绘制到前缓冲区的帧,并且连续帧可以被绘制到后缓冲区。

例如,为了实现第一缓冲区和第二缓冲区的双重缓冲,在缓冲区交换的第一次迭代中,第一缓冲区可以是提供用于显示的第一帧的前缓冲区,并且第二缓冲区可以是允许绘制第二帧的后缓冲区;那么在缓冲区交换的第二次迭代中,第二缓冲区可以是提供用于显示的第二帧的前缓冲区,并且第一缓冲区可以是允许绘制第三帧的后缓冲区。



技术实现要素:

缓冲区交换可以通过不同的交换行为来执行。本发明的一个目的是提供一种用于缓冲区交换的方法(例如,图4中的400),其交换多个缓冲区(例如,图1中的b0和b1)以分别成为前缓冲区和一个或多个后缓冲区,使得能够读取绘制到前缓冲区的帧,并且将另一帧绘制到所述一个或多个后缓冲区中的一个。该方法可以包括:通过处理器(例如,图1中的104),迭代用于绘制帧序列(例如,图5a中的f[p]或图5b中的f[q])中的每一个的过程(例如,图4中的404、406和408),其中该过程可以包括:由处理器根据输入数据选择多个交换行为中的一个(例如,图4中的404),使得可以存在选择不同的所述交换行为的过程的至少两个迭代;并且通过所选择的所述多个交换行为中的一个来执行缓冲区交换(例如,406)。

在一个实施例中(例如,图5a),多个交换行为可以包括保留(preserve)行为,并且通过保留行为来执行缓冲区交换可以包括:复制(例如,图4中的410a)所述前缓冲区到所述多个后缓冲区中的一个,并且通过更新绘制区域(例如,d[p])中的至少一个像素的值将当前帧(例如,图5a中的f[p])绘制(例如,414a)到所述多个后缓冲区中的所述一个,所述绘制区域反映当前帧(例如,f[p])与所述过程的前一(preceding)迭代(例如e[p])中绘制的前一帧(例如,f[p-1])之间的差异。

在一个实施例中(例如,图5b),多个交换行为可以包括缓冲区损坏(damage)行为,并且通过缓冲区损坏行为执行缓冲区交换可以包括:通过更新绘制区域中的至少一个像素的值,将当前帧(例如,图5b中的f[q])绘制(例如,图4中的412b)到所述后缓冲区中的所述一个,其中绘制区域可以反映脏(dirty)区域(例如,d[q])和损坏区域(例如,d[q-1])的并集(union),脏区域可以反映当前帧(例如,f[q])与绘制于前一迭代(例如,e[q-1])的前一帧(例如,f[q-1]之间的差异,并且损坏区域(例如,d[q-1])可以反映在所述过程的所述前一迭代的所述一个或多个后缓冲区的内容与所述过程的较早迭代(例如,e[q-2])的所述一个或多个后缓冲区的内容之间的差异,其中所述过程的所述较早迭代在所述过程的所述前一迭代之前。

在一个实施例中(例如,图4),多个交换行为可以包括损毁(destroy)行为,并且通过损毁行为来执行缓冲区交换可以包括:通过更新所述多个后缓冲区中的所述一个中的所有像素的值,将当前帧绘制(例如,410c)到所述多个后缓冲区中的所述一个。

在一个实施例中,所述过程可以进一步包括:生成当前输出数据(例如,408),并且根据在所述过程的前一迭代中生成的前一输出数据来执行所述缓冲区交换。所述当前输出数据可以包括脏区域(例如,图5b中的d[q]),该脏区域反映在所述过程的当前迭代(例如,e[q])中待绘制的当前帧(例如,f[q])与在所述过程的所述前一次迭代(例如,e[q-1])中绘制的前一帧(例如,f[q-1]))之间的差异。

在一个实施例中(例如,图4),根据输入数据选择多个交换行为中的一个可以包括(例如,图4中的4042):至少根据在所述过程的前一次迭代中绘制的前一帧以及在所述过程的当前迭代中绘制的当前帧计算参考区域;以及比较参考区域是否大于阈值并且将比较结果包括在输入数据中。在一个实施例中,根据输入数据选择多个交换行为中的一个可以进一步包括:如果参考区域大于阈值,则选择保留行为,并且如果参考区域不大于阈值,则选择缓冲区损坏行为。

在一个实施例中,参考区域可以通过在所述过程的当前迭代中待绘制的当前帧与在所述过程的前一次迭代中绘制的前一帧之间的差异来计算。在一个实施例中,参考区域可以通过脏区域和损坏区域的并集来计算;脏区域可以通过在所述过程的当前迭代中待绘制的当前帧与在所述过程的前一次迭代中绘制的前一帧之间的差异来计算,并且损坏区域可以通过所述过程的前一次迭代中的一个或多个后缓冲区的内容与所述过程的较早迭代中的一个或多个后缓冲区的内容之间的差异来计算,其中所述过程的较早迭代在所述过程的前一迭代之前。

在一个实施例中,输入数据可以包括以下中的至少一个:处理器的芯片类型、反映处理器是否由电池供电的电源状态、自定义设置以及参考区域是否大于阈值的比较结果。参考区域可以是以下之一:脏区域,以及脏区域和损坏区域的并集。

本发明的目的是提供电子设备(例如,110)的处理器(例如,图1中的104)。处理器可以包括:用于存取多个缓冲区(例如,b0和b1)的存取电路(例如,102)以及耦接到存取电路的处理单元(例如,100),用于根据输入数据在不同的交换行为中选择以执行缓冲区交换的不同迭代。在缓冲区交换的每次所述迭代中,交换多个缓冲区以分别成为前缓冲区和多个后缓冲区,并且处理单元可以将帧序列中的一个绘制到所述后缓冲区中的一个。

本发明可以通过根据输入数据改变交换行为来执行缓冲区交换,从而可以自动地、自适应地、灵活地和/或动态地执行改变交换行为从而实现缓冲区交换,因而可以避免不断采用相同交换行为的缺点,并且利用例如保留行为的较小绘制区域以及缓冲区损坏行为的较少带宽需求等不同交换行为的优点。

结合附图阅读本发明的实施例的以下详细描述后,本发明的众多目的、特征和优点将变得显而易见。然而,这里使用的附图是为了描述的目的,不应被认为是限制性的。

附图说明

在阅读以下详细描述和附图之后,本发明的上述目的和优点对于本领域的普通技术人员将变得更加显而易见,其中:

图1示出了根据本发明实施例的设备;

图2a(现有技术)和图2b(现有技术)示出了适用于图1中的设备的不同交换行为的示例;

图3a和图3b示出了通过分别在图2a和图2b中示出的交换行为来执行缓冲区交换的示例;

图4示出了根据本发明实施例的缓冲区交换的流程图;以及

图5a和图5b示出了执行图4中的流程图的示例。

具体实施方式

请参考图1,其示出了根据本发明实施例的电子设备110。设备110可以是诸如移动电话、智能电话、数码相机、摄像机、导航仪、游戏控制台、手持式计算机或可穿戴小配件等的移动设备。设备110可以包括处理器104、缓冲模块112、显示控制器106和屏幕108。缓冲模块112可以耦接在处理器104和显示控制器106之间,并且可以包括用于多缓冲的多个缓冲区(例如,易失性存储器),例如用于双缓冲的两个缓冲区b0和b1。处理器104可以执行诸如应用的软件代码。处理器104可以包括耦接到缓冲模块112以存取缓冲区的存取电路102和耦接到存取电路102的处理单元100,处理单元100用于实现用户界面(userinterface,ui)引擎以为每个应用提供图形用户界面。例如,处理单元100可以是执行图形处理软件和/或固件的图形处理单元(graphicprocessingunit,gpu)和/或数字逻辑电路。显示控制器106可以耦接在缓冲模块112和屏幕108之间。

当为应用实现ui引擎时,处理单元100可以执行缓冲区交换的多次迭代以将应用的一系列相关图形内容(例如,帧序列)经由存取电路102绘制(计算和/或写入)到缓冲模块112。在缓冲区交换的每次迭代中,可以交换缓冲区b0和b1以分别成为前缓冲区和后缓冲区;显示控制器106可以读取在缓冲区交换的前一迭代中被绘制到前缓冲区的前一帧,然后在屏幕108上显示,并且处理单元100可以将当前帧绘制到后缓冲区。

缓冲区交换可以通过不同的交换行为来执行。与图1一起,请参照图2a和图2b示出的交换行为的两个示例。处理单元100可以通过此两个示例执行缓冲区交换。遵循图2a中所示的流程图200a,处理单元100可通过保留行为来执行缓冲区交换的迭代。遵循图2b所示的流程图200b,处理单元100可通过缓冲区损毁行为来执行缓冲区交换的迭代。

图2a中所示的流程图200a的主要步骤可以描述如下:

步骤202a:处理单元100可以初始化ui引擎的实现和缓冲区交换的执行。

步骤204a:处理单元100可设定采用保留行为来执行缓冲区交换的迭代,其中缓冲区交换的每次迭代可包括后续步骤206a、208a和210a。

步骤206a:处理单元100可将前缓冲区中的前一帧复制到一个或多个后缓冲区,因此前缓冲区和后缓冲区可存储相同的帧。前缓冲区中的前一帧在缓冲区交换的前一次迭代中绘制。

步骤208a:处理单元100可以将脏区域计算为绘制区域,其中脏区域反映前一迭代中绘制的前一帧与当前迭代中待绘制的当前帧之间的差异。

步骤210a:处理单元100可以通过更新绘制区域中的至少一个像素的值来将当前帧绘制到后缓冲区,并且在缓冲区b0和b1交换的情况下迭代到步骤206a。

连同图1和图2a,请参考图3a。其示出了一个示例,在该示例中通过用于分别绘制帧序列f[i-2]、f[i-1]和f[i]的保留行为来执行缓冲区交换的迭代ep[i-2]、ep[i-1]和ep[i]。在迭代ep[i-2]中,假设缓冲区b0和b1分别是前缓冲区和后缓冲区。当迭代ep[i-2]完成时,缓冲区b0和b1分别存储帧f[i-3]和f[i-2]。在缓冲区b0和b1分别被交换为后缓冲区和前缓冲区的情况下,处理单元100可以通过以下步骤执行迭代ep[i-1]:在步骤206a中,复制(前)缓冲区b1的帧f[i-2]到(后)缓冲区b0。然后,在步骤208a中,处理单元100可以将脏区域d[i-1]计算为绘制区域rp[i-1],其中脏区域d[i-1]反映将在当前迭代ep[i-1]中绘制的帧f[i-1]与在迭代ep[i-2]中绘制的帧f[i-2]之间的差异。因此,在步骤210a中,处理单元100可以通过更新绘制区域rp[i-1]中的至少一个像素的值来将当前帧f[i-1]绘制到(后)缓冲区b0。

随着迭代ep[i-1]完成,处理单元100可以迭代到步骤206a以进行下一次迭代ep[i],其中缓冲区b0和b1分别被交换为前缓冲区和后缓冲区。处理单元100可通过以下步骤执行迭代ep[i]:在步骤206a中,复制(前)缓冲区b0的帧f[i-1]到(后)缓冲区b1。然后,在步骤208a中,处理单元100可以将脏区域d[i]计算为绘制区域rp[i],其中脏区域d[i]反映将在当前迭代ep[i]中绘制的帧f[i]与在迭代ep[i-1]中绘制的帧f[i-1]之间的差异。因此,在步骤210a中,处理单元100可以通过更新绘制区域rp[i]中的至少一个像素的值来将当前帧f[i]绘制到(后)缓冲区b1。

图2b中所示的流程图200b的主要步骤可以描述如下:

步骤202b:处理单元100可以初始化ui引擎的实现和缓冲区交换的执行。

步骤204b:处理单元100可设置采用缓冲区损坏行为来执行缓冲区交换的迭代,其中缓冲区交换的每次迭代可包括后续步骤206b、208b、210b和212b。

步骤206b:处理单元100可计算反映当前迭代中待绘制的当前帧与前一迭代中绘制的前一帧之间的差异的脏区域。

步骤208b:处理单元100可以计算脏区域和损坏区域的并集作为绘制区域,损坏区域反映所述过程的前一次迭代中的一个或多个后缓冲区的内容与在所述过程的较早迭代中的一个或多个后缓冲区的内容之间的差异,其中所述过程的较早迭代在所述过程的前一迭代之前。

步骤210b:处理单元100可以通过更新绘制区域中的至少一个像素的值来将当前帧绘制到后缓冲区。

步骤212b:处理单元100可将所述脏区域记录为历史,并伴随着交换缓冲区b0及b1迭代至步骤206b。

连同图1和图2b,请参考图3b。其示出缓冲区交换的迭代ed[i-2]、ed[i-1]和ed[i]由缓冲区损坏行为执行,以用于分别绘制帧序列f[i-2],f[i-1]和f[i]。在迭代ed[i-2]中,假设缓冲区b0和b1分别是前缓冲区和后缓冲区;在迭代ed[i-1]中,缓冲区b0和b1分别被交换为后缓冲区和前缓冲区。当迭代ed[i-2]完成时,(前)缓冲区b0和(后)缓冲区b1分别存储帧f[i-3]和f[i-2];当迭代ed[i-1]完成时,(后)缓冲区b0和(前)缓冲区b1分别存储帧f[i-1]和f[i-2]。然后,在缓冲区b0和缓冲区b1分别交换为前缓冲区和后缓冲区的情况下,处理单元100可以通过以下步骤执行迭代ed[i]:在步骤206b中,计算反映在当前迭代ed[i]中待绘制的当前帧f[i]和在前一迭代ed[i-1]中绘制的前一帧f[i-1]之间差异的脏区域d[i]。在步骤208b中,处理单元100可计算反映脏区域d[i]与损坏区域d[i-1]的并集的绘制区域rd[i],其中损坏区域d[i-1]反映在前一迭代ed[i]中的后缓冲区(b0)的内容与较早迭代ed[i-2]中的后缓冲区(b1)的内容之间的差异。在图3b所示的例子中,损坏区域d[i-1]也可反映前一帧f[i-1]与在前一迭代ed[i-1]之前的较早迭代ed[i-2]中绘制的较早帧f[i-2]之前的差异。因此,在步骤210a中,处理单元100可以通过更新绘制区域rd[i]中的至少一个像素的值来将当前帧f[i]绘制到(后)缓冲区b1。

注意到损坏区域d[i-1]是迭代ed[i-1]的脏区域。换句话说,在处理单元100在步骤206b计算迭代ed[i-1]的脏区域d[i-1]之后,可以在步骤212b将脏区域d[i-1]存储为迭代ed[i-1]的历史,并且在步骤208b用作后续迭代ed[i]的损坏区域。类似地,在步骤206b计算的迭代ed[i]的脏区域d[i]可以在步骤212b存储为迭代ed[i]的历史,并且在步骤208b用作后续迭代ed[i+1]的损坏区域(未示出)。

每个交换行为都有其自身的优点。通过保留行为进行缓冲区交换(图2a和图3a)需要在每次迭代中将整个帧的所有像素值从一个缓冲区复制到另一个缓冲区(图2a中的步骤206a),并且这样的帧复制因为复制涉及读取和写入可能消耗相当多的时间、总线带宽和功耗。缓冲区损坏行为的缓冲区交换不需要在每次迭代中在缓冲区之间复制整个帧。另一方面,在诸如图3a和图3b的示例的一些场景中,缓冲损坏行为的绘制区域(例如,图3b中的rd[i])可以大于保留行为的绘制区域(例如图3a中的rp[i]),并且更新较大绘制区域的至少一个像素值可能消耗更多时间和功率。继续为所有应用和/或应用的所有帧采用相同的交换行为将导致不必要的时间和功耗浪费。

不是针对所有应用和/或针对应用的所有帧保持相同的交换行为,本发明的处理单元100可以通过根据输入数据改变交换行为来执行缓冲区交换,该输入数据可以反映芯片类型、电源状态、自定义设置和/或帧之间的差异是否大于阈值等。在一些实施例中,可以自动地,自适应地,灵活地和/或动态地执行改变交换行为。处理单元100可因此响应于输入数据的不同内容而在不同交换行为之间改变,以执行缓冲区交换的不同迭代,以用于分别绘制帧序列。例如,处理单元100可以针对不同的应用分别采用不同的交换行为,和/或当为应用实现ui引擎时,处理单元100可针对缓冲区交换的不同迭代采用不同交换行为来为相同应用绘制帧。

与图1一起,请参阅图4。图4示出了根据本发明实施例的流程图400;处理单元100可以通过自动选择交换行为来应用流程图400以执行缓冲区交换。流程图400的主要步骤可以描述如下:

步骤402:处理器104的处理单元100可以初始化ui引擎的实现和缓冲区交换的执行,然后迭代包括连续步骤404、406和408的过程,以交换缓冲区并绘制帧到所述过程的每次迭代中的后缓冲区。

步骤404:处理单元100根据输入数据选择多个交换行为中的一个;并且多个交换行为可以包括保留行为、缓冲损坏行为、损毁行为等。在一些实施例中,处理单元100可以自动选择多个交换行为之一。步骤404可以包括步骤4041和4042。

在步骤4041中,处理单元100可以计算反映当前迭代中待绘制的当前帧与前一迭代中绘制的前一帧之间的差异的脏区域。在一个实施例中,处理单元100可以采用脏区域作为参考区域。在一个不同的实施例中,处理单元100可以进一步计算脏区域和损坏区域的并集作为参考区域,其中损坏区域通过前一迭代中的一个或多个后缓冲区的内容与较早迭代中一个或多个后缓冲区的内容之间的差异进行计算,其中较早迭代在前一迭代之前。

利用获得的参考区域,处理单元100可以比较参考区域是否大于阈值,并且将比较结果包括在输入数据中。除了比较结果之外,输入数据还可以包括:包括处理器104的芯片类型和/或反映处理器104或设备110是由电池还是通过电源线供电的电源状态的一个或多个全局条件、指示是否针对特定场景采用特定交换行为的自定义设置,和/或其他因素。

在步骤4042中,处理单元100可以根据输入数据来决定交换行为,使得可以选择不同的交换行为。

例如,如果芯片类型反映处理器104具有有限的总线带宽,则处理单元100可选择缓冲区损坏行为。如果芯片类型反映处理器104具有足够的总线带宽,则处理单元100可以选择保留行为。某些类型的芯片可能仅支持保留行为及损坏行为,因此处理单元100可以在这两种交换行为之间切换;一些其他类型的芯片可以支持三种或更多种交换行为,并且处理单元100可以在这三种或更多种交换行为之间切换。对于低级芯片,处理单元100可以选择损毁行为;对于高级芯片,处理单元100可以选择缓冲区损坏行为或保留行为。类似地,如果自定义设置反映处理单元100为其实现ui引擎的当前应用适合于特定交换行为,则处理单元100可选择该特定交换行为。如果电源状态指示设备110(图1中所示)由电源线供电,则处理单元100可选择用功率换效率的交换行为。在一个实施例中,当电源状态指示设备110在没有电源线插入(例如由电池供电)的情况下供电时,处理单元100可以根据反映参考区域是否大于阈值的比较结果来选择交换行为;例如,如果参考区域大于阈值,则处理单元100可以选择保留行为,并且如果参考区域不大于阈值,则选择缓冲区损坏行为。在处理单元100的输入数据中可以包括诸如复制缓冲区的效率和/或多个后缓冲区是外部还是内置的其他信息以确定应该选择哪个交换行为。

输入数据可以进一步包括学习结果。例如,处理单元100可以采用第一交换行为和监控性能、系统资源消耗和/或执行缓冲区交换的基准(benchmark);如果性能下降,则处理100可以切换到第二交换行为以检查性能是否提高。因此,处理单元100可以找到并记录(针对学习结果)当前场景的适当交换行为。

步骤406:处理单元100可以通过选择的交换行为来执行缓冲区交换。例如,如图4所示,如果选择的交换行为是保留行为,则处理单元100可以通过以下步骤执行缓冲区交换:在步骤410a中,交换前缓冲区和后缓冲区,将前缓冲区中的帧复制到后缓冲区;在步骤412a中,获取脏区域作为绘制区域;并且在步骤414a中,通过更新绘制区域中的至少一个像素的值来将当前帧绘制到后缓冲区。

如果选择的交换行为是缓冲区损坏行为,则处理单元100可以通过以下方式执行缓冲区交换:在步骤410b中,如果并集尚未计算,则计算脏区域和损坏区域的并集作为绘制区域;并且在步骤412b中,交换前后缓冲区,通过更新绘制区域中的至少一个像素的值来将当前帧绘制到后缓冲区。

如果选择的交换行为是损毁行为,则处理单元100可以通过以下步骤执行缓冲区交换:在步骤410c中,在交换前后缓冲区的情况下,通过更新后缓冲区的帧的所有像素的值来将当前帧绘制到后缓冲区。也就是说,对于损毁行为,绘制区域是整个帧。

步骤408:可选地,处理单元100可以生成当前输出数据,而处理单元100可以根据前一迭代的前一输出数据执行当前迭代。例如,前一迭代的输出可以包括反映前一迭代中绘制的前一帧与前一迭代之前的较早迭代中绘制的较早帧之间差异的前一脏区域。因此,当处理单元100执行当前迭代时,前一迭代的输出中的前一脏区域可被用作损坏区域以计算当前迭代的参考区域和/或绘制区域(在步骤4041或410b);并且,当前迭代的当前输出可以包括反映当前帧与前一帧之间差异的当前脏区域。

与图1和图4一起,请参阅图5a。图5a示出处理单元100选择保留行为以执行用于将帧f[p]绘制到后缓冲区的迭代e[p]的步骤406的示例。在前一迭代e[p-1]中,前一帧f[p-1]被绘制到后缓冲区,并且先前(prior)帧f[p-2]已被存储在前缓冲区中。由于迭代e[p]以前后缓冲区交换开始,处理单元100可以在步骤4041计算反映当前帧f[p]和前一帧f[p-1]之间的差异的脏区域d[p],并在步骤4042决定对于当前迭代e[p]采用保留行为。在步骤410a,处理单元100可以将帧f[p-1]从前缓冲区复制到后缓冲区;在步骤412a,获得脏区域d[p]作为绘制区域,并且在步骤414a,通过更新绘制区域中的至少一个像素值来将当前帧f[p]绘制到后缓冲区。在步骤408,处理单元100可以生成包括脏区域d[p]的当前输出数据。

与图1和图4一起,请参阅图5b。图5b示出处理单元100选择缓冲损坏行为以执行用于将帧f[q]绘制到后缓冲区的迭代e[q]的步骤406的示例。在前一迭代e[q-1]之前的较早迭代e[q-2]中,先前帧f[q-2]被绘制到后缓冲区。类似地,在前一迭代e[q-1]中,前后缓冲区交换,前一帧f[q-1]被绘制到后缓冲区,并且生成包括脏区域d[q-1]的前一输出数据,其中脏区域d[q-1]反映帧f[q-1]和f[q-2]之间的差异。

当迭代e[q]开始时,处理单元100可以在步骤4041计算反映当前帧f[q]和前一帧f[q-1]之间差异的当前脏区域d[q],在步骤4042决定采用缓冲损坏行为用于当前迭代e[q],并在步骤410b通过计算前一脏区域d[q-1]与当前脏区域d[q]的并集来获得绘制区域。然后,在步骤412b,在交换前后缓冲区的情况下,处理单元100可通过更新绘制区域中的至少一个像素值来将当前帧f[q]绘制到后缓冲区。为了执行步骤4042或410b,处理单元100可以将在前一迭代e[q-1]生成的输出数据中获得的前一脏区域d[q-1]作为损坏区域;并且在步骤408,处理单元100可以生成包括脏区域d[q]的当前输出数据。

如流程图400所示,交换行为的选择是动态的、灵活的和适应性的。例如,根据输入数据,处理单元100可以选择第一交换行为来为第一应用实现第一ui引擎,并且选择不同的第二交换行为来为第二应用实现第二ui引擎。

和/或,当为应用实现ui引擎时,处理单元100可以针对不同的缓冲区交换迭代采用不同的交换行为来分别为相同的应用绘制帧。例如,由不同的交换行为绘制的图5a中的帧f[p]和图5b中的帧f[q]可以是相同应用的不同帧。处理单元100可以根据参考区域是否大于阈值来选择不同的交换行为(步骤4042)。对于图5a中的迭代e[p],处理单元100可响应于表示在步骤4042中计算出的参考区域大于阈值的比较结果,决定通过保留行为来执行缓冲区交换。对于图5b中的迭代e[q],处理单元100可响应于表示在步骤4042中计算出的参考区域不大于阈值的比较结果,改变至以通过缓冲区损坏行为来执行缓冲区交换。换句话说,如果参考区域改变为大于阈值,则处理单元100可以改变为保留行为,并且如果参考区域改变为不大于阈值,则处理单元100可以改变为缓冲区损坏行为。

在一个实施例中,可以有两个阈值;例如,处理单元100可以:如果参考区域不大于第一阈值,则选择步骤4042中的缓冲区损坏行为;如果参考区域大于第一阈值但不大于第二阈值,则选择保留行为,并且如果参考区域大于第二阈值,则选择损毁行为。

综上所述,本发明可以根据例如芯片类型、电源状态、自定义设置以及连续帧之间的差异的各种考虑因素,通过在不同交换行为之间切换来执行缓冲区交换。可以自动执行不同交换行为之间的切换。因此,本发明可以避免不断采用相同交换行为的缺点,并且利用例如保留行为的较小绘制区域以及缓冲区损坏行为的较少带宽需求等不同交换行为的优点。

尽管已经根据目前被认为是最实际和优选的实施例的内容描述了本发明,但是应该理解,本发明不必限于所公开的实施例。相反,意在涵盖包括在所附权利要求书的精神和范围内的各种修改和类似布置,其应符合最宽泛的解释以涵盖所有这些修改和类似结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1