CN1886779A - 使用多帧缓冲器绘制的合成图像 - Google Patents
使用多帧缓冲器绘制的合成图像 Download PDFInfo
- Publication number
- CN1886779A CN1886779A CNA2004800354797A CN200480035479A CN1886779A CN 1886779 A CN1886779 A CN 1886779A CN A2004800354797 A CNA2004800354797 A CN A2004800354797A CN 200480035479 A CN200480035479 A CN 200480035479A CN 1886779 A CN1886779 A CN 1886779A
- Authority
- CN
- China
- Prior art keywords
- window
- frame buffer
- viewing area
- data
- compositor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 142
- 239000002131 composite material Substances 0.000 title 1
- 238000000034 method Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 238000005457 optimization Methods 0.000 abstract description 3
- 239000003973 paint Substances 0.000 abstract 4
- 238000010422 painting Methods 0.000 abstract 1
- 238000007796 conventional method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 4
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010425 computer drawing Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000002939 deleterious effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000002650 habitual effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
Abstract
提供了一个由经典应用程序使用的次级帧缓冲器(720),所述经典应用程序被设计为直接绘制到帧缓冲器。经典应用程序将其窗口绘制到所述次级帧缓冲器,而并非绘制到初级帧缓冲器(716)。一个合成器(706)从所述次级帧缓冲器读取窗口数据,并将其绘制到初级帧缓冲器。所述合成器还读取由其他应用程序写入到后备缓冲器(708)的窗口数据,并将这些数据绘制到所述初级帧缓冲器。由于所述合成器为所有窗口保存可视区域数据,因此所述窗口可以被正确地绘制到所述初级帧缓冲器,无论这些数据是来自后备缓冲窗口还是来自经典应用程序。此外,由于是由所述合成器而非应用程序自身负责将传统窗口绘制到所述帧缓冲器,因此由经典应用程序的优化所导致的经典窗口被不恰当地绘制并覆盖到新形式窗口之上的情况将不会再发生。
Description
技术领域
[0001]本发明总体上涉及计算机环境下的图像绘制。更具体地说,本发明涉及使用具有图像合成器的多帧缓冲器。
背景技术
[0002]支持窗口重叠和窗口放置的视窗系统必须在显示帧缓冲器中保存关于每个窗口中的哪些部分将要被显示的信息。当一个窗口的几何形状——即位置、大小或窗口层叠显示的顺序(从前到后的顺序)——发生改变时,视窗系统必须确定在每一个窗口的可视区域内即将发生的变化,执行必要的操作以更新窗口的可视区域,并刷新显示帧缓冲器中反映窗口的可视区域内发生的变化的内容。
[0003]图1示出了向数字显示器或模拟监视器绘制内容的一种常规方法。在帧缓冲存储器106或图像处理单元104中的任意一个可用时,CPU 102或者直接向帧缓冲存储器106(指帧缓冲器)绘制一个对象,或者通过图像处理单元104来绘制一个对象。视频控制器108从帧缓冲器106中读取所述对象,然后将所述对象直接输出到一个数字显示器110,或者输出到一个数/模转换器112中,所述数/模转换器转换输出信号使其能够在模拟监视器114上显示。
[0004]图2示出了一个如上述图1所示的帧缓冲器106。在图2中,帧缓冲器106包括两个窗口204、206。例如,窗口204可以是一个文本编辑窗口,而窗口206可以是一个弹出窗口。在所示的情况下,窗口204的一部分被窗口206掩盖而不可见(即被覆盖)。窗口204未被覆盖的部分在本技术领域中称为窗口的“可视区域”(visibleregion)。在如苹果电脑公司的OS 9、微软公司的Windows Me等传统操作系统中,应用程序将其自身的窗口直接写到帧缓冲器106,应用程序自身负责检查其每一窗口的可视区域,从而确保窗口已被覆盖部分不会被绘制到帧缓冲器中。这种方法(下文称为经典方法)的一个缺点就是应用程序开发人员需要引入非常多行的代码用于检查每一窗口的可视区域。由上述第一个缺点推导出的另一个缺点就是应用程序具有在其他应用程序的窗口之上进行绘制的能力,尽管不希望它们这样做。
[0005]绘制窗口的另一种常规方法需要使用合成器。参见图3,每个窗口304、306的拷贝均保存在一个后备缓冲器308、310中。应用程序在后备缓冲器中绘制其自身的窗口,除非窗口内容发生变化,否则这些应用程序将不再负责重新绘制其自身的窗口。合成器312保存与每一窗口的可视区域相关联的数据,并且当所述窗口的可视区域发生变化时,在帧缓冲器302中正确地重绘每个窗口。上述方法使得应用程序开发人员无需追踪可视区域。
[0006]图4示出了一种使用如图3所描述的合成器的常规方法。在CPU 402上运行的应用程序将窗口绘制到窗口缓冲器406、408。作为替代,应用程序可将数据传递给GPU 404,由CPU404依次将数据绘制到窗口缓冲器406、408。合成器410从窗口缓冲器406、408中获取这些窗口,并将其绘制在帧缓冲器412中。在一个窗口的可视区域发生变化时,例如当窗口306移到左侧,并覆盖窗口304的更多区域时,合成器仅简单地从窗口缓冲器308中重新提获取窗口304,将正确的可视区域重绘到帧缓冲器中。生成该窗口的应用程序并不参与上述过程。因此,操作执行得更快,并且往往对用户的视觉效果更好。
[0007]为了使依赖直接写入帧缓冲器的应用程序与运行在具有合成器的操作系统中的应用程序共存,一些常规的操作系统使用混合图形子系统以适应这两种类型的应用程序。现在参考图5,图5示出了一种包含经典窗口504及合成器窗口506的帧缓冲器的示例。经典窗口504是一个由应用程序通过直接存取帧缓冲器而绘制的窗口,正如前面的图2和图1所描述的。合成器窗口506是一个由合成器在帧缓冲器中绘制的窗口,并由前面图3和图4所描述的方法来创建。
[0008]图6示出了一种将合成器环境与经典环境相结合的常规方法。要使用合成器(“合成器应用程序”)来实现的应用程序602将它们的窗口写入到后备缓冲器608。合成器606依次从所述后备缓冲器608中读取数据,并结合其自身拥有的每个窗口的可视区域记录,将窗口适当地绘制在帧缓冲器616中。
[0009]如先前所述,通常希望经典应用程序604能够检查其自身的可视窗口区域,并且仅将可视的区域绘制到帧缓冲器616。一种典型的方法是通过系统调用,如“VisRegion”,它向进行调用的应用程序及特定窗口返回正确的可视区域。在图6所示的常规的混合系统中,经典应用程序604请求其自身的VisRegion,并且该调用由合成器606处理。由于所述合成器知道其他经典应用程序窗口614和对于合成器友好的应用程序窗口610、612的位置,合成器向经典应用程序604返回关于其可视区域的正确信息。经典应用程序604随后将其窗口正确绘制到帧缓冲器616。
[0010]虽然这种混合方法允许经典窗口及合成器窗口在同一操作系统中共存,但这种方法具有严重的缺陷。当在概念上(conceptually)希望使经典应用程序604“精确地(nicely)”请求其可视区域时(例如通过VisRegion调用),多年以来应用程序开发者已发现能使其代码更有效率的捷径。一种普通的捷径就是调用“GetFrontWindow”,在经典环境下,“GetFrontWindow”将返回在所有其他窗口前面的窗口的ID。如果由GetFrontWindow返回的这个ID与经典应用程序604希望绘制的窗口ID相同,那么接下来将绘制整个窗口,而无需检查其可视区域——这是由于该窗口在最前面,因而不会被其他窗口覆盖。正如本领域的技术人员可以理解的,在如图6所示的应用中,这种方法可能会带来灾难性的后果。这里经典窗口614是屏幕上唯一的经典窗口,尽管该窗口被由合成器606绘制的窗口610和612所覆盖。因此,如果经典应用程序604调用GetFrontWindow,由于它是所有经典窗口中最靠前的窗口,它将会收到其自身的窗口ID。接下来,如果窗口614自身整个绘制到帧缓冲器616,帧缓冲器616会将窗口614绘制在窗口610和612之上,而这样做的结果是不正确的。
[0011]因此,在本技术领域中,仍需要一种方法能够使经典应用程序及合成器应用程序共存于一个操作系统中,而不会出现一个应用程序干扰其他应用程序操作的情况。
发明内容
[0012]本发明提供了一个用于由经典(传统)应用程序所使用的次级帧缓冲器。经典应用程序是指被设计成直接绘制到帧缓冲器,而非绘制到例如由合成器所使用的后备缓冲器的应用程序。根据本发明,经典应用程序仅将其窗口绘制到次级帧缓冲器,它们如经典帧缓冲器一样是已知的,而并非绘制到初级帧缓冲器。作为替代,合成器从次级帧缓冲器中读取窗口数据,并将其绘制到初级帧缓冲器。另外,所述合成器还从后备缓冲器读取由较为新式的应用程序所写入的窗口数据,并依次将这些数据绘制到初级帧缓冲器。由于所述合成器为所有窗口保存可视区数据,因此无论是来自较为新式的应用程序的窗口还是来自经典应用程序的窗口都能被正确地绘制到所述初级帧缓冲器。另外,由于是由所述的合成器而非应用程序自身负责将传统窗口绘制到所述帧缓冲器,因此,对特定经典应用程序的优化而通常导致的经典窗口不能被正确地绘制到新式窗口之上的有害影响将不会再发生。
[0013]最好使用下面两种方法中的任一种实现绘制。对于经典窗口,将其内容直接绘制到次级帧缓冲器而非后备缓冲器,应用程序响应一个重绘消息或者在需要反映正确的窗口内容时重新绘制窗口的可视区域内容。
[0014]当需要反映正确的窗口内容时,将要通过后备缓冲器绘制的窗口及合成器使它们的内容通过应用程序不时地被刷新。窗口的完整内容被保存在后备缓冲器中。所述合成器可以与任何应用程序动作无关地从该缓冲器中读取,以绘制由于窗口几何形状变化而要表示出的区域。
[0015]为了响应窗口几何形状的变化,或者响应来自已经重新绘制其后备缓冲器中的某些部分的应用程序的明确刷新请求,所述合成器收集所有窗口内与要重新绘制的显示帧缓冲器区域重叠的区域。然后,所述合成器从最前面的窗口到后面的窗口对每个窗口进行检查,从窗口后备缓冲器收集内容,以组装到将被重绘的区域中。在每一窗口处,合成器对所收集的内容进行评估,以判定是否已经为需要重绘的区域积累了所有可能的内容,并且一旦整个区域充满了不透明的像素值,即停止操作。除了不透明像素值之外,所述合成器可以积累并非不透明的像素值。可以使用诸如Porter-Duff SOVER合成方程式等在本技术领域内众所周知的数学运算,将每一个像素处的值累积起来。
[0016]在本发明中,合成器将不再忽略经典窗口。相反,如果合成器遍历窗口列表时遇到经典窗口,它将确定经典帧缓存器中包含在初级帧缓冲器中可见的经典窗口内容部分的区域,并从经典帧缓冲器中收集将要组装到要重新绘制的区域内的内容。所述经典帧缓冲器被视为由所有经典窗口共享的共用后备缓冲器。
附图说明
[0017]图1显示了一种在数字显示器或模拟监视器上绘制内容的常规方法。
[0018]图2显示了具有多个窗口的帧缓冲器。
[0019]图3显示了合成器在显示窗口中的使用。
[0020]图4显示了一种使用合成器的常规方法。
[0021]图5显示了包括一个经典窗口和一个合成器窗口的帧缓冲器的实例。
[0022]图6显示了将合成器环境和经典环境相结合的一种常规方法。
[0023]图7显示了根据本发明一个实施例的框图实例。
[0024]图8显示了根据本发明一个实施例的绘制窗口的方法。
具体实施方式
[0025]所述附图仅仅出于说明的目的描述了本发明的优选实施例。本领域的技术人员能够很容易从下文的讨论中认识到,可以使用这里所描述的结构和方法的替代方案,而不会背离这里所述的本发明的原理。
[0026]图7示出了根据本发明一个实施例的框图实例。图7包括合成器应用程序702,每一个合成器应用程序都具有一个后备缓冲器708;经典应用程序704;合成器706;与经典窗口712、714一起显示的经典帧缓冲器720;以及与经典窗口712、714和合成窗口710一起显示的帧缓冲器716。
[0027]经典应用程序704将窗口绘制到经典帧缓冲器720。在一个优选实施例中,经典帧缓冲器720是主存储器中的一个软件帧缓冲器;或者在另一个作为替代的实施例中,经典帧缓冲器720是视频卡中的一个硬件帧缓冲器。在任一种情况下,都将为任一经典应用程序提供该帧缓冲器的地址,通常希望为这些经典应用程序提供“真实的”帧缓冲器地址。
[0028]同以前一样,应用程序702被设计为使用合成器类型的系统,将其数据写到后备缓冲器708。所述合成器706读取后备缓冲器708的内容,并在确定每一窗口的正确可视区域后,将这些内容绘制到帧缓冲器716。然而,现在经典应用程序704将其窗口绘制到一个经典帧缓冲器720,而不是初级帧缓冲器。经典应用程序仍然不需要任何关于非经典应用程序窗口的信息以正常工作。响应于来自经典应用程序的请求,合成器706将返回正确的(在经典应用程序的范围域内)可视区域,并且经典应用程序通过惯用的方式将窗口绘制到经典帧缓冲器720。从经典应用程序的角度来看,需要注意的是,它所写入的“真实的”帧缓冲区是该应用程序所知道的唯一帧缓冲区。实际上,在最初为应用程序提供帧缓冲器信息时,返回的是经典帧缓冲器720,而不是帧缓冲器716。通常,帧缓冲器的地址是作为图形状态(graphicsstate)的一部分而提供的,所述图形状态是在应用程序启动并初始化其绘制代码时创建的,例如在Macintosh环境中调用QDInit()函数。在其他的编程环境中根据需要来提供该信息,作为图像状态创建或窗口创建的一部分。
[0029]合成器706保存一个已经显示在系统显示器上的所有窗口列表。在一个实施例中,该列表按照从前到后的顺序排列,而在另一实施例中,按照从上到下的顺序排列,从而使相应的窗口排列,即哪个窗口在顶部,成为已知。当一个窗口的几何形状改变时,合成器706将对该窗口以及该窗口下面的所有窗口执行窗口三步窗口几何形状调整。
[0030]首先,确定每个窗口中从可见变为被其他窗口遮盖的区域,并将这些将被遮盖的区域从窗口的可视区域中去除,以防止这些区域被绘制。第二步,更新几何形状发生变化的窗口,以反映其新的几何形状。第三步,确定所有窗口中先前被遮盖但现在变为可见的区域,并且在经典窗口的情况下通过向应用程序发送一个重绘消息,或者通过由所述合成器706从窗口后备缓冲器708组装显示器的适当区域,将这些显现出来的区域重新绘制到初级帧缓冲器。
[0031]在本发明中,向每一经典窗口添加了第二组窗口可见性数据。当一个经典窗口的几何形状发生变化时,由合成器执行两遍上述的三步窗口几何形状调整过程,第一遍用于更新将应用于初级帧缓冲器的实际窗口可见性信息,第二遍用于更新仅考虑其他经典窗口时将要绘制到经典帧缓冲器的窗口的可见性。
[0032]通过将来自缓冲器708的窗口与经典帧缓冲器720中的窗口合并,以及为每一窗口确定适当的可视窗口区域,合成器706将窗口绘制到帧缓冲器716。由于合成器706负责全部的绘制,因此即使当拥有该窗口的应用程序使用简化操作确定可视区域时,经典窗口也不会再被不正确地绘制在其他窗口之上。例如,正如经典帧缓冲器720中所示,经典窗口712部分地覆盖着经典窗口714。假设生成窗口712的经典应用程序704采用GetFrontWindow调用确定了窗口712实际上就是其范围域内最前面的窗口,并因此简单地将窗口712直接绘制到帧缓冲器720,而不是从合成器706调用VisRegion。然而,由于应用程序704仅仅是绘制到经典帧缓冲器720,这种优化不会产生任何危害。合成器706读取经典帧缓冲器720的内容,将其绘制到帧缓冲器716,并且还将窗口710绘制到其合适的位置,重叠在经典窗口712、714之上。
[0033]图8示出了根据本发明一个实施例的绘制窗口的方法。当所述合成器检测802出一个窗口的几何形状变化时,首先重新绘制当前窗口804。如果在几何形状变化之前或之后没有其他的窗口位于被重绘的窗口下方806,则该过程停止。否则,为位于被重绘的窗口下方的窗口确定该窗口中即将被遮盖或显现的区域808。如果该窗口是一个经典窗口810,则更新将要应用于初级帧缓冲器的实际窗口可见性信息812,以及更新经典可视区域列表及窗口列表。如果在步骤810中发生几何形状变化的不是经典窗口,那么仅更新将要应用于初级帧缓冲器的实际可见性信息814。如果有多个窗口将被遮盖或者显现816,则为每个窗口重复执行步骤808至814。接下来,在步骤818中,为所有窗口积累的已改变的区域由合成器写入(flush)到所述初级帧缓冲器。如果一个经典窗口的几何形状发生变化820,则将一个重绘消息发送到具有已改变的窗口的经典应用程序822,然后上述过程结束。
[0034]在一个优选实施例中,当经典应用程序704完成其显现的窗口区域的重绘或重画过程后,合成器706将对于初级帧缓冲器716中由经典窗口刷新其内容的部分重新运行。合成器最好能够通过两种方式中的任一种确定由经典应用程序重绘的区域。
[003]在一个实施例中,经典环境通过发送一个ShieldCursor请求来请求所述合成器706隐藏要重新绘制的区域内的鼠标光标。这一请求中包括需要重绘其中的窗口内容、并且不需要显示光标的区域,以避免光标和窗口内容绘制操作之间的冲突。所述合成器706收集光标已经被屏蔽的区域,并且周期性地将该区域刷新到所述帧缓冲器716。
[003]作为替代,在其中运行所有经典应用程序704的经典环境自身可以观察到应用程序的行为,包括监测将要由ShieldCursor调用保护的区域,一旦确定应用程序704已完成了绘制操作,就可以请求将ShieldCursor调用及绘制原语(drawing primitives)所应用的积累区域刷新到帧缓冲器716。当应用程序进行已知的系统调用以等待完成更多工作时,如“WaitNextEvent”,就可以确定这些应用程序已经完成了绘制操作。
[0037]因此,本发明使得操作系统环境能够完全支持自身实现窗口管理并将窗口直接绘制到帧缓冲器的经典应用程序以及依赖合成器来管理其可视区域的合成器应用程序。
[0038]本发明已经非常详细地对有限数目的实施例进行了描述。本领域的技术人员可以理解,本发明也可以由其他的实施例实现。首先,部件的特定命名、名词术语的大小写、属性特征、数据结构、或任何其他程序设计或结构方面,并不是强制性的或重要的,并且实施本发明或其特征的机制也可以使用不同的名字、格式、或协议。此外,如前所述,系统可以通过结合硬件和软件的结合、或者完全以硬件的形式实现。并且,此处所描述的各种系统组件间特定的功能性划分也仅仅是示例性的,而不是强制的;即由单个系统组件完成的功能也可由多个组件替代完成,而由多个组件完成的功能也可由单个组件替代完成。例如,所述合成器的特定功能等等可以在多个或一个模块中提供。另外,出于易读性和易于理解的考虑,主要通过绘制应用程序窗口描述了本发明。但本领域的技术人员应认识到本发明的应用比计算机图形绘制更为广泛。
[0039]上文的描述中某些部分对本发明的算法及符号表达方面的特征进行了说明。这些算法描述和表达是由计算机图形显示领域的技术人员所采用的、能够最有效地向本领域的其他技术人员传达其工作实质内容的手段。这些操作,虽然是从功能上或逻辑上进行的描述,也应被理解为能够通过计算机程序实现。此外,在将这些操作设置当作模块或代码设备提及时,也已方便地证明其不失普遍性。
[0040]但是还应当记住的是,所有这些术语及类似的术语均应当与适当的物理量联系起来,仅仅作为应用于这些物理量的方便标注。除非本描述中明显有相反的特别声明,贯穿整个说明书或讨论中所使用的术语,如“处理”或“计算处理(computing)”或“计算(calculating)”或“确定”或“显示”或者类似的术语,指的是计算机系统或类似的电子运算设备的行为或处理,它们操作并转换在计算机系统存储器或寄存器或者其他信息存储、传输或显示设备中用物理(电子)量来代表的数据。
[0041]本发明的特定方面包括处理步骤以及在此用算法形式描述的指令。应当注意的是,本发明的处理步骤及指令可以以软件、固件或硬件形式实现,并且当以软件形式体现时可以被下载,从而驻留可通过实时网络操作系统所采用的不同平台上,并由这些平台进行操作。
[0042]本发明还涉及用于执行在此所描述的操作的设备。该设备可根据所需的目的专门制造,或者可包括一个通用计算机,该通用计算机由存储在计算机中的计算机程序选择性地启动或重配置。这样的计算机程序可存储在计算机可读存储介质中,例如、但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘(magnetic-optical disk)、只读存储器(ROM),随机访问存储器(RAM)、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或者任何适于存储电子指令的介质类型,并且以上存储介质的每一种都与计算机系统总线相耦合。此外,在本说明书中提及的计算机可包括单一处理器,或者是为增强计算能力而设计使用的多处理器体系结构。
[0043]这里所描述的算法和显示并非固有地关联到任何特定的计算机或其他设备。也可使用具有根据上述指导的程序的各种通用系统,或者可以证明便于为执行上述所需方法步骤而构建更专业的设备。对于这些各种各样的系统所需的结构可以从前面的描述中清楚地获得。另外,对本发明的描述并未参照任何特定的编程语言。可以理解,正如在此所描述的,可以使用多种编程语言来实现本发明的指导,并且任何对特定语言的参照均属本发明的公开内容及最佳实施方式的范围内。
[0044]最后,还应注意到,说明书中所使用的语言主要是出于可读性和指导性目的而选用的,并非为划界或限定所述发明主题而选用。相应地,本发明的公开内容是为了说明,而非用于限制本发明的范围。
Claims (24)
1、一种用于绘制应用程序窗口的系统,包括:
初级帧缓冲器,用于提供输出给显示设备的窗口数据;
次级帧缓冲器,用于从多个应用程序接收窗口数据;
合成器,被配置为:
从多个后备缓冲器接收窗口数据;
保存与所述次级帧缓冲器中的窗口数据相关联的第一可视区域数据;
保存与后备缓冲器中的窗口数据和次级帧缓冲区中的窗口数据相关联的第二可视区域数据;以及
向所述初级帧缓冲器输出由所述第一可视区域数据及所述第二可视区域数据合成的最终的帧缓冲器内容。
2、根据权利要求1所述的系统,其中所述初级帧缓冲器构成计算机存储设备的一部分。
3、根据权利要求1所述的系统,其中所述初级帧缓冲器构成图形处理单元(GPU)的一部分。
4、根据权利要求1所述的系统,其中所述次级帧缓冲器构成计算机存储器设备的一部分。
5、根据权利要求1所述的系统,其中所述次级帧缓冲器构成图形处理单元(GPU)的一部分。
6、一种用于绘制应用程序窗口的计算机程序产品,该计算机程序产品包括包含有计算机程序代码的计算机可读介质,其包括:
初级帧缓冲器模块,用于提供输出给显示设备的窗口数据;
次级帧缓冲器模块,用于从多个应用程序接收窗口数据;
合成器模块,通信耦合到所述初级帧缓冲器模块和次级帧缓冲器模块,被配置为:
从多个后备缓冲器接收窗口数据;
保存与所述次级帧缓冲器中的窗口数据相关联的第一可视区域数据;
保存与后备缓冲器中的窗口数据和次级帧缓冲区中的窗口数据相关联的第二可视区域数据;以及
向所述初级帧缓冲器输出由所述第一可视区域数据及所述第二可视区域数据合成的最终的帧缓冲器内容。
7、根据权利要求6所述的计算机程序产品,其中所述初级帧缓冲器模块构成计算机存储设备模块的一部分。
8、根据权利要求6所述的计算机程序产品,其中所述初级帧缓冲器模块构成图形处理单元(GPU)模块的一部分。
9、根据权利要求6所述的计算机程序产品,其中所述次级帧缓冲器模块构成计算机存储设备模块的一部分。
10、根据权利要求1所述的系统,其中所述第二可视区域数据包括由所述系统显示的窗口的列表。
11、根据权利要求10所述的系统,其中所述窗口列表按照从前到后的顺序排列。
12、根据权利要求10所述的系统,其中所述窗口列表按照从上到下的顺序排列。
13、根据权利要求6所述的计算机程序产品,其中所述次级帧缓冲器模块构成图形处理单元(GPU)的一部分。
14、一种用于绘制应用程序窗口的方法,包括:
保存与所述次级帧缓冲器中的窗口数据相关联的第一可视区域数据,所述次级帧缓冲器包含来自多个应用程序的窗口数据;
保存与从多个后备缓冲器接收到的窗口数据相关联的第二可视区域数据;以及
向一个初级帧缓冲器输出由所述第一可视区域数据及所述第二可视区域数据合成的最终的帧缓冲器内容。
15、根据权利要求14所述的方法,其中所述初级帧缓冲器构成计算机存储设备的一部分。
16、根据权利要求14所述的方法,其中所述初级帧缓冲器构成图形处理单元(GPU)的一部分。
17、根据权利要求14所述的方法,其中所述次级帧缓冲器构成计算机存储设备的一部分。
18、根据权利要求14所述的方法,其中所述次级帧缓冲器构成图形处理单元(GPU)的一部分。
19、根据权利要求14所述的方法,还包括:
响应于从多个后备缓冲器接收到的新窗口数据:
为每个窗口确定该窗口将被遮盖的区域;并且
根据所确定的将被遮盖的区域更新所述第二可视区域数据。
20、根据权利要求19所述的方法,还包括向所述初级帧缓冲器输出由所述第一可视区域数据和更新后的第二可视区域数据合成的更新后的最终帧缓冲器内容。
21、一个用于绘制应用程序窗口的合成器,该合成器包括:
接收模块,用于从多个后备缓冲器接收窗口数据;
第一可视区域模块,用于保存与次级帧缓冲器中的窗口数据相关联的第一可视区域数据;
第二可视区域模块,用于保存与所述后备缓冲器中的窗口数据和所述次级帧缓冲区中的窗口数据相关联的第二可视区域数据;以及
输出模块,用于向初级帧缓冲器输出由所述第一可视区域数据和所述第二可视区域数据合成的最终帧缓冲器内容。
22、一种用于绘制应用程序窗口的方法,该方法包括:
检测第一个窗口中的几何形状变化;
重新绘制所述第一个窗口;
对位于所述第一个窗口下方的多个下级窗口中的每一个窗口:
确定该下级窗口的一个可视区域;
确定该下级窗口是否为一个经典窗口;
对是经典窗口的下级窗口做出响应,更新经典可视区域列表以包括该窗口的可视区域;
根据所确定的该下级窗口的可视区域向初级帧缓冲器输出每个下级窗口。
23、根据权利要求22所述的方法,还包括:
对是经典窗口的下级窗口做出响应,向拥有该下级窗口的应用程序发送一个重绘消息。
24、根据权利要求23所述的方法,还包括:
接收对于初级帧缓冲器的一个特定区域隐藏鼠标光标的请求;并且
将该特定区域写入到所述帧缓冲器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/742,559 US7274370B2 (en) | 2003-12-18 | 2003-12-18 | Composite graphics rendered using multiple frame buffers |
US10/742,559 | 2003-12-18 | ||
PCT/US2004/032752 WO2005069271A1 (en) | 2003-12-18 | 2004-10-04 | Composite graphics rendered using multiple frame buffers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1886779A true CN1886779A (zh) | 2006-12-27 |
CN1886779B CN1886779B (zh) | 2010-10-06 |
Family
ID=34794629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800354797A Expired - Fee Related CN1886779B (zh) | 2003-12-18 | 2004-10-04 | 使用多帧缓冲器绘制的合成图像 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7274370B2 (zh) |
EP (1) | EP1700292A1 (zh) |
CN (1) | CN1886779B (zh) |
WO (1) | WO2005069271A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303771B (zh) * | 2007-05-11 | 2012-07-18 | 汤姆逊许可公司 | 借助于一组显示命令来呈现图像帧的渲染器 |
CN101587436B (zh) * | 2008-05-22 | 2012-08-08 | 闪联信息技术工程中心有限公司 | 嵌入式设备中区域恢复的方法及系统 |
CN101902596B (zh) * | 2010-02-09 | 2012-08-22 | 深圳市同洲电子股份有限公司 | 一种图像处理方法、图像处理装置和数字电视接收终端 |
CN102782747A (zh) * | 2009-12-15 | 2012-11-14 | Ati科技无限责任公司 | 用于将显示面分割成多个虚拟显示区域的装置和方法 |
CN103489150A (zh) * | 2012-06-08 | 2014-01-01 | Qnx软件系统有限公司 | 平铺视区合成 |
CN103562862A (zh) * | 2011-06-02 | 2014-02-05 | 微软公司 | 全局合成系统 |
WO2015067143A1 (zh) * | 2013-11-06 | 2015-05-14 | 华为终端有限公司 | 显示帧生成方法和终端设备 |
US9542906B2 (en) | 2013-05-10 | 2017-01-10 | Microsoft Technology Licensing, Llc | Shared compositional resources |
CN107003873A (zh) * | 2014-12-01 | 2017-08-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN110517184A (zh) * | 2019-07-25 | 2019-11-29 | 武汉蓝星科技股份有限公司 | 一种基于屏幕分层的图形显示方法及装置 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681112B1 (en) | 2003-05-30 | 2010-03-16 | Adobe Systems Incorporated | Embedded reuse meta information |
US7231632B2 (en) * | 2004-04-16 | 2007-06-12 | Apple Computer, Inc. | System for reducing the number of programs necessary to render an image |
US8704837B2 (en) * | 2004-04-16 | 2014-04-22 | Apple Inc. | High-level program interface for graphics operations |
US7248265B2 (en) * | 2004-04-16 | 2007-07-24 | Apple Inc. | System and method for processing graphics operations with graphics processing unit |
US7847800B2 (en) | 2004-04-16 | 2010-12-07 | Apple Inc. | System for emulating graphics operations |
US8134561B2 (en) | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US8068103B2 (en) | 2004-06-24 | 2011-11-29 | Apple Inc. | User-interface design |
US8130237B2 (en) * | 2004-06-24 | 2012-03-06 | Apple Inc. | Resolution independent user interface design |
US8302020B2 (en) | 2004-06-25 | 2012-10-30 | Apple Inc. | Widget authoring and editing environment |
US20050285866A1 (en) * | 2004-06-25 | 2005-12-29 | Apple Computer, Inc. | Display-wide visual effects for a windowing system using a programmable graphics processing unit |
US8566732B2 (en) | 2004-06-25 | 2013-10-22 | Apple Inc. | Synchronization of widgets and dashboards |
US7652678B2 (en) * | 2004-06-25 | 2010-01-26 | Apple Inc. | Partial display updates in a windowing system using a programmable graphics processing unit |
US7490295B2 (en) | 2004-06-25 | 2009-02-10 | Apple Inc. | Layer for accessing user interface elements |
US7761800B2 (en) | 2004-06-25 | 2010-07-20 | Apple Inc. | Unified interest layer for user interface |
US8239749B2 (en) | 2004-06-25 | 2012-08-07 | Apple Inc. | Procedurally expressing graphic objects for web pages |
US8453065B2 (en) | 2004-06-25 | 2013-05-28 | Apple Inc. | Preview and installation of user interface elements in a display environment |
US7425962B2 (en) * | 2004-07-27 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | Systems and methods for generating a composite video signal from a plurality of independent video signals |
US8140975B2 (en) | 2005-01-07 | 2012-03-20 | Apple Inc. | Slide show navigation |
US8543931B2 (en) | 2005-06-07 | 2013-09-24 | Apple Inc. | Preview including theme based installation of user interface elements in a display environment |
JP4693159B2 (ja) * | 2005-07-20 | 2011-06-01 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体及び画像生成システム |
US7752556B2 (en) | 2005-10-27 | 2010-07-06 | Apple Inc. | Workflow widgets |
US8543824B2 (en) | 2005-10-27 | 2013-09-24 | Apple Inc. | Safe distribution and use of content |
US7743336B2 (en) | 2005-10-27 | 2010-06-22 | Apple Inc. | Widget security |
US7954064B2 (en) | 2005-10-27 | 2011-05-31 | Apple Inc. | Multiple dashboards |
US9104294B2 (en) | 2005-10-27 | 2015-08-11 | Apple Inc. | Linked widgets |
US7707514B2 (en) | 2005-11-18 | 2010-04-27 | Apple Inc. | Management of user interface elements in a display environment |
US8869027B2 (en) | 2006-08-04 | 2014-10-21 | Apple Inc. | Management and generation of dashboards |
US9019300B2 (en) | 2006-08-04 | 2015-04-28 | Apple Inc. | Framework for graphics animation and compositing operations |
US8954871B2 (en) | 2007-07-18 | 2015-02-10 | Apple Inc. | User-centric widgets and dashboards |
US8667415B2 (en) | 2007-08-06 | 2014-03-04 | Apple Inc. | Web widgets |
US8156467B2 (en) | 2007-08-27 | 2012-04-10 | Adobe Systems Incorporated | Reusing components in a running application |
US8176466B2 (en) | 2007-10-01 | 2012-05-08 | Adobe Systems Incorporated | System and method for generating an application fragment |
US9619304B2 (en) | 2008-02-05 | 2017-04-11 | Adobe Systems Incorporated | Automatic connections between application components |
US20090319933A1 (en) * | 2008-06-21 | 2009-12-24 | Microsoft Corporation | Transacted double buffering for graphical user interface rendering |
US8656293B1 (en) | 2008-07-29 | 2014-02-18 | Adobe Systems Incorporated | Configuring mobile devices |
US8368707B2 (en) * | 2009-05-18 | 2013-02-05 | Apple Inc. | Memory management based on automatic full-screen detection |
GB0916924D0 (en) * | 2009-09-25 | 2009-11-11 | Advanced Risc Mach Ltd | Graphics processing systems |
US9406155B2 (en) * | 2009-09-25 | 2016-08-02 | Arm Limited | Graphics processing systems |
US9349156B2 (en) | 2009-09-25 | 2016-05-24 | Arm Limited | Adaptive frame buffer compression |
US8988443B2 (en) | 2009-09-25 | 2015-03-24 | Arm Limited | Methods of and apparatus for controlling the reading of arrays of data from memory |
US9355282B2 (en) * | 2010-03-24 | 2016-05-31 | Red Hat, Inc. | Using multiple display servers to protect data |
US8493404B2 (en) * | 2010-08-24 | 2013-07-23 | Qualcomm Incorporated | Pixel rendering on display |
GB201105716D0 (en) * | 2011-04-04 | 2011-05-18 | Advanced Risc Mach Ltd | Method of and apparatus for displaying windows on a display |
US9087409B2 (en) | 2012-03-01 | 2015-07-21 | Qualcomm Incorporated | Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values |
US8847970B2 (en) * | 2012-04-18 | 2014-09-30 | 2236008 Ontario Inc. | Updating graphical content based on dirty display buffers |
US9251555B2 (en) | 2012-06-08 | 2016-02-02 | 2236008 Ontario, Inc. | Tiled viewport composition |
US9672584B2 (en) * | 2012-09-06 | 2017-06-06 | Imagination Technologies Limited | Systems and methods of partial frame buffer updating |
KR101970157B1 (ko) * | 2012-09-10 | 2019-04-18 | 삼성전자 주식회사 | 화면 출력 제어 방법과 시스템 및 이를 지원하는 단말기 |
US9449575B2 (en) * | 2012-09-10 | 2016-09-20 | Samsung Electronics Co., Ltd. | Screen output control method and system, and mobile terminal supporting the same |
EP2747071A1 (de) * | 2012-12-21 | 2014-06-25 | Deutsche Telekom AG | Anzeige eines fälschungssicheren Identitätsindikators |
US9182934B2 (en) | 2013-09-20 | 2015-11-10 | Arm Limited | Method and apparatus for generating an output surface from one or more input surfaces in data processing systems |
US9195426B2 (en) | 2013-09-20 | 2015-11-24 | Arm Limited | Method and apparatus for generating an output surface from one or more input surfaces in data processing systems |
GB2524467B (en) | 2014-02-07 | 2020-05-27 | Advanced Risc Mach Ltd | Method of and apparatus for generating an overdrive frame for a display |
GB2528265B (en) | 2014-07-15 | 2021-03-10 | Advanced Risc Mach Ltd | Method of and apparatus for generating an output frame |
US10082941B2 (en) | 2015-05-20 | 2018-09-25 | Vmware, Inc. | Optimizing window move actions for remoted applications |
GB2540562B (en) | 2015-07-21 | 2019-09-04 | Advanced Risc Mach Ltd | Method of and apparatus for generating a signature representative of the content of an array of data |
US10564829B2 (en) | 2016-03-25 | 2020-02-18 | Vmware, Inc. | Optimizing window resize actions for remoted applications |
KR102491499B1 (ko) | 2016-04-05 | 2023-01-25 | 삼성전자주식회사 | 소모 전류를 줄이는 방법 및 전자 장치 |
KR102488333B1 (ko) | 2016-04-27 | 2023-01-13 | 삼성전자주식회사 | 그래픽 데이터를 합성하는 전자 장치 및 방법 |
US20180012327A1 (en) * | 2016-07-05 | 2018-01-11 | Ubitus Inc. | Overlaying multi-source media in vram |
KR102449090B1 (ko) * | 2018-03-05 | 2022-09-30 | 삼성전자주식회사 | 윈도우 버퍼의 할당을 관리하는 디스플레이 장치 및 그 디스플레이 장치의 제어 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4555775B1 (en) * | 1982-10-07 | 1995-12-05 | Bell Telephone Labor Inc | Dynamic generation and overlaying of graphic windows for multiple active program storage areas |
JPH06309425A (ja) * | 1990-10-12 | 1994-11-04 | Internatl Business Mach Corp <Ibm> | グラフィックディスプレイ装置及び方法 |
JP3568555B2 (ja) * | 1993-06-28 | 2004-09-22 | 富士通株式会社 | ディスプレイ装置 |
CN1111461A (zh) * | 1993-06-30 | 1995-11-08 | 世嘉企业股份有限公司 | 图像处理方法及装置 |
US5854640A (en) * | 1996-01-02 | 1998-12-29 | Intel Corporation | Method and apparatus for byte alignment of video data in a memory of a host system |
US6359631B2 (en) * | 1999-02-16 | 2002-03-19 | Intel Corporation | Method of enabling display transparency for application programs without native transparency support |
US6504547B1 (en) * | 1999-08-13 | 2003-01-07 | Pixo, Inc. | Standardization of graphics system logical frame buffer |
US7038690B2 (en) * | 2001-03-23 | 2006-05-02 | Microsoft Corporation | Methods and systems for displaying animated graphics on a computing device |
US6911984B2 (en) * | 2003-03-12 | 2005-06-28 | Nvidia Corporation | Desktop compositor using copy-on-write semantics |
-
2003
- 2003-12-18 US US10/742,559 patent/US7274370B2/en not_active Expired - Fee Related
-
2004
- 2004-10-04 WO PCT/US2004/032752 patent/WO2005069271A1/en active Application Filing
- 2004-10-04 CN CN2004800354797A patent/CN1886779B/zh not_active Expired - Fee Related
- 2004-10-04 EP EP04794193A patent/EP1700292A1/en not_active Withdrawn
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303771B (zh) * | 2007-05-11 | 2012-07-18 | 汤姆逊许可公司 | 借助于一组显示命令来呈现图像帧的渲染器 |
CN101587436B (zh) * | 2008-05-22 | 2012-08-08 | 闪联信息技术工程中心有限公司 | 嵌入式设备中区域恢复的方法及系统 |
CN102782747B (zh) * | 2009-12-15 | 2016-02-10 | Ati科技无限责任公司 | 用于将显示面分割成多个虚拟显示区域的装置和方法 |
CN102782747A (zh) * | 2009-12-15 | 2012-11-14 | Ati科技无限责任公司 | 用于将显示面分割成多个虚拟显示区域的装置和方法 |
CN101902596B (zh) * | 2010-02-09 | 2012-08-22 | 深圳市同洲电子股份有限公司 | 一种图像处理方法、图像处理装置和数字电视接收终端 |
CN103562862A (zh) * | 2011-06-02 | 2014-02-05 | 微软公司 | 全局合成系统 |
CN103489150B (zh) * | 2012-06-08 | 2017-03-01 | 2236008安大略有限公司 | 平铺视区合成 |
CN103489150A (zh) * | 2012-06-08 | 2014-01-01 | Qnx软件系统有限公司 | 平铺视区合成 |
US9542906B2 (en) | 2013-05-10 | 2017-01-10 | Microsoft Technology Licensing, Llc | Shared compositional resources |
WO2015067143A1 (zh) * | 2013-11-06 | 2015-05-14 | 华为终端有限公司 | 显示帧生成方法和终端设备 |
CN107003873A (zh) * | 2014-12-01 | 2017-08-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN107003873B (zh) * | 2014-12-01 | 2020-12-01 | Arm有限公司 | 用于在数据处理系统中提供输出表面的方法和装置 |
CN110517184A (zh) * | 2019-07-25 | 2019-11-29 | 武汉蓝星科技股份有限公司 | 一种基于屏幕分层的图形显示方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20050168471A1 (en) | 2005-08-04 |
US7274370B2 (en) | 2007-09-25 |
CN1886779B (zh) | 2010-10-06 |
EP1700292A1 (en) | 2006-09-13 |
WO2005069271A1 (en) | 2005-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1886779B (zh) | 使用多帧缓冲器绘制的合成图像 | |
Yaxley et al. | Simulating visibility during language comprehension | |
US20040056900A1 (en) | System and method for window priority rendering | |
AU628482B2 (en) | Method and apparatus for detecting changes in raster data | |
US20070091097A1 (en) | Method and system for synchronizing parallel engines in a graphics processing unit | |
CN1030804C (zh) | 应用多维数据图符的方法与设备 | |
US20060279578A1 (en) | Systems and methods for updating a frame buffer based on arbitrary graphics calls | |
US20030107578A1 (en) | Sparse refresh of display | |
CN111651079A (zh) | 书写笔迹显示方法、装置、设备及计算机存储介质 | |
CN1116008A (zh) | 面向目标的视频结构系统 | |
US6530031B1 (en) | Method and apparatus for timing duration of initialization tasks during system initialization | |
EP0493920A1 (en) | Method and apparatus for writing directly to a frame buffer in a computer having a windowing system controlling its screen display | |
CN111476852A (zh) | 阅读器刷新方法、计算设备及计算机存储介质 | |
JP2755378B2 (ja) | 拡張グラフィックス・アレイ制御装置 | |
CN1073287A (zh) | 直观日程表 | |
KR20080031595A (ko) | 오프스크린 버퍼링 관리 장치 및 방법 | |
CN1740967A (zh) | 一种在表格使用中减少占用内存的方法 | |
CA1312683C (en) | Method of drawing in graphics rendering system | |
US7248267B2 (en) | Method and apparatus for simulated direct frame buffer access for graphics adapters | |
JP2756326B2 (ja) | 画像処理方法及び装置 | |
Mackinlay et al. | Wideband visual interfaces: Sensemaking on multiple monitors | |
US8451294B2 (en) | Partial window visibility | |
US20160209977A1 (en) | Data driver circuit and display device using the same | |
KR950012015B1 (ko) | 화상정보제어장치 | |
Kohlmeyer | Picture Perception Lab: A program for picture perception experiments on the Macintosh II |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101006 Termination date: 20191004 |