CN101080698B - 图形处理器,图形处理系统及产生图像的方法 - Google Patents

图形处理器,图形处理系统及产生图像的方法 Download PDF

Info

Publication number
CN101080698B
CN101080698B CN2005800433755A CN200580043375A CN101080698B CN 101080698 B CN101080698 B CN 101080698B CN 2005800433755 A CN2005800433755 A CN 2005800433755A CN 200580043375 A CN200580043375 A CN 200580043375A CN 101080698 B CN101080698 B CN 101080698B
Authority
CN
China
Prior art keywords
frame
target program
aftertreatment
program
pixel data
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.)
Active
Application number
CN2005800433755A
Other languages
English (en)
Other versions
CN101080698A (zh
Inventor
邓肯·A·里亚赫
约翰·M·丹斯金
乔纳·M·阿尔本
迈克尔·A·奥格林茨
安东尼·迈克尔·塔马西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN101080698A publication Critical patent/CN101080698A/zh
Application granted granted Critical
Publication of CN101080698B publication Critical patent/CN101080698B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1431Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using a single graphics controller
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/127Updating a frame memory using a transfer of data from a source area to a destination area
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

在图形处理器中,渲染目标程序与后处理目标程序共享对具有可编程执行核心的主机处理器的存取。所述渲染目标程序根据几何数据产生图像的片段数据。所述后处理目标程序运行以根据所述片段数据产生像素数据帧并将所述像素数据存储于帧缓冲器中。与所述主机处理器的操作并行地,扫描输出引擎读取先前所产生的帧的像素数据并将所述像素数据提供至显示装置。所述扫描输出引擎周期性地触发所述主机处理器,以操作所述后处理目标程序来产生下一个帧。可对所述扫描输出引擎与所述后处理目标程序之间的定时进行控制,以便当所述扫描输出引擎结束对当前帧的读取时,所要显示的下一个帧在帧缓冲器中准备就绪。

Description

图形处理器,图形处理系统及产生图像的方法
技术领域
本发明大体而言涉及图形处理器,且具体而言,涉及使用可编程硬件进行的实时显示后处理。
背景技术
基于计算机的图像渲染通常首先对景物进行几何表示。将各种物体描述为可置于景物中的“图元”(通常是例如三角形等简单的多边形,以及点及线)的集合。选择一取景座标系,并将这些图元变换至该座标系中。然后,将图元转换成二维(2-D)“片段”阵列表示形式,其中每一片段均具有颜色并可具有其他属性,例如深度座标或曲面法线。可在图元及/或片段级上引入照明、纹理、灰雾及各种其他会增强视觉真实性的效果。在渲染过程结束时,将每一片段的数据(一般至少是颜色值)存储于图像缓冲器中。所述图像缓冲器是通过一“扫描输出”过程读出,所述“扫描输出”过程等时地运行,以便以规定的屏幕刷新速率将像素递送至显示装置。实时动画要求渲染过程以约30Hz的速率递送新图像。典型的显示装置以约60-80Hz的屏幕刷新速率运行。
为满足这些处理速率要求,许多计算机系统包括专用图形协处理器,其对由中央处理器(CPU)提供的数据实施渲染操作且还执行同步扫描输出操作来驱动显示装置。典型的图形处理器包括彼此不同步运行的渲染目标与扫描输出引擎。渲染目标程序为“后面”图像缓冲器中的新图像产生片段数据,而扫描输出引擎则使用“前面”图像缓冲器中先前经过渲染的图像来驱动显示器。当完成对新图像的渲染时,切换“后面”与“前面”缓冲器,以便扫描输出引擎开始显示新渲染的图像,而渲染目标程序则向前移至下一图像。一般而言,在对下一图像的渲染完成之前,扫描输出引擎可对同一图像读取两次或三次。
渲染目标程序与扫描输出引擎在实施方案方面通常差别很大。渲染目标程序一般是灵活性的及可编程的。典型的渲染目标程序包括具有功能单元的执行核心(或若干个并行的执行核心),可指令所述功能单元执行任意的操作序列。通过适当编程,可使执行核心执行各种渲染算法的任意组合来产生特定图像,并可根据需要改变这些算法。
相比之下,扫描输出引擎通常具有有限的处理能力且不可编程。而是,扫描输出引擎具有一序列管线式专用处理电路,片段数据即流经这些管线式专用处理电路,其中这些处理电路实施各种操作来将片段数据变换成像素值。举例来说,某些扫描输出引擎支持:加法覆盖(例如光标或视频覆盖),其可以高于所渲染图像的速率进行更新;颜色修正(例如γ修正,以虑及显示响应中的非线性);或者对片段数据的过滤,以与屏幕上的像素数量相匹配(例如以实现图形保真)。所述专用电路一般设计成以固定延迟工作,以确保等时地将像素数据递送至显示装置。
在某些处理器中,可启用或禁用各种扫描输出一时间操作(例如可将覆盖接通或断开)或改变操作的参数(例如γ修正的参数或覆盖的位置)。但是,由于每一操作均是在不同的专用电路中实施,因而一般不可能在不建构不同扫描输出引擎的情况下在管线中添加新的操作、改变操作顺序、或改变用于实施特定操作的算法。因此,扫描输出引擎的重新配置能力非常有限。添加新的特征一般需要对电路进行改动,而此可能会影响芯片面积及排程、最大成本及延迟。
随着实时渲染技术的持续进步,越来越需要一种可在显示速率下添加各种效果的、功能更强大且更灵活的扫描输出引擎。此外,图形处理器可驱动的显示装置的范围也已最大;除传统的CRT监视器之外,图形处理装置还可用于驱动LCD监视器、数字微镜投影仪、等离子体监视器、等等。每一类型的显示装置均对其像素的驱动具有不同的要求,且很难在单个硬件管线中适应所有这些要求。因此,非常希望在片段-像素转换过程中具有更大的灵活性。
因此,希望使图形处理器具有以显示步调来执行任意操作序列的能力。
发明内容
本发明的实施例提供图形处理器,在所述图形处理器中,渲染目标程序与后处理目标程序通过可编程的执行核心来共享对主机处理器的存取。所述渲染目标程序运行以根据几何数据来产生图像的片段数据并将所述片段数据写入至图像缓冲器。所述后处理目标程序运行以根据一个或多个填满的图像缓冲器中的所述片段数据来产生像素数据帧,并将所述像素数据写入至帧缓冲器中。与主机处理器的操作并行地,扫描输出引擎从帧缓冲器中读取先前所产生帧的像素数据,并将所述像素数据提供至显示装置。所述扫描输出引擎周期性地触发所述主机处理器来操作所述后处理目标程序产生下一个帧。较佳对所述扫描输出引擎与所述后处理目标程序之间的定时进行控制,以在所述扫描输出引擎结束对当前帧的读取时,要显示的下一个帧已在帧缓冲器中准备就绪。
根据本发明的一个方面,一种图形处理器包括可编程执行核心、仲裁单元、及扫描输出引擎。所述可编程执行核心配置成可在若干上下文之间进行切换,并进一步经配置以执行与被切换到的上下文相关联的执行程序指令。所述仲裁单元耦接至所述执行核心,且经配置以控制所述执行核心在不同上下文之间的切换。所述扫描输出引擎经配置以将所产生的像素数据帧等时地传输至显示端口,并经耦接以周期性地将触发信号传输至所述仲裁单元。所述上下文包括:渲染上下文,其具有用于产生图像数据的第一程序指令序列与其相关联;及后处理上下文,其具有用于根据所述图像数据来产生像素数据帧的程序指令与其相关联。所述仲裁单元进一步经配置以响应于所述触发信号而将所述执行核心切换至所述后处理上下文。在某些实施例中,所述扫描输出引擎进一步配置成使所述触发信号相对于帧事件的结束具有实质固定的时间关系。
在某些实施例中,所述仲裁单元进一步经配置以使所述执行核心保持于所述后处理上下文中,直至在所述第二程序指令流中检测到帧终止事件为止,并在此后将所述执行核心切换至所述渲染上下文。所述帧结束事件可例如对应于在所述第二程序指令流中出现一指向所述第二程序指令流的起点的无条件跳转指令。
根据本发明的另一方面,提供一种用于产生图像的方法。在处理器的共享执行核心中,操作渲染目标程序;所述渲染目标程序响应于第一程序指令序列而产生图像的片段数据。与操作所述渲染目标程序并行地,操作扫描输出引擎以将像素数据帧等时地递送至显示装置;所述扫描输出引擎周期性地产生触发信号。响应于所述触发信号,在所述处理器的共享执行核心中操作后处理目标程序;所述后处理目标程序响应于第二程序指令序列而根据一个或多个图像的片段数据来产生新的像素数据帧,且可将所述新的像素数据帧提供至所述扫描输出引擎。在某些实施例中,所述第二程序指令序列可例如包括:用于对图像的所述片段数据进行下降过滤的指令;用于对图像的所述片段数据进行升高过滤的指令;用于为所述帧中每一像素计算一LCD过激励值的指令;及/或用于使用两个或更多个不同图像的片段数据来形成合成图像的指令。
根据本发明的再一方面,一种图形处理系统包括图像缓冲器、帧缓冲器及多处理器。每一图像缓冲器经配置以存储图像的片段数据,且每一帧缓冲器经配置以存储帧的像素数据。所述多处理器包括可编程执行核心、仲裁单元、及扫描输出引擎。所述可编程执行核心配置成可在若干上下文之间进行切换,以便所述执行核心执行与被切换到的上下文相关联的程序指令。所述仲裁单元耦接至所述执行核心,且经配置以控制所述执行核心在不同上下文之间的切换。所述扫描输出引擎经配置以将像素数据帧等时地从所述帧缓冲器传输至显示端口,并经耦接以周期性地将触发信号传输至所述多处理器的仲裁单元。所述上下文包括:渲染上下文,其具有用于产生图像的片段数据及将每一图像的所述片段数据写入至所述图像缓冲器之一的第一程序指令序列与其相关联;及后处理上下文,其具有用于根据所述图像缓冲器中的帧数据来产生像素数据帧并将所述帧的像素数据写入至所述帧缓冲器之一的第二程序指令序列与其相关联。所述仲裁单元进一步经配置以响应于所述触发信号而将所述执行核心切换至所述后处理上下文。
下文具体实施方式部分与附图一起将使人们能够更好地了解本发明的性质及优点。
附图说明
图1是根据本发明一实施例的计算机系统的高阶方块图;
图2是根据本发明一实施例的图形处理子系统的数据流图;
图3A图解说明根据本发明一实施例的渲染命令流;
图3B图解说明根据本发明一实施例的后处理程序;
图4是一方块图,其显示根据本发明一实施例的多处理器的各组件;
图5是根据本发明一实施例的仲裁逻辑过程的流程图;
图6是一方块图,其显示根据本发明另一实施例的多处理器的各组件;
图7图解说明根据本发明一实施例的渲染命令流,其具有用于写入后处理程序的命令;
图8是根据本发明一实施例的支持两个扫描输出引擎的多处理器的方块图;
图9图解说明一合成图像;
图10是根据本发明一实施例的支持合成图像的多处理器的方块图;
图11图解说明根据本发明一实施例用于形成合成图像的后处理程序;
图12是根据本发明一实施例用于产生LCD过激励值的过程的流程图;及
图13是根据本发明一实施例的用于旋转图像的过程的流程图。
具体实施方式
概述及术语
本发明的实施例提供图形处理器,在所述图形处理器中,渲染目标程序与后处理目标程序通过可编程的执行核心来共享对主机处理器的存取。以渲染步调运行的所述渲染目标程序根据几何数据来产生图像的片段数据,并将所述片段数据写入至图像缓冲器。以扫描输出(显示)步调运行的后处理目标程序根据在一个或多个填满的图像缓冲器中的片段数据来产生像素数据,并将所述像素数据写入至帧缓冲器中。并行地,扫描输出引擎从不同的帧缓冲器中读取先前所产生的帧的像素数据,并将所述像素提供至显示装置。与所述扫描输出作业同步地,所述扫描输出引擎触发所述主机处理器以扫描输出步调执行所述后处理目标程序,以便当所述扫描输出引擎结束对当前帧的读取时,下一个帧将准备就绪。
在本文中使用以下术语:
术语“图像”是指构成某个图片的表示形式的“片段”阵列,其中每一片段均具有颜色并可具有其他属性,例如深度、透明度等等。片段颜色可表示为任意方便的格式,包括红色/绿色/蓝色(RGB)、亮度-色度(YCrCb)、色调/光亮度/饱和(HLS)、单色强度值、或其他格式,并具有任何所需程度的分辨率。所述片段并不需要在数量或布置上相对于显示装置具有任何特定关系,且所述片段阵列在各片段之间既可具有也可不具有均匀的间距。
“渲染”大体是指根据景物数据(其通常包括图元及相关几何数据)产生图像或片段数据的过程。渲染过程可包括许多级,例如顶点处理(变换至屏幕空间)、设置(在屏幕空间中选择所关心的图元及属性)、光栅化(对片段位置阵列进行取样,以确定哪一(哪些)图元覆盖每一片段)、着色(根据哪一(哪些)图元覆盖一片段而产生该片段的属性)、及着色后光栅操作(例如通过降低过滤来变换片段阵列)。一般以平均速度(“渲染步调”)对图像进行渲染,在某些实施例中,所述平均速度是适用于动画的速度,例如每秒约30个图像。渲染过程的细节对于本发明而言并不重要,且渲染速度可在图像之间出现波动。
经渲染的图像显示于一使用“像素”阵列或光栅的显示装置上,其中响应于作为像素值的函数的驱动信号,每一像素均显示一颜色。如上文所述,显示装置的像素既可对应于也可不对应于经渲染图像的单个片段。本文中所述的“帧”大体是指像素光栅的完整的一组像素值。新的帧是以规定的屏幕刷新速率或“显示步调”(例如80Hz)进行显示,所述规定的屏幕刷新速率或“显示步调”可以是用户可选的参数。各连续的帧可显示同一图像或不同图像。
“后处理”大体是指处理一个或多个图像的片段数据,以产生像素数据帧。后处理较佳以显示步调(屏幕刷新速率)进行,显示步调一般高于动画速度。根据本发明可实施许多后处理操作。下文是许多实例;应了解,本发明并非仅限于后处理操作的任何特定组合或序列。
一个后处理操作是过滤,其涉及到对来自一个图像的不同片段的值进行混合,以获得单个像素值。过滤可使像素数量不同于片段数量。在一个实施例中,可对片段进行下降过滤,以产生少于片段数量的像素数量。举例而言,每一像素值可为邻近片段值的加权平均值。下降过滤可用于减小图像大小、构建图形保真作为过取样(例如多重取样)操作的最后一级等等。另一选择为,可对各片段进行上升过滤,以产生大于片段数量的像素数量。例如,可使用内插在输入片段值之间添加额外像素值或者添加额外像素值来取代输入片段值。可使用上升过滤例如来放大要显示的图像。
另一后处理操作是合成,其大体是指将来自两个或更多个图像的片段组合成最终图像。例如,可将光标图像覆盖于屏幕图像的一部分上,或者可将视频图像(例如电影)覆盖于桌面上的窗口中。在某些实施例中,所组合的图像可按不同的速率进行更新,从而使得除以显示步调外,难以正确地组合这些图像。在某些实施例中,合成也可包括对图像进行混合以产生例如淡入、淡出或渐隐等效果。为得到这些效果,可使用随时间变化的相应权重来混合旧的与新的图像。
再一后处理操作是表面映射,其大体是指将图像的片段数据映射至2-D或3-D表面上并将该表面投影至像素阵列上。在一个实施例中,可将片段数据映射至梯形表面上,以为作为投影仪的显示装置提供“梯形失真”校正;所述梯形表面的形状及尺寸可由用户进行调整,以补偿当来自投影仪的光束轴线不垂直于屏幕或其他显示表面时所出现的众所周知的失真。在其他实施例中,也可将片段数据映射至任意形状的表面上,可对所述任意形状的表面进行界定以便产生所需的视觉效果或者以便支持以减小的失真投影至非平整表面(例如圆柱体或穹顶)上。
另一后处理操作是表面旋转,其是指将图像的片段数据映射至已围绕垂直于图像的轴线旋转过某一角度(例如90°的倍数)的2-D表面上。例如,顺时针旋转90°将使图像的左上角中的片段出现于像素阵列的右上角处,使图像中的水平线变成像素阵列中的垂直线,等等。可将表面旋转视为上文所述表面映射操作的一特例。在一个实施例中,对以可旋转方式安装的显示装置使用表面旋转,对于图形输入板PC显示器及某些平板监视器即为如此。
再一后处理操作是发光度补偿。例如,当将图像投影至屏幕上时,距投影仪较远的像素往往比较近的像素更暗。或者,如果屏幕周围的环境光不均匀,则屏幕的一部分可能看起来比其余部分更亮。发光度补偿可通过随屏幕位置补偿像素亮度来修正这些效应,且用户能够根据需要调整各种发光度补偿参数。
其他后处理操作对特定显示装置的性质进行补偿。例如,常常使用γ修正使像素值以指数方式按比例换算,以便补偿由模拟信号所驱动的显示装置中的非线性电压响应。作为另一实例,在LCD监视器中,可通过为每一像素提供一驱动值来改善响应时间,所述驱动值部分地取决于所需亮度及部分地取决于所述亮度相对于前一帧的改变量。在后处理中也可实施专用于其他类型显示装置的其他补偿操作。
在某些实施例中,后处理操作是为得到正确结果而应以显示步调进行的操作,例如LCD过激励或合成。当渲染与扫描输出不同步时,常常很难或不可能在渲染时确定渲染步调将如何与显示步调相配合,且因此如果要在渲染过程中进行所述操作,也将很难或不可能确保结果正确。
“扫描输出”大体是指将帧(在后处理之后)的像素数据传送至一连接至显示装置的输出路径。像后处理一样,扫描输出是以显示步调进行。在某些实施例中,通过后处理所产生的像素数据早已呈适用于驱动显示装置的格式。在其他实施例中,扫描输出可包括将像素数据变换成适当格式,并可包括重新按比例缩放、数字-模拟转换及其他信号处理技术。
系统概述
图1是根据本发明一实施例的计算机系统100的方块图。计算机系统100包括通过总线106进行通信的中央处理器(CPU)102及系统存储器104。从耦接至总线106的一个或多个用户输入装置108(例如键盘、鼠标)接收用户输入。在基于像素的显示装置110(例如传统的基于CRT或LCD的监视器)上提供视觉输出,所述显示装置110在耦接至系统总线106的图形处理子系统112的控制下运行。系统盘107及其他组件-例如一个或多个可拆卸存储装置129(例如软盘驱动器、光盘(CD)驱动器、及/或DVD驱动器)-也可耦接至系统总线106。系统总线106可使用各种总线协议中的一种或多种来构建,这些总线协议包括PCI(外围组件互连)、AGP(高级图形处理)及/或PCI-Express(PCI-E);可提供例如北桥及南桥(未显示)等恰当的“桥式”芯片来互连各种组件及/或总线。
图形处理子系统112包括图形处理单元(GPU)114及图形存储器116-其可例如使用一个或多个集成电路装置(例如可编程处理器、应用专用集成电路(ASIC)及存储装置)来构建。GPU 114包括多处理器120、存储器接口模块122、及扫描输出模块124。
多处理器120可经配置以为图形处理子系统120实施渲染及后处理任务。多处理器120包括可编程执行核心(在图1中未明确显示),并能够同时执行两个或更多个过程。一个过程是“渲染目标程序”132,其较佳经配置以根据由在CPU 102上执行的各种程序所提供的2-D或3-D景物数据来产生图像(片段)数据。另一过程是“后处理目标程序”134,其经配置以将片段数据变换成准备在显示装置110上显示的像素数据。在一个实施例中,在任一既定时刻,在多处理器120的这些过程中只有一个过程现用;可切换入及切换出不同的过程,以提供同时处理的效果。在某些实施例中,渲染目标程序132与后处理目标程序134可构建于同一实体处理引擎中,所述实体处理引擎较佳能够进行上下文切换以同时支持这两个目标程序;在其他实施例中,则将渲染目标程序132与后处理目标程序134分别构建于单独的处理引擎中,且不需要在其间进行上下文切换。在下文中将进一步说明多处理器120的特定实施例。
与多处理器120及扫描输出引擎124进行通信的存储器接口模块122管理与图形存储器116进行的所有交互作用。存储器接口模块122还可包括用于将从系统总线106接收的片段或像素数据写入至图形存储器116中的恰当位置而不由多处理器120处理的路径。可根据需要改变存储器接口模块122的特定配置,且由于其对于理解本发明而言无关紧要,因而不再对其加以赘述。
图形处理器116可使用一个或多个一般传统设计的集成电路存储装置来构建,其可包含各种物理或逻辑分区,例如渲染缓冲器126、显示缓冲器127、渲染命令缓冲器128及后处理(PP)命令缓冲器129。渲染缓冲器126存储由渲染目标程序132或由在CPU 102上执行的各种过程所产生的一个或多个图像的片段数据。渲染缓冲器126较佳缓冲多个不同的图像,包括由同一过程所产生的图像序列,以便当正对第一图像的片段数据进行后处理时,可将后一图像的片段数据写入至渲染缓冲器126中的不同区域。
显示缓冲器127存储由后处理目标程序134根据渲染缓冲器126中的片段数据所产生的像素数据。显示缓冲器127较佳存储至少两个完整的像素数据帧,以便在正将下一个帧写入至“后面”缓冲器时,可从“前面”缓冲器中扫描输出一个帧的像素数据。
渲染命令缓冲器128及PP命令缓冲器129用于对经由系统总线106接收到的命令进行排队,以供由多处理器120执行。渲染命令缓冲器128中的命令将由渲染目标程序132执行,而PP命令缓冲器129中的命令将由后处理目标程序134执行,如在下文中所述。
图形存储器116的其他部分可用于存储GPU 114所需的数据(例如纹理数据、颜色查找表等等)、GPU 114的可执行程序码等等。
可与多处理器120集成于单个芯片上或构建于单独芯片上的扫描输出引擎124从像素缓冲器127中读取像素数据并将所述数据传送至显示装置110进行显示。在一个实施例中,扫描输出引擎124等时地运行,无论在GPU 114中或系统100中的其他位置中可进行的任何其他活动如何,均以规定的刷新速率(例如80Hz)来扫描输出像素数据帧。在某些实施例中,所述规定的刷新速率可以是用户可选择的参数,且可根据显示格式来改变扫描输出次序(例如交错扫描或渐进扫描)。扫描输出引擎124可包括用于数据格式化、数字-模拟转换的电路、及用于将像素数据转换成适用于显示装置的格式的其他信号处理电路。可根据需要改变扫描输出引擎124的特定配置。
在系统100的工作过程中,CPU 102执行各种程序,例如操作系统程序、应用程序、及图形处理子系统112的一个或多个驱动程序。所述驱动程序可构建传统的应用程序界面(API),例如OpenGL、Microsoft DirectX或D3D,所述应用程序界面(API)使应用程序及操作系统程序能够调用图形处理子系统112的各种功能,此在所属领域中众所周知。
图形处理子系统112的操作较佳与系统100的其他操作不同步。例如,在某些实施例中,渲染命令缓冲器128与PP命令缓冲器129对经由系统总线106所接收的命令进行排队,以供由GPU 114执行。更具体而言,在CPU 102上执行的图形驱动器可将渲染命令流或程序写入至渲染命令缓冲器128并将后处理命令流或程序写入至PP命令缓冲器129。所述命令流保持于其各自的命令缓冲器128、129中,直至GPU 114准备对其进行处理为止。
渲染命令缓冲器128较佳构建为先进先出缓冲器(FIFO),其由GPU(更具体而言,由在GPU上执行的图形驱动器)写入并由GPU 114(更具体而言,由多处理器120上的渲染目标程序132)读取。读取与写入可不同步地进行。在一个实施例中,图形驱动器周期性地将新命令及数据写入至渲染命令缓冲器128中由“放置”指针所确定的位置上,在每一次写入之后,图形驱动器均递增所述“放置”指针。不同步地,渲染目标程序132可依序读取及处理先前存储于渲染命令缓冲器128中的所述命令以及数据。渲染目标程序132保持一“得到”指针,以识别命令缓冲器128中的当前读取位置,且该得到指针在每一次读取之后递增。在图形驱动器保持充分超前于渲染目标程序132的条件下,GPU 114能够在不引起等待CPU 102的空闲时间的情况下渲染图像。在某些实施例中,视渲染命令缓冲器128及景物的复杂度而定,图形驱动器可正在为超前于渲染目标程序132当前所正渲染的图像的几个图像写入命令及数据。渲染命令缓冲器128可为固定尺寸(例如5兆字节),并可以环绕方式进行写入及读取(例如在写入至最末位置之后,图形驱动器可将“放置”指针复位至第一位置;类似地,在从最末位置读取之后,渲染目标程序132可将“得到”指针复位至第一位置)。
PP命令缓冲器129较佳构建为圆形队列。图形驱动程序并非为每一个帧均写入新的后处理命令流,而是可向PP命令缓冲器129写入一次后处理流或程序并仅当要改变后处理时写入新的流或程序。多处理器120的后处理目标程序如下文所述对每一个帧执行该流,且所执行的命令可保留于PP命令缓冲器129中以供此后再执行。PP命令缓冲器129可为固定尺寸(例如1兆字节),且可通过一无条件“跳转”命令来结束所述命令流,所述无条件“跳转”命令将控制转交回至所述命令流的开头以便处理下一个帧。
在某些实施例中,多处理器120进行的渲染目标程序132的操作与任何其他操作均不同步,而后处理目标程序134的操作则与扫描输出引擎124的操作同步,以便以显示步调进行后处理。例如,多处理器120可周期性地(例如每一个扫描输出帧一次)暂停渲染目标程序132并将后处理目标程序134操作一足够长的时间,以使后处理目标程序134能够产生屏幕像素数据帧并将该数据写入至显示缓冲器127。下文将说明能提供适当操作的控制机制的实例。
应了解,本文所述的系统只是例示性的,且也可具有各种变化形式及修改形式。GPU可使用任何适当的技术来构建,例如构建为一个或多个集成电路装置。GPU可安装于可包含一个或多个这种处理器的扩展卡上、直接安装于系统母板上、或集成至系统芯片组组件中(例如集成至一个常用PC系统架构的北桥芯片中)。所述图形处理子系统可包括任意量的专用图形存储器(某些实施方案可不具有专用图形存储器),并可使用系统存储器与专用图形存储器的任意组合形式。扫描输出电路可与GPU相集成或者提供于单独的芯片上,并可例如使用一个或多个ASIC、可编程处理器元件、其他集成电路技术、或其任一组合来构建。此外,可将实施本发明的GPU并入各种装置中,包括通用计算机系统、视频游戏控制台及其他专用计算机系统、DVD播放器、例如移动电话或个人数字助理等手持式装置、等等。
数据流综览
图2是图形处理子系统112的数据流图,其进一步图解说明多处理器120、渲染目标程序132、后处理目标程序134及扫描输出引擎124之间的关系。数据传播是由实线箭头表示,命令传播是由空心箭头表示,且控制信号传播是由虚线箭头表示。
在图2中,将渲染缓冲器126显示为包括三个图像缓冲器226(在本文中分别称作A、B及C)及一旗语存储区域206。图像缓冲器226分别大至足以存储一个图像的所有片段数据,且较佳操作渲染目标程序132来将一个图像的所有片段数据写入至缓冲器A、将下一图像的所有片段数据写入至缓冲器B,依此类推。应了解,可提供任意数量的图像缓冲器226。旗语区域206用于如下文所述控制对图像缓冲器226的存取。
图中显示显示缓冲器127包括两个帧缓冲器227(在本文中分别称作X及Y)以及一缓冲器选择(BSEL)存储区域208。帧缓冲器227分别大至足以存储一完整帧的所有像素数据,且可操作后处理目标程序134以将一个帧写入至缓冲器X、将下一个帧写入至缓冲器Y、依此类推。BSEL存储区域208大至足以存储一唯一地标识扫描输出引擎124将读取哪一帧缓冲器227的值。在一个实施例中,BSEL存储区域208存储用于标识帧缓冲器X(如果该位为0)或帧缓冲器Y(如果该位为1)的单个位。在另一实施例中,BSEL存储区域208存储图形存储器116中帧缓冲器X或帧缓冲器Y中一者的起始地址的标识符(例如偏移量值)。也可使用其他标识符。
在该实施例中,渲染目标程序132例如经由系统总线106接收几何数据。可将所接收的几何数据存储于图形存储器116中、多处理器120的单芯片数据高速缓冲存储器(未显示)中、或其他地方。渲染目标程序132根据由渲染命令缓冲器128所提供的命令来处理几何数据,以产生图像的片段数据。所述片段数据写入至其中一个帧缓冲器226中,例如写入至缓冲器A。
后处理目标程序134根据从PP命令缓冲器129所接收的命令来处理图像缓冲器226中的片段数据,以产生帧的像素数据。所述像素数据写入至其中一个帧缓冲器227,例如写入至缓冲器X。在该实施例中,后处理目标程序134可从除渲染目标程序132当前所正写入的一个图像缓冲器226以外的任何图像缓冲器226获得片段数据,例如如果渲染目标程序132正向缓冲器A进行写入,则从缓冲器B及/或C获得片段数据。
扫描输出引擎124从其中一个帧缓冲器227读取像素数据,并将其提供至显示装置。在该实施例中,扫描输出引擎124从在BSEL存储区域208中所标识的帧缓冲器227中进行读取,所述帧缓冲器227较佳不与后处理目标程序134所正写入的帧缓冲器相同;例如,如果后处理目标程序134正向帧缓冲器X进行写入,则扫描输出引擎124将从缓冲器Y进行读取。扫描输出引擎124可使像素数据不加修改地通过,或者其可应用数字-模拟转换及/或其他信号处理算法将所述数据正确地格式化,以供递送至显示装置。在某些实施例中,在将像素数据写入至帧缓冲器227之前,由后处理目标程序134实施除数字-模拟转换以外的所有逐帧处理;在其他实施例中,扫描输出引擎124可实施某种处理。
扫描输出引擎124较佳根据显示装置的要求将每一个帧的像素的递送同步化,并能够检测某些事件,例如一行屏幕像素的结尾(在所属领域中称作水平回扫)及屏幕的结尾(在所属领域中称作垂直回扫)。可使用传统技术来构建扫描输出引擎124。在一替代实施例中,扫描输出引擎124在交替的帧上读取缓冲器X及Y,且后处理目标程序134在交替的帧上对缓冲器Y及X进行写入。在该实施例中,可使用BSEL存储区域208来存储一旗语,所述旗语仅在初始化时用于使扫描输出引擎124与后处理目标程序134的操作同步。例如,可将要被扫描输出的第一缓冲器(例如缓冲器X)的旗语存储于BSEL存储区域208中。在系统设置时,将该旗语(其可例如为单个位)设定为锁定(或被获取)状态,以阻止扫描输出引擎124读取缓冲器X。在后处理目标程序134将第一个帧写入至缓冲器X之后,其便释放所述旗语,从而启用由扫描输出引擎124从缓冲器X中进行读取操作。此后,所述旗语可保持于其释放状态,并将保持正确的同步。
同步技术
较佳逐个帧地对扫描输出引擎124及后处理目标程序134的操作进行同步,此意味着对于扫描输出引擎124从显示缓冲器127中读取的每一个帧,后处理目标程序134均将一个新的帧写入至显示缓冲器127。例如,较佳在扫描输出引擎124从帧缓冲器Y中读取一个帧的同时,后处理目标程序134将一个帧写入至帧缓冲器X。当扫描输出引擎124达到帧缓冲器Y的末尾时,其便切换至读取帧缓冲器X,同时后处理目标程序134将一个帧写入至帧缓冲器Y。
在一个实施例中,使用一触发器信号来处理该同步,所述触发器信号由扫描输出引擎124在“触发器”路径246上确定。所述触发器信号对于每一个帧产生一次,较佳与帧结尾事件呈固定的时间关系。所述帧结尾事件可为任何会表明扫描输出引擎124处于或接近帧结尾处的事件,例如垂直回扫(或vsync)事件,从当前帧缓冲器中读取最末(或距最末像素还有N个)像素,或类似事件。响应于触发器信号被确定,多处理器120激活后处理目标程序134来产生一个新的像素数据帧。在产生新的帧之后,多处理器120便停用后处理目标程序134,直至触发器信号下一次被确定为止。
较佳提供缓冲器同步来防止在正对缓冲器进行扫描输出的同时,后处理目标程序134写入至帧缓冲器227。在一个实施例中,每当后处理目标程序134结束一新的帧的产生时,其便将所述新的帧的帧缓冲器227的标识符(例如X或Y)写入至BSEL存储区域208内,如由“BSEL_写入”路径242所指示。在每一个帧开始时,扫描输出引擎124均通过存取BSEL存储区域208来确定要读取哪一帧缓冲器227,如由“BSEL读取”路径244所指示。只要每一个帧对BSEL存储区域208仅读取一次并每一个帧对BSEL存储区域208仅写入一次,便可对这些操作的定时进行协调以避免出现竞争状态。例如,扫描输出引擎124可恰好在产生触发器信号之前、在后处理目标程序134已结束产生新的帧并更新BSEL值之后,存取BSEL存储区域208。
渲染目标程序132与后处理目标程序134的操作较佳不相互同步,这是因为后处理目标程序134以显示步调(即屏幕刷新速率)产生帧,渲染目标程序132则以渲染步调产生图像,而渲染步调可不同于(例如慢于)显示步调。在某些实施例中,使用缓冲器同步技术来避免出现其中后处理目标程序134使用一个图像(或图像群组)来产生一帧的一部分、并使用一不同的图像(或图像群组)来产生同一帧的另一部分的情形,以及防止出现其中在后处理引擎132正从图像缓冲器226进行读取的同时渲染目标程序132向该缓冲器226进行写入的情形。具体而言,可控制对图像缓冲器226的存取,以使后处理目标程序134不从渲染目标程序132当前正在写入的图像缓冲器226进行读取,并使渲染目标程序132不会覆写仍由后处理目标程序134所需要的图像缓冲器226。缓冲器同步机制可进一步使得在各后处理帧之间出现对后处理目标程序134所要读取的图像缓冲器的选择的任何改动;此有助于避免在所显示帧的不同部分中出现撕裂或其他视觉不一致现象。
图2通过控制信号路径232、234、236图解说明一种基于不对称旗语及缓冲器索引的用于图像缓冲器226的缓冲器同步技术。渲染缓冲器126的旗语区域206存储旗语207(SA,SB,SC),以用于控制由渲染目标程序132对每一图像缓冲器226的存取,以便不将新的片段数据写入至图像缓冲器226,直至后处理目标程序134已结束对于可存在于该缓冲器226中的任何旧片段数据的处理为止。每一旗语207较佳均具有“被获取”及“释放”状态,这些状态用于如下文所述进行存取控制。一般而言,传统的旗语数据结构及格式可适于构建旗语207。
在渲染目标程序132开始写入新图像的片段数据之前,其力图获取对应于该片段数据所要写入的图像缓冲器226的旗语207,如由“获取”路径232所指示。只有在后处理目标程序134已将一图像缓冲器的旗语释放之后,渲染目标程序132才可获取该图像缓冲器的旗语;如下文所进一步说明,旗语释放是在后处理目标程序134不再需要相关联的图像缓冲器之后进行。如果不能立即获取旗语207,则渲染目标程序132暂停其命令处理,并等待至例如可获得旗语等时间为止,然后继续进行渲染。当后处理目标程序134以显示步调(例如每一扫描输出帧一次)释放缓冲器时,渲染目标程序132一般将不需要等待。在其他实施例中,只要不需要以快于显示步调的速率渲染新的图像,渲染目标程序132的执行中的任何延迟均是可接受的。
当渲染目标程序132结束将一图像的片段数据写入至其中一个图像缓冲器226时,其便释放该缓冲器的旗语207,如由“释放”路径234所指示。释放旗语207(例如旗语SA)会防止渲染目标程序132存取相关联的缓冲器226(例如缓冲器A),直至例如后处理目标程序134释放旗语207为止,如下文所述。在释放旗语207之后(或与其同时),渲染目标程序132将新的索引值写入PP命令缓冲器129内,如由“索引写入”路径236所指示。所述索引值表示刚刚完成的图像缓冲器226,并向后处理目标程序134发出信号来指示该图像缓冲器226现在可供用于处理。
在每一个帧开始时,后处理目标程序134均从PP命令缓冲器129读取索引值,如由“索引读取”路径238所指示。在一个实施例中,将索引作为PP命令缓冲器129中其中一个命令的自变数进行读取。根据该索引值,后处理目标程序134确定其进行后处理需要哪一图像缓冲器226,并释放所不需要的任何图像缓冲器226的旗语207,如由“释放”路径240所指示。其旗语207被后处理目标程序134释放的图像缓冲器226变得可供渲染目标程序132使用。
应注意,如果索引值上一个帧以来尚未出现变化,后处理目标程序134较佳不进行等待或拖延。在某些实施例中,无论索引值是否已出现变化,后处理目标程序134均实施相同的后处理;如果索引值尚未出现变化,则后处理目标程序134所产生的新的帧可与前一帧完全相同。在其他实施例中,可使后处理目标程序134的某些或所有活动以索引值是否已出现变化为条件。在此等实施例中,后处理目标程序134较佳存储前一帧所用的值,并将其与PP命令缓冲器129中的索引值进行比较,以判定索引是否已出现变化。如果索引尚未出现变化,则后处理目标程序134可只是不进行任何操作,或者其可执行不同的一组指令。
就以下意义而言,本文中的同步机制是“不对称的”:旗语207可拖延渲染目标程序132的操作,但不拖延后处理目标程序134的操作。此种方案使得无论渲染目标程序132产生新图像的速率如何,均能够以显示步调产生新的帧。为避免出现死锁,较佳将图像缓冲器226的数量选择得足够大,以便始终存在至少一个未被后处理目标程序134使用的图像缓冲器226。例如,如果后处理目标程序134需要使用M个最近的图像来进行其所要实施的某一(某些)特定操作,则将提供至少M+1个图像缓冲器226。如果需要,可提供更大数量的图像缓冲器226。提供额外的图像缓冲器使得渲染引擎的操作能够远远超前于扫描输出引擎。如果需要,也可使用额外的图像缓冲器在渲染目标程序132中执行经三重缓冲的渲染。
应了解,本文所述的特定同步技术只是例示性的,且也可使用其他技术。某些实施例可完全省却缓冲器同步,从而允许在所显示的帧中出现撕裂。
命令流
在某些实施例中,以不同的方式管理渲染命令流与后处理命令流。更具体而言,如上文所述,渲染命令缓冲器128较佳构建成使渲染目标程序132将本文所述的渲染命令执行一次;针对所要渲染的每一图像,均将一组新的命令写入至渲染命令缓冲器128中。相比之下,所需的一组后处理操作通常在各帧之间保持一致,且针对每一个帧来写入相同的一组后处理命令将比较低效。当PP命令缓冲器129以无限循环形式操作时,向PP命令缓冲器129中写入新的后处理命令会更为复杂。后处理目标程序134的执行与图形驱动器不同步,且所述驱动器一般并不知晓后处理目标程序134在任一既定时刻是否正在执行或者正在执行所述循环中的哪一命令。
相应地,PP命令缓冲器129较佳构建成使图形驱动器可将整个后处理命令程序作为一命令流写入至PP命令缓冲器129。在执行之后,将该程序保留于PP命令缓冲器129中,以便可针对每一个帧来重新执行同一程序。因此,仅当要改变后处理时,才需要将新的后处理命令写入至PP命令缓冲器129中。
现在将对用于渲染命令缓冲器128及PP命令缓冲器129的实例性命令流结构进行说明。
图3A示意性地图解说明根据本发明一实施例的一渲染命令流300的一部分,所述渲染命令流300可在渲染命令缓冲器128中进行缓冲。对于每一新的图像,所述命令序列均以“ACQ”命令306、308开始,所述“ACQ”命令306、308指令渲染目标程序132在继续进行之前获取所要写入的下一图像缓冲器226的旗语207(例如在为ACQ命令306的情况下是缓冲器A的旗语SA,在为ACQ命令308的情况下是缓冲器B的旗语SB)。如上文所述,如果无法获得旗语207,则渲染目标程序132将等待至例如可获得旗语207等时刻。
“RCMD”命令310、312分别代表完整的一组命令及用于渲染图像的数据。在实际中,可针对每一图像包含任意数量的渲染命令。例如,RCMD命令310、312可包含顶点(或几何形状)处理命令、光栅化命令、片段着色命令等等的任一组合。RCMD命令310、312也可包含可与各种渲染命令相关联的适当数据(例如变换矩阵,将顶点分组成图元等等)。在某些实施例中,可将渲染命令作为适于由多处理器120执行的微指令来递送;在其他实施例中,可能要求在执行所述命令之前由主机120对所述命令进行解码。在某些实施例中,渲染命令序列也可包含例如循环、如果-则语句等流程控制命令。一般而言,RCMD命令310、312可为传统性质,且由于对于理解本发明而言并不重要,因而不再对其进行详细说明。
在每一图像的结尾处是一“翻转(FLIP)”命令314,316,其指示对当前图像的渲染完成。响应于所述FLIP命令,渲染目标132较佳将其渲染目标从当前渲染缓冲器切换至下一渲染缓冲器(例如在为翻转命令314的情况下从缓冲器A切换至缓冲器B),并还释放刚刚完成的渲染缓冲器的旗语(例如在为翻转命令314的情况下为旗语SA)。在释放旗语207之后,渲染目标程序132以新的值来更新PP命令缓冲器129中的索引值,所述新的值标识刚刚完成的渲染缓冲器(例如在为翻转命令314的情况下为缓冲器A)。此外,对翻转命令的处理也可包括复位计数器或可由渲染目标程序132维护的其他变量。也可响应于翻转命令而执行其他传统的图像结束处理。
图3B示意性地图解说明根据本发明一实施例可存储于PP命令缓冲器129中的后处理程序(或流)320。在该实施例中,程序320执行一无限循环,其包括:索引命令322,其自变数是如上文所述由渲染目标程序132写入及覆写的索引;一个或多个后处理(“PCMD”)命令326、328;一个或多个位置(“LOC”)命令330、332;一BSEL更新(“BUPD”)命令334;以及一最终无条件跳转(“JMPB”)命令336,其用于返回至该循环的开头。
索引命令322可首先执行,其将当前索引值提供至后处理目标程序134。在某些实施例中,后处理目标程序134将当前索引值与最近使用的索引值相比较,并可根据比较结果来控制进一步的处理,所述最近使用的索引值可存储于可由后处理目标程序134进行存取的状态寄存器(在图2或图3B中未显示)中。例如,在某些其中索引值尚未出现变化的情形中,下一显示帧将与当前显示帧完全相同。在此种情形中,后处理目标程序134可不产生新的帧,且其可在位置208(图2)上不加修改地留下BSEL值,从而使扫描输出引擎124只是将同一帧缓冲器227接连地读取多次,直至例如索引值确实出现变化等时刻为止。在其他情形中,即使索引值尚未出现变化,也可能希望使后处理目标程序134采取某种措施,例如调节LCD过激励值或者前进经过例如淡入、淡出或者渐隐等过渡效果。在其他实施例中,无论索引值是否发生变化,后处理目标程序134均执行相同的命令。在初始化时,可将索引值设定为零值,此指示尚未将任何图像提供至图像缓冲器226;后处理目标程序134较佳检测所述零值并采取适当措施(例如将空白屏幕值写入至帧缓冲器227中的每一像素)。
PCMD命令326、328代表用于所要执行的各种后处理操作的指令。在实际中,可在内容320中包含任意数量的PCMD命令。如同上文所述的RCMD(渲染)命令一样,可将PCMD命令以适于由多处理器120直接执行的指令形式递送;在其他实施例中,可能要求在执行所述命令之前由主机对所述命令进行解码。同样,如同RCMD命令一样,PCMD命令可根据需要包含流程控制命令(例如,某些命令可以索引条码324中的索引值是否出现变化为条件)。
如下文所进一步说明,在某些实施例中,使用与渲染目标程序132相同的处理引擎来执行后处理目标程序134;相应地,作为RCMD命令310、312(图3A)给出的任何命令序列也可作为PCMD命令326、328给出。此外,也可定义后处理操作所特有的特殊PCMD命令。原则上,可通过PCMD命令326、328的适当序列来构建后处理操作的任意组合(包括上文所述实例中的任何一者或多者)。在某些实施例中,PCMD命令326、328仅用于应逐帧地进行的处理,例如LCD过激励或光标覆盖。然而,应了解,可通过PCMD命令326、328对各种各样的后处理操作进行编程。
LOC命令330、332与索引条目324相结合地将一个(或多个)图像缓冲器226标识为特定的PCMD命令或特定的PCMD命令群组的数据源。索引条目324是由渲染目标程序132响应于上文所述的翻转命令而写入,其标识最近填满的图像缓冲器226。LOC命令330、332可根据需要指代最近填满的图像缓冲器226或者先前填满的各图像缓冲器226。在一个实施例中,LOC命令330、332相对于最近填满的图像缓冲器来标识图像缓冲器226。例如,假定存在N个分配有索引值0,1,...,N-1的N个图像缓冲器226,且索引条目324中的值由R标记。LOC命令可为LOC=R的形式,以标识最近填满的图像缓冲器,或者LOC=(R-1),以标识次最近填满的缓冲器,依此类推。当使用相对引用方式时,在索引条目324更新时不需要修改LOC命令330、332。在某些实施例中,可存在可适用于所有PCMD命令的一个LOC命令或一组LOC命令。
BUPD命令334及JMPB命令336使后处理循环结束。BUPD命令334指令后处理目标程序134将新近写入的帧缓冲器227的标识符写入至BSEL存储位置208,以便使扫描输出引擎124将读取其作为下一个帧。JMPB命令336将控制返回至程序320的开头,如由虚线箭头338所示。如下文所述,JMPB命令336也可用作后处理程序的完成信号(在本文中也称作“帧完成事件”);换句话说,一旦后处理目标程序134遇到JMPB命令334,其便进入空闲状态以等待下一触发器事件。例如,如下文所述,在到达JMPB命令336时,后处理目标程序134可被上下文切换出。
在某些实施例中,某些PCMD命令326、328可具有相关联的状态参数。例如,可使放大参数与执行扩大或缩小的PCMD命令相关联,或者可使覆盖尺寸或位置参数与执行合成的PCMD命令相关联。这些参数可包含于后处理命令流中,或者其可写入至可由后处理目标程序134存取的不同位置(例如PP命令缓冲器内的参数段,单独的缓冲器,或者执行核心中的参数寄存器)。可通过覆写后处理命令流、选择性地修改后处理命令流、或者修改缓冲器或寄存器的内容来处理参数更新。下文将进一步说明对命令及参数的修改。
应了解,本文所述的程序流只是例示性的,且也可存在变化及修改形式。可使用任意适当的命令集合来构建RCMD及PCMD命令。可使用其他条件作为帧完成事件取代JMPB来指示后处理程序的结束。例如,如果使用“放置”指针及“得到”指针(类似于尚未参照图1中的渲染命令缓冲器128所述的指针)来构建PP命令缓冲器,则“放置”指针将引用所述程序中最末命令的位置。当“得到”指针与“放置”指针引用相同的位置时,便已到达最末命令。也可使用出现该事件作为帧完成事件来指示后处理目标程序已结束一帧。在其他实施例中,可使用任何唯一地与完成对帧的后处理相关联的事件或状态来作为帧完成事件。
多处理器
图4是根据本发明一实施例的多处理器120的简化方块图。多处理器120包括仲裁单元402、及包含上下文管理器406的执行核心404。
执行核心404可为一般的传统设计,并可构建任何所需的微架构及/或指令集合。在某些实施例中,执行核心404包括若干个用于实施各种操作(加法、乘法、向量算术、数学函数、过滤算法、存储器存取等等)的功能单元405、以及相关联的控制逻辑407,所述相关联的控制逻辑407用于将输入命令解码为所述功能单元的可执行的指令、识别及收集每一指令所需的操作数、向所述功能单元发出指令、以及将结果转接至其他功能单元或寄存器文件(未明确显示)。执行核心404也可包括用于维护硬件状态的各个方面的各种其他寄存器。执行核心404还经配置以存取渲染缓冲器126及显示缓冲器127(其可如同1所示处于图像缓冲器116中)。在某些实施例中,可提供多个平行的执行核心404,其中每一核心404对一景物、图像或帧的一不同部分进行处理。执行核心404的具体架构对于本发明并不重要,且特定元件
在一个实施例中,执行核心404支持两个独立的处理信道:构建后处理目标程序134(图1)的高优先权信道(HPC),及构建渲染目标程序132的正常优先权信道(NPC)。上下文管理器406为每一信道维持单独的架构状态(上下文)。更具体而言,NPC上下文块408包含为NPC所存储的架构状态,且HPC上下文块410包含为HPC所存储的架构状态。可将架构状态存储于寄存器中或其他适合的硬体中。
上下文管理器406使功能单元405及控制逻辑407能够存取适用于当前现用信道的架构状态,从而使一在其处理期间在某一点处被切换出的信道可在被重新切入时在同一点处重新开始。在某些实施例中,执行核心404具有一现用寄存器集合(在图4中未显示),且上下文管理器406通过如下方式执行信道切换(例如从HPC至NPC):首先将“旧”信道(例如HPC)的架构状态从现用寄存器集合复制至适当的上下文块(例如HPC上下文块410),随后将“新”信道(例如NPC)的架构状态从适当的上下文块(例如NPC上下文块408)复制至现用寄存器集合。在其他实施例中,执行核心404可有选择地存取NPC上下文块408或HPc上下文块410中的对应寄存器,且上下文管理器406以与上下文相关的方式将执行核心404指引至适当的寄存器。上下文切换的具体实施方案对于本发明而言并不重要;在某些实施例中,可使用任何能提供足够快(例如300微秒或更快)的上下文切换的实施方案。
仲裁单元402确定在任一既定时刻哪一信道将现用。在一实施例中,仲裁单元402具有用于从渲染命令缓冲器128接收备选命令的NPC输入端412及用于从后处理命令缓冲器129接收备选命令的HPC输入端414。仲裁单元402还具有用于从扫描输出引擎124接收触发器信号(上文中参照图2所述)的触发器输入端416、及用于从执行核心404接收事件信号的事件输入端418。根据这些输入,在每一循环中,仲裁单元402均选择HPC或NPC作为现用信道,向执行核心404发送一标识所选信道的上下文信号(在路径420上)及用于所选信道的备选命令(在路径422上)。未被选定的备选命令在下一循环中重新提供于输入端上,此时,其既可能被选定也可能不被选定。可使用适当的定时及控制电路(在图4中未显示)来确保在执行核心404具有所选命令的正确上下文时执行所选命令;该电路可为一般的传统设计。
图5是可在仲裁单元402中执行的选择逻辑过程500的流程图。在该实施例中,扫描输出引擎124在路径424上与每一垂直回扫(或其他帧结尾)事件大致重合地产生触发器信号。后处理命令缓冲器129包含用于具有无条件JMPB命令的无限循环的命令,如在图3B中所示。
在初始化(步骤501)之后,仲裁单元402切换入NPC(步骤502)。在每一循环中,仲裁单元402均检查触发器信号是否被确定(步骤504)。只要触发器信号未被确定,便继续选择来自渲染命令缓冲器128的命令(步骤506)。根据渲染命令缓冲器128中的命令,渲染图像并将片段数据写入至渲染缓冲器126;换句话说,渲染目标程序132运行。HPC在该时间期间不现用。
当在步骤504中检测到触发器信号时,仲裁单元402将上下文切换至HPC(步骤508)并开始从PP命令缓冲器129(步骤510)中选择命令。仲裁单元402继续从PP命令缓冲器129中选择命令,直至在步骤512中检测到无条件JMPB命令为止。根据PP命令缓冲器129中的命令,对渲染缓冲器126中的片段数据实施后处理,将所得到的屏幕像素数据写入至显示缓冲器127中;换句话说,后处理目标程序134运行。帧的后处理的完成是由JMPB命令来指示,如上文所述。一旦检测到该命令(步骤512),并将其转接至核心404(步骤514),此后仲裁单元402将切换入NPC上下文,从而返回至步骤502。在某些实施例中,JMPB命令仅影响仲裁单元402,且不转接至核心404。此时,渲染目标程序132重新开始。
过程500以对应于显示帧速率(例如80Hz)的间隔中止渲染,从而可以显示步调进行后处理。一般而言,如此周期性地中止渲染而进行后处理不会不利地影响图形子系统的总体性能,除非后处理所耗用(且因此不能用于渲染)的时间长到足以使得无法以所需速度(例如30Hz)渲染新图像为止。在现代执行核心中可具有的处理能力及典型的后处理操作序列情况下,可保持可接受的性能。
应了解,本文所述的多处理器及仲裁逻辑只是例示性的,且也可存在变化及修改形式。在本文中,“上下文切换”作为一般性术语用于描述可在第一指令流中的任意一点从所述第一指令流切换至另一指令流、然后在实质上同一点处返回第一指令流的处理器的操作;该术语限定于任意特定处理器架构。可采用任何多任务架构,包括传统的多线程架构,且可使用任何机制来保持一临时空闲的过程或上下文的状态。此外,不需要赋予HPC优先于NPC的绝对优先权,只要HPC可在由显示步调所确定的时间表内可靠地结束新帧的产生既可。应注意,本文所述的实例性仲裁逻辑并不利用事件输入418;不同的仲裁逻辑可使用该输入。例如,后处理目标程序134可在输入路径418上产生事件信号来通知仲裁单元402其已结束一帧。
在另一实施例中,可对各单独的缓冲器读取路径使用独立的处理引擎来构建渲染目标程序及后处理目标程序。在该实施例中,渲染目标程序及后处理目标程序可并行地执行,且不要求在这些目标程序之间进行上下文切换。
修改后处理程序
在上文所述的实施例中,PP命令缓冲器129一般并不逐帧地更新。可在后处理目标程序134空闲时的任意时刻,例如通过在图1中的CPU 102上运行的图形驱动器来更新PP命令缓冲器128,但这些更新并不与任何特定图像的显示同步。相反,对PP命令缓冲器129的更新通常会在更新之后对下一个帧生效。如果进行多次更新,则不保证所有更新均将对同一帧生效。
在其他实施例中,可使后处理操作的改变与特定图像同步化。该可选特征还使所要控制的多次更新能够对同一个帧生效。可例如通过构建多个PP命令缓冲器129来提供此种同步,其中渲染目标程序132控制PP命令缓冲器129的内容以及对于在任一既定时刻应读取哪一PP命令缓冲器129的选择。
图6是根据本发明一实施例的多处理器600的简化方块图,多处理器600构建多个PP命令缓冲器602(1)-602(3)。多处理器600包括仲裁单元604及具有上下文管理器608的执行核心606。这些组件可大体上类似于上文所述的仲裁单元402、执行核心404、及上下文管理器406;因此,主机600提供一执行后处理目标程序134的HPC及一执行渲染目标程序132的NPC。多处理器600还包括用于控制在各PPC命令缓冲器602(1)-602(3)之间进行选择的附加逻辑。
更具体而言,每一PP命令缓冲器602(1)-602(3)均向选择电路(例如多路复用器)610提供备选后处理命令。选择电路610响应于存储于主机600的PP索引寄存器612中的“PP索引”值而选择其中一个备选项。所选备选项作为HPC备选指令提供至仲裁单元604。仲裁单元604可如上文所述选择HPC与NPC备选指令。
NPC是响应于特殊命令而写入PP索引寄存器612,所述特殊命令可包含于通过渲染命令缓冲器614递送至主机600的渲染命令流中。图7图解说明包含适当命令的渲染命令流700的一部分。在流700中,ACQ命令702、RCMD命令704及翻转命令710大体类似于上文参照图3A所述的命令。PP命令缓冲器选择(“SELPP”)命令706及PP命令缓冲器写入(“WRPP”)命令708执行与特定图像同步的后处理操作中的变化。
更具体而言,SELPP命令706指令渲染目标程序132(构建于NPC中)选择所要写入的PP命令缓冲器602(1)-602(3)中可用的一个。可使用类似于上文所述旗语207(图2)的旗语机制或其他控制机制来防止渲染目标选择仍由后处理目标程序134使用的PP命令缓冲器602。
WRPP命令708较佳伴随有数据(在图7中未明确显示),所述数据呈要写入所选PP命令缓冲器602的后处理程序(或其一部分)的形式。所述程序可根据需要具有图3B中所示的形式或者不同的形式。渲染目标程序132通过经由图6中所示的“PPC写入”路径616将相关联的程序写入至所选PP命令缓冲器602中而执行WRPP命令708。路径616可包含适用于有选择地将程序信息指引至仅其中一个PP命令缓冲器602(1)-603(3)的电路(未显示);该电路可为传统设计。在某些实施例中,在执行WRPP命令708期间,还将一标识渲染目标程序132刚刚完成的图像缓冲器的索引条目写入至所选PP命令缓冲器602中。
此后,渲染目标程序132执行翻转命令710并经由“PPI-写入”路径618将所选PP命令缓冲器602的标识符写入至PP索引寄存器612中。可沿路径618提供适当的死锁(例如由仲裁单元604控制的锁存器或传输门),以便在HPC现用时,对PP索引寄存器612进行的更新不会生效。举例而言,在PP索引寄存器612正由后处理目标程序134使用(锁定)时,可停止渲染目标程序132执行PP索引写入操作。应注意,在该实施例中,WRPP命令可包括将适当的索引值写入至所选PP命令缓冲器602;并不要求进行单独的索引更新操作。
后处理目标程序134(构建于HPC中)跟踪在其最后一次迭代中是读取了哪一PP命令缓冲器602,且还能经由“PPI-读取”路径620对PP索引寄存器612进行读取存取。相应地,后处理目标程序134可判定当前PP命令缓冲器602(由PP索引寄存器612规定)与最后所读取的PP命令缓冲器602是否相同;如果不相同,则后处理目标程序134将最后所读取的PP命令缓冲器602的旗语解锁或者以其他方式释放最后所读取的PP命令缓冲器602以便进行覆写。
在某些实施例中,SELPP命令706及WRPP命令708包含于仅用于其中要改变后处理程序的图像的渲染命令流700中。对于其他帧,可省略这些命令,在此种情形中,翻转命令710较佳不改变存储于PP索引寄存器612中的值。相反,可执行对当前PP命令缓冲器602的索引更新。因此,可对任意数量的连续帧使用同一PP命令缓冲器602,其中仅在实际改变后处理程序时使用新的PP命令缓冲器602。
在另一实施例中,由WRPP命令递增地更新而非完全覆写PP命令缓冲器602中的后处理程序。举例而言,在初始化时,可对每一PP命令缓冲器602加载以相同的“缺省”后处理程序。渲染目标程序132根据需要修改所述程序的某些部分(例如各种操作的参数),并更新索引值。上文所述的SELPP及WRPP命令也可适用于该实施例,例如使WRPP命令规定所要覆写的PP命令缓冲器602中的条目以及新的命令(或仅参数值)。
所属领域的一般技术人员将知,也可具有其他同步方案。例如,可根据需要将关于接下来应读取哪一PP命令缓冲器的信息存储于仲裁单元中、HPC上下文中的存储器中、或其他位置处。
多个显示头
如在所属领域中所知,某些GPU设计有多个显示头以用于驱动多个显示装置。通常为每一显示头分别提供单独的扫描输出引擎,这是因为不同的显示装置可能以不同的像素或帧率运行,或者可能具有不同的像素格式要求。
图8是一简化方块图,其图解说明根据本发明一实施例的多处理器804,多处理器804支持一用于驱动显示装置“0”(未明确显示)的第一扫描输出引擎802(1)及一用于驱动显示装置“1”(也未明确显示)的第二扫描输出引擎802(2)。多处理器804包括仲裁单元806及包含上下文管理器810的执行核心。这些组件可大体上类似于图4中的对应组件,只是多处理器804支持两个HPC(在本文中标记为HPC0及HPC1)及一个NPC。每一HPC均执行不同的后处理目标程序;对于显示装置“0”为HPC0,而对于显示装置“1”为HPC1;所述NPC包含用于提供由这两个后处理目标程序所耗用的图像的实例化渲染目标程序。在某些实施例中,可存在多个渲染目标,其中这些渲染目标程序所产生的图像由一个或多个后处理目标程序以任意所需方式耗用。相应地,执行核心808支持至少三个上下文,且仲裁单元806如下文所述实施三路(或更多路)仲裁。
每一扫描输出引擎802(1)、802(2)均以适用于其各自显示装置的参数(例如像素率、帧率)来运行。由于不同显示装置的后处理操作可有所不同,因而构建于HPC0中的后处理目标程序较佳将帧写入至显示缓冲器820(1)中,而构建于HPC1中的后处理目标程序将帧写入至在物理或逻辑上分离的显示缓冲器820(2)中。显示缓冲器820(1)由扫描输出引擎802(1)读取,而显示缓冲器820(2)由扫描输出引擎802(2)读取。HPC0及HPC1二者均可从同一渲染缓冲器822读取,并可读取存储于其中的同一图像或不同图像,或者其可从不同的渲染缓冲器822读取。
仲裁单元806经由渲染命令缓冲器812接收NPC的备选命令流,经由PP命令缓冲器814(1)接收HPC0的备选命令流,且经由PP命令缓冲器814(2)接收HPC1的备选命令流。一般而言,由于不同显示装置所需的后处理操作可能不同,因而PP命令缓冲器814(1)、814(2)可提供不同的后处理程序。
仲裁单元806分别从每一扫描输出引擎802接收触发器信号:“触发器-0”路径824(1)从扫描输出引擎802(1)提供触发器信号,而“触发器-1”路径824(2)从扫描输出引擎802(2)提供触发器信号。响应于触发器-0信号,仲裁单元806切换入HPC0-其运行至帧完成(如在上文所述的其他实施例中一样),且响应于触发器-1信号,仲裁单元806切换入HPC1-其也运行至帧完成。
在某些情形中,可存在交叠的触发器事件。例如,仲裁单元806可响应于触发器-0信号而切换入HPC0,然后在HPC0已结束其帧之前接收触发器-1信号。在一个实施例中,仲裁单元806允许HPC0结束其帧,然后立即切换入HPC1中。也可使用类似逻辑来处理其中触发器-1信号首先到达的另一交叠情景。只要为使HPC0与HPC1分别产生帧所需的总时间明显小于帧时间(如果这两个显示装置具有不同的帧率,则以更快的帧率),且只要为NPC留下足够的处理时间来以可接受的速率渲染新图像,该算法便有效。
在其他实施例中,可将各种目标程序中的某些或全部构建于单独的处理引擎中,从而提高并行处理容量。例如,对于三个引擎,可将NPC及两个HPC分别构建于单独的引擎中。
在另一实施例中,可通过提供两个扫描输出引擎及单个HPC来支持多个显示头,所述扫描输出引擎中的一者独自使用HPC。另一显示头的扫描输出引擎可在需要时使用传统的专用电路来构建有限的后处理能力。在再一实施例中,可由来自两个(或更多个)扫描输出引擎之一的触发器信号来触发单个HPC。
后处理的实例
如上文所述,后处理可包括各种各样的操作。现在将说明后处理操作的某些实例,此并不限制本发明的范畴。
一个后处理操作是合成,其中可将来自不同缓冲器的图像相互叠加而产生帧。例如,图9图解说明自三个不同图像缓冲器产生的合成帧900。背景图像缓冲器902提供用于在背景区域904中产生像素的片段数据,电影图像缓冲器906提供用于在电影区域908中产生像素的片段数据,且光标图像缓冲器910提供用于在光标区域912中产生像素的片段数据。
在该实例中,任何图像的内容及/或位置均可分别因帧而异,且不同图像的更新率可有所不同。例如,区域904中的背景图像可为很少发生变化的桌面壁纸。区域908中的电影图像可以30Hz或更高的速率变化,且光标图像缓冲器910的内容也可实质上实时地变化,例如以指示当前的系统活动。光标区域912的位置也可实质上实时地变化,以反映用户所操作的指点装置的运动。
根据本发明的一实施例,可通过提供多个独立的图像缓冲器(或图像缓冲器群组)作为后处理目标程序的片段数据源来产生合成图像。图10是一方块图,其显示经配置以分别产生多个图像的多处理器1000。在该实施例中,多处理器1000支持一个构建后处理目标程序的HPC及两个NPC:NPCF构建用于全屏图像的渲染目标程序,而NPCC构建用于光标图像的渲染目标程序。应了解,尽管在图10中图解说明两个NPC,然而可提供任意数量的NPC来产生可能需要组合的任意数量的图像源。此外,可使用任意数量的不同处理引擎来构建目标程序;例如,一个引擎可构建所有三个目标程序,可为每一目标程序提供单独的引擎,或者可每一目标程序提供多个引擎。
图形存储器1002可大体上类似于上文所述的图形存储器116,其包括两个渲染缓冲器1004、1006,其中渲染缓冲器1004、1006中的每一者均如上文所述存储多个图像。渲染缓冲器1004存储由NPCF所渲染的全屏图像的片段数据,而渲染缓冲器1006存储由NPCC渲染的光标图像的片段数据。应注意,光标图像可包含比全屏图像少得多的片段;相应地,渲染缓冲器1006可明显小于渲染缓冲器1004。图形存储器1002还包括显示缓冲器1008,用于存储由HPC所产生的帧的像素数据。
主机1000包括仲裁单元1010及具有上下文管理器1014的执行核心1012,上下文管理器1014可大体上类似于上文所述的对应组件。在此种情形中,上下文管理器1014存储三个不同的上下文(NPCC上下文1011,NPCF上下文1013及HPC上下文1015),且仲裁单元1010在三个不同上下文之间进行选择。用于全屏图像及光标图像的单独的渲染命令流经由各自的渲染命令缓冲器1016(用于全屏图像)及1018(用于光标图像)提供。这些渲染流可大体上类似于图3A所示的渲染流300。
仲裁单元1010响应于来自扫描输出引擎1030(如上文所述)的触发器信号而选择HPC,并在HPC空闲时在NPCC与NPCF之间进行选择。可使用循环选择、事件驱动的选择(例如根据经由“evt”路径1017从执行核心1012接收的事件信号)、或其他选择算法。
PP命令缓冲器1020提供后处理程序,其一实例图解说明于图11中。后处理程序1100大体上类似于图3B所示的后处理程序320,只是提供多个索引项1104、1106。索引项1104在新的光标图像完成之后存储由NPCC所更新的光标索引值(INDC),而索引项1106则在新的全屏图像完成之后存储由NPCF更新的全屏索引值(ENDF)。应注意,可相互独立地并以不同的速率来更新INDC与INDF值。
在该实施例中,后处理目标程序较佳每当得到触发时便产生新的帧,而无论两个索引项中的一个是否已发生变化。此会确保如常常所需要的那样以显示步调更新屏幕上的光标位置。
在一个实施例中,PCMD命令1110、1112包括用于如下的命令:从适当的寄存器(其可为传统设计)或自存储器位置读取当前光标位置;确定当前光标大小(其可例如通过PP命令缓冲器1020中的命令进行设定);确定哪些像素处于光标区域内;及根据哪些像素处于光标区域内而选择来自当前光标图像(由索引值INDC标识)或当前全屏图像(由索引值INDF标识)的每一像素的一个或多个片段。所述合成算法自身可类似于现用的基于硬件的算法,但其较佳构建于可在执行核心912中执行的程序名中,而非构建于专用硬件中。例如透明度或光标与下面全屏图像部分之间的边缘混合等特征也可经由适当的程序码来构建。
重新参见图10,扫描输出引擎1030可与上文所述的各种扫描输出引擎相同。在该实施例中,所有合成均由HPC中的后处理目标程序在主机1000中进行,且扫描输出引擎1030的操作与如何产生显示缓冲器1008中的像素无关。
另一后处理操作是LCD过激励(在所属领域中也称作“LCD前馈”或“响应时间补偿”(RTC))。如在所属领域中所知,如果部分地根据所需的新强度且部分地根据所需新强度与前一强度之间的差别在各个帧之间调整用于驱动像素的信号,则可使LCD屏幕更快地作出响应。根据本发明的一实施例,可将LCD过激励构建于后处理目标程序中,所述后处理目标程序执行一包含适当命令的后处理程序。
例如,考虑图像的每一片段均对应于帧中的一个像素的情形。(本发明并不仅限于此种情形;其在此处用于图解说明目的。)图12图解说明用于产生帧的过程1200,其可通过适当的后处理程序(例如如在图3B中所示)构建于后处理目标程序134中(例如参见图2)。过程1200较佳地构建于一如下实施例中:其中将最新完成的图像存储于具有索引值R的图像缓冲器226(图2)中,并将紧接的前一图像存储于索引值为(R-1)模N的不同图像缓冲器226中;这两个图像缓冲器226均由后处理目标程序134保持锁定。
在步骤1202中,后处理目标程序134检查PP命令缓冲器129中的索引条目。在步骤1204中,判定索引值是否已发生变化。如果未发生变化,则在步骤1206中,将帧中所有像素的增量值设定为0,从而反映所需像素值无一发生变化。如果像素值已发生变化,则在步骤1208中,根据缓冲器R中的片段值及缓冲器(R-1)模N中的片段值来计算每一像素的增量值。在一个实施例中,所述增量值简单地为这两个缓冲器中对应片段的值之差。
在步骤1210中,根据缓冲器R中的片段值来确定所需的像素强度。在一个实施例中,所述片段值是所需的像素强度;在其他实施例中,所需像素强度是所述片段值的函数(例如包含γ修正)。
在步骤1212中,根据所需强度及增量值来确定像素的过激励值。在一个实施例中,可规定一用于计算过激励信号的函数。在另一实施例中,可根据一使用所需强度及增量值(或新的及旧的强度值)来加索引的查找表来确定过激励信号;执行核心404可包括经配置以实施表查找的功能单元。
应了解,过程1200只是例示性的,且也可具有各种变化形式及修改形式。各步骤可对每一片段依序执行或者对片段群组(或对所有片段)并行执行,可改变步骤次序,并可修改或组合各步骤。可替换对增量值的不同定义,并还可引入对片段值的其他修改。此外,可将过程1200与用于从片段数据产生像素数据的其他步骤(例如下降过滤、上升过滤、合成等等)相组合。
应了解,过程1200为像素产生的过激励信号并非一定是将存储于帧缓冲器227中的最终像素值。可使用额外的后处理命令来执行随后的操纵。
后处理操作的第三实例是表面旋转,在表面旋转中,将图像的片段数据映射至已围绕垂直于图像的轴线旋转过某一角度(例如90°的倍数)的2-D表面上。所述轴线与图像平面的交点及/或所述旋转角度可以是可配置的参数。在一个实施例中,所述交点固定于图像中心处(或附近),且所述角度是可配置的90°的倍数(例如0°、90°、180°、270°)。根据所述角度及旋转角度,可将图像缓冲器中的每一片段位置映射至帧缓冲器中的对应像素位置。相应地,可通过如下方式在后处理目标程序中执行表面旋转:在片段位置与像素位置之间定义一映射,并使用该映射根据从中读取片段的地址来确定每一像素的写入地址。所述映射可例如作为可按图像缓冲器的位置偏移量来存取的查找表的形式或者作为用于根据图像缓冲器的位置偏移量来计算像素缓冲器的位置偏移量的公式形式提供。在一个实施例中,可使用可按图像缓冲器位置偏移量存取的查找表及当前旋转角度来为若干个所允许的旋转角度提供映射。
图13是一用于产生旋转帧的过程1300的流程图,其可通过适当的后处理程序(例如,如在图3B中所示)而构建于后处理目标程序134(例如参见图2)中。在步骤1302中,根据所需的旋转,在图像缓冲器中的每一片段位置与像素缓冲器中的对应像素位置之间定义一映射。所述映射可例如在渲染目标程序的初始化期间定义一次,且仅当旋转参数发生变化时才进行更新。在一个实施例中,使用后处理命令来提供映射;在另一实施例中,后处理命令提供可由后处理目标程序用以计算或选择适当映射的参数。
在步骤1304中,从图像缓冲器位置(在本文中称为源位置)读取片段数据,并在步骤1306中处理片段数据以产生像素值。可在步骤1306中包含任意类型的后处理操作,包括例如合成及/或LCD过激励操作。一旦完成处理,便在步骤1308中使用源位置及在步骤1302中所定义的映射为像素值确定帧缓冲器中的目的地位置。在步骤1310中,将像素值写入至目的地位置。在步骤1312中,判定是否还有更多片段要处理。如果有,则过程1300返回至步骤1304来处理下一片段;当当前图像的所有片段均已得到处理时,过程1300结束(步骤1314)。
应了解,过程1300只是例示性的,且也可具有变化形式及修改形式。被描述为按顺序的各步骤也可并行执行,可改变步骤次序,并可修改或组合各步骤。举例而言,可并行处理多个片段。在某些实施例中,源位置与目的地位置之间的映射可并非一对一映射;例如,也可减小或增大旋转图像来适合于像素阵列的尺寸。减小或增大可涉及到混合数个片段值以产生一个像素值。过程1300可适用于该实例,只要可使用一个片段的位置作为源位置来用于定义向像素的映射即可。在其他实施例中,可将所述映射定义成对要用于每一像素位置的一个或多个源位置进行标识。
在本文中使用合成操作及LCD过激励操作作为可在后处理目标程序中执行的操作的实例。也可除这些实例之外或者取代这些实例而执行其他操作;上文在“概述及术语”一节中阐述了某些实例,但本发明并不仅限于特定的后处理操作。所属领域的一般技术人员将知,后处理目标程序可有利地用于执行任何为获得正确行为而希望或需要以显示步调执行的操作。可改变包含于后处理目标程序中的操作的数量及复杂度,只要可以显示步调产生新的帧即可。
用于后处理程序的源
如上文所述,通过图形驱动器程序将后处理程序写入至PP命令缓冲器。所述驱动器可直接(例如,通过将命令经由系统总线106传送至图1所示实施例中PP命令缓冲器129的存储器位置内)或者间接地(例如,通过如上文参照图7所述将WRPP命令写入至渲染命令缓冲器128中)写入命令。
现在将对用于后处理程序的源进行说明。在某些实施例中,图形驱动器对来自由执行各种后处理操作的预定程序段形成的库的后处理程序进行组合。图形驱动器可提供适当的应用程序界面(API),从而允许应用程序开发者规定其希望使用的后处理操作及任何相关参数。API自身可大体上类似于用于控制扫描输出时间处理的传统API,但在图形驱动器内的实施方案是不同的。具体而言,响应于API指令,图形驱动器从所述库中选择适当的程序段,将所述段组合成完整的程序(例如,增加例如上文所述的索引检查命令及跳转命令等控制命令),并将所述程序写入至PP命令缓冲器中或将适当的WRPP命令插入渲染命令流内。
在其他实施例中,应用程序开发者可定义“定制”后处理程序。例如,图形驱动器可提供一从应用程序或操作系统程序接受任意后处理程序或程序段的API。也可提供具有用于写入定制后处理程序的指令及/或建议的开发者套件。在再一些实施例中,可支持库程序段及定制程序段的组合。
在上文所述的实施例中,将图形驱动器标识为向PP命令缓冲器中写入后处理程序。在某些实施例中,在抽象层上构建图形驱动器程序,所述抽象层次隐藏了在上面执行驱动器程序的硬件及/或操作系统的细节。例如,可提供资源管理器程序来支持图形驱动器程序与系统硬件组件的交互作用。所述资源管理器构建低层硬件及针对具体操作的功能度,这些低层硬件及针对具体操作的功能度由图形驱动器程序响应于来自操作系统程序及/或应用程序的处理请求而被调用。该额外的抽象层通过提供资源管理器的不同实施方案而使同一驱动器代码能够适用于不同的硬件配置。当构建资源管理器时,可由所述资源管理器来处理后处理程序向PP命令缓冲器的实际写入,从而使其对驱动器透明。
在又一实施例中,可由驱动器发出传统的扫描输出控制命令。这些命令由GPU内的适当命令接口组件接收并转换成用于后处理目标程序的控制结构。例如,在接收到扫描输出命令之后,所述命令接口组件可在PP命令缓冲器中写入或覆写命令或参数,或者,其可将适当的SELPP及/或WRPP命令插入渲染命令流内。因此,可使PP命令缓冲器及后处理目标程序对图形驱动器(包括资源管理器)透明,且本发明可与未经修改的传统图形驱动器一起使用。应了解,可使用由GPU中的适当命令接口组件操作的除PP命令缓冲器以外的其他控制结构来控制后处理目标程序的行为。
其他实施例
如上文所述,本发明的实施例使GPU的执行核心中可用的大量处理能力能够用于以显示步调进行像素处理。此外,本文中所述的后处理目标程序的可编程性在可实施的显示后处理的量及类型方面提供比传统专用电路明显更大的灵活性。此外,本发明的某些实施例能够明显减少或消除传统GPU中专用后处理电路的量,从而在芯片面积及功耗方面具有优点。
尽管上文参照具体实施例来说明本发明,然而所属领域中的技术人员将知,也可存在诸多修改形式。例如,本发明并不仅限于任何特定执行核心或上下文管理架构。此外,尽管上文是说明后处理操作的具体实例,然而应了解,可在本发明的范畴内构建任何操作或操作组合,包括在本文中未明确提及的操作。
本文的说明提及了处理目标程序,例如渲染目标程序及后处理目标程序。在该上下文中,“目标程序”应理解为是指具有状态及行为方面的实体。所属领域的一般技术人员将知,可通过各种方式在多处理器中构建多个目标程序。例如,可构建具有上下文切换特征的单个处理引擎,以便能够根据需要切入及切出不同的目标程序。另一选择为,本文所述的任何或所有目标程序均可使用能够实现该目标程序的状态及行为方面的单独的处理引擎来构建。
此外,尽管上文参照具体硬件及软件组件来说明本发明,然而所属领域的技术人员将知,也可使用硬件及/或软件组件的不同组合,且被描述为在硬件中执行的特定操作也可在软件中执行,反之亦然。
可将包含本发明各种特征的计算机程序编码于各种计算机可读媒体上进行存储及/或传输;适合的媒体包括磁盘或磁带、例如CD(光盘)或DVD(数字通用光盘)等光学存储媒体、快闪存储器、以及适于通过符合各种协议的有线网络、光学网络及/或无线网络(包括因特网)进行传输的载波信号。以程序码进行编码的计算机可读媒体可使用兼容的装置一起进行包装或与其他装置分开提供(例如通过因特网下载)。
因此,尽管上文参照具体实施例来说明本发明,然而应了解,本发明旨在涵盖归属于上文权利要求书范围内的所有修改及等价形式。

Claims (26)

1.一种图形处理器,其包括:
多处理器,其经配置以执行多个目标程序,包括:
渲染目标程序,其经配置以执行第一程序指令序列以用于产生图像数据且将所述图像数据写入渲染缓冲器;及
后处理目标程序,其经配置以:
从所述渲染缓冲器中读取所述图像数据;
执行第二程序指令序列以用于从所述图像数据中产生像素数据帧;及
将所述像素数据帧写入显示缓冲器;及
扫描输出引擎,其经配置以将所产生的像素数据帧等时地传输至显示端口,并经耦接以周期性地将触发器信号传输至所述多处理器,
其中所述多处理器进一步经配置以操作所述后处理目标程序,以响应于所述触发器信号而产生新的像素数据帧。
2.如权利要求1所述的图形处理器,其中所述多处理器包括:
第一可编程处理引擎,其经配置以执行所述渲染目标程序;及
第二可编程处理引擎,其经配置以执行所述后处理目标程序。
3.如权利要求1所述的图形处理器,其中所述多处理器包括:
可切换上下文的处理核心;
上下文管理器,其经配置以保持对应于所述多个目标程序中每一者的相应上下文;及
仲裁单元,其经配置以控制从由所述上下文管理器保持的所述上下文中选择当前上下文,以便响应于所述触发器信号而激活对应于所述后处理目标程序的上下文。
4.根据权利要求1所述的图形处理器,其中所述多处理器包括仲裁单元,所述仲裁单元经配置以控制所述多个目标程序的执行,及
所述扫描输出引擎经配置以将所产生的像素数据帧等时地传输至显示端口,并经耦接以周期性地将触发器信号传输至所述仲裁单元;
其中所述仲裁单元进一步经配置以操作所述后处理目标程序,以响应于所述触发器信号而产生新的像素数据帧。
5.一种图形处理器,其包括:
可编程执行核心,其经配置以可在多个上下文之间进行切换,且进一步经配置以执行与所述多个上下文中被切换到的一者相关联的程序指令,
仲裁单元,其耦接至所述可编程执行核心并经配置以控制所述可编程执行核心在所述多个上下文中不同上下文之间的切换,及
扫描输出引擎,其经配置以将所产生的像素数据帧等时地传输至显示端口,并经耦接以将触发器信号传输至所述仲裁单元,
其中所述多个上下文包括:
渲染上下文,其具有与其相关联的第一程序指令序列以用于产生图像数据;及
后处理上下文,其具有与其相关联的第二程序指令序列以用于从所述图像数据中产生像素数据帧;及
其中所述仲裁单元进一步经配置以响应于所述触发器信号而将所述可编程执行核心切换至所述后处理上下文。
6.如权利要求5所述的图形处理器,其中所述扫描输出引擎进一步经配置以每一帧传输所述触发器信号一次。
7.如权利要求6所述的图形处理器,其中所述扫描输出引擎进一步经配置以使所述触发器信号具有与帧结尾事件固定的时间关系。
8.如权利要求5所述的图形处理器,其中所述仲裁单元进一步经配置以将所述可编程执行核心维持在所述后处理上下文中,直至在所述第二程序指令序列中检测到帧完成事件为止,且此后将所述可编程执行核心切换至所述渲染上下文。
9.如权利要求8所述的图形处理器,其中所述帧完成事件对应于在所述第二程序指令序列中出现瞄准所述第二程序指令序列的起始点的无条件跳转指令。
10.如权利要求5所述的图形处理器,其中所述第一程序指令序列进一步包括用于选择多个图像缓冲器中的一者并将所述图像数据写入至所述所选图像缓冲器的指令。
11.如权利要求10所述的图形处理器,其中所述第二程序指令序列进一步包括用于从所述多个图像缓冲器中的一者或一者以上读取所述图像数据的指令。
12.如权利要求11所述的图形处理器,其中:
所述第一程序指令序列进一步包括用于将所述所选图像缓冲器的索引值写入至索引位置内的指令,其中用于写入所述索引值的所述指令是在执行用于将所述图像数据写入至所述所选图像缓冲器的所述指令之后执行;及
所述第二程序指令序列进一步包括用于从所述索引位置读取所述索引值的指令。
13.如权利要求12所述的图形处理器,其中所述第二程序指令序列进一步包括以从所述索引位置读取的所述索引值是否不同于先前从所述索引位置读取的旧索引值为条件的至少一个指令。
14.如权利要求13所述的图形处理器,其中所述至少一个指令包括用于释放所述多个图像缓冲器中的一者以供所述渲染上下文随后使用的指令。
15.如权利要求5所述的图形处理器,其中所述第二程序指令序列包括用于选择多个帧缓冲器中的一者并将帧的像素数据写入至所述所选帧缓冲器的指令。
16.如权利要求15所述的图形处理器,其中:
所述扫描输出引擎进一步经配置以从第一位置读取显示索引值,所述显示索引值标识所述多个帧缓冲器中的一者,并从所述所标识的帧缓冲器读取帧的像素数据;及
所述第二程序指令序列进一步包括用于在完成将所述帧的像素数据写入至所述所选帧缓冲器之后将对应于所述所选帧缓冲器的所述显示索引值写入至所述第一位置的指令。
17.根据权利要求5所述的图形处理器,其中采用所述可编程执行核心的同一电路来执行所述渲染上下文和所述后处理上下文。
18.一种图形处理系统,其包括:
多个图像缓冲器,其每一者经配置以存储图像的片段数据;
多个帧缓冲器,其每一者经配置以存储帧的像素数据;
多处理器,其包括:
可编程执行核心,其经配置以可在多个上下文之间进行切换,以使所述可编程执行核心执行与所述多个上下文中被切换到的一者相关联的程序指令;及
仲裁单元,其耦接至所述可编程执行核心,并经配置以控制所述可编程执行核心在所述多个上下文中的不同上下文之间的切换,及
扫描输出引擎,其经配置以将像素数据帧从所述帧缓冲器等时地传输至显示端口,并经耦接以将触发器信号周期性地传输至所述多处理器的所述仲裁单元,其中所述多个上下文包括:
渲染上下文,其具有与其相关联的第一程序指令序列,以用于产生多个图像的片段数据并将每一图像的所述片段数据写入至所述图像缓冲器中的一者;及
后处理上下文,其具有与其相关联的第二程序指令序列,以用于从所述图像缓冲器中的所述片段数据中产生像素数据帧并将所述帧的所述像素数据写入至所述帧缓冲器中的一者;及
其中所述仲裁单元进一步经配置以响应于所述触发器信号而将所述可编程执行核心切换至所述后处理上下文。
19.一种用于产生图像的方法,所述方法包括:
在处理器的共享执行核心中操作渲染目标程序,所述渲染目标程序响应于第一程序指令序列而产生图像的片段数据;
与操作所述渲染目标程序并行地操作扫描输出引擎,以将像素数据帧等时地递送至显示装置,其中所述扫描输出引擎周期性地产生触发器信号;及
响应于所述触发器信号,在所述处理器的共享执行核心中操作后处理目标程序,所述后处理目标程序响应于第二程序指令序列而从一个或一个以上图像的所述片段数据中产生新的像素数据帧,所述新的像素数据帧可供所述扫描输出引擎使用。
20.如权利要求19所述的方法,其中所述触发器信号具有与帧结尾事件固定的时间关系。
21.如权利要求19所述的方法,其中在所述后处理目标程序的操作期间中止所述渲染目标程序的操作,并在所述后处理目标程序已完成所述新的像素数据帧的产生之后重新开始所述渲染目标程序的操作。
22.如权利要求19所述的方法,其中所述第二程序指令序列包括用于对图像的所述片段数据进行下降过滤的指令。
23.如权利要求19所述的方法,其中所述第二程序指令序列包括用于对图像的所述片段数据进行上升过滤的指令。
24.如权利要求19所述的方法,其中所述第二程序指令序列包括用于为所述帧的每一像素计算LCD过激励值的指令。
25.如权利要求19所述的方法,其中所述第二程序指令序列包括用于使用两个或两个以上不同图像的片段数据来形成合成图像的指令。
26.如权利要求19所述的方法,其中所述第二程序指令序列包括用于将所述图像映射至表面上的指令。
CN2005800433755A 2004-12-20 2005-12-14 图形处理器,图形处理系统及产生图像的方法 Active CN101080698B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/019,414 2004-12-20
US11/019,414 US7586492B2 (en) 2004-12-20 2004-12-20 Real-time display post-processing using programmable hardware
PCT/US2005/045834 WO2006068985A2 (en) 2004-12-20 2005-12-14 Real-time display post-processing using programmable hardware

Publications (2)

Publication Number Publication Date
CN101080698A CN101080698A (zh) 2007-11-28
CN101080698B true CN101080698B (zh) 2010-08-11

Family

ID=36595080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800433755A Active CN101080698B (zh) 2004-12-20 2005-12-14 图形处理器,图形处理系统及产生图像的方法

Country Status (6)

Country Link
US (1) US7586492B2 (zh)
JP (1) JP4620129B2 (zh)
KR (2) KR100902973B1 (zh)
CN (1) CN101080698B (zh)
TW (1) TWI406185B (zh)
WO (1) WO2006068985A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557312A (zh) * 2015-09-24 2017-04-05 瑞萨电子株式会社 程序开发支援装置以及程序开发支援软件

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963348B2 (en) 2002-05-31 2005-11-08 Nvidia Corporation Method and apparatus for display image adjustment
JP4260734B2 (ja) * 2004-12-21 2009-04-30 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、ラスタライザ、および描画処理方法
US20060282604A1 (en) * 2005-05-27 2006-12-14 Ati Technologies, Inc. Methods and apparatus for processing graphics data using multiple processing circuits
US20070038939A1 (en) * 2005-07-11 2007-02-15 Challen Richard F Display servers and systems and methods of graphical display
US7463263B2 (en) * 2005-07-15 2008-12-09 Sap Portals Israel Ltd. Declarative specification of model visualizations
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US7397478B2 (en) * 2005-09-29 2008-07-08 Intel Corporation Various apparatuses and methods for switching between buffers using a video frame buffer flip queue
US8466859B1 (en) * 2005-12-06 2013-06-18 Nvidia Corporation Display illumination response time compensation system and method
WO2007095127A1 (en) 2006-02-10 2007-08-23 Qualcomm Mems Technologies, Inc. Method and system for updating of displays showing deterministic content
US7882380B2 (en) * 2006-04-20 2011-02-01 Nvidia Corporation Work based clock management for display sub-system
US8952974B2 (en) * 2006-04-20 2015-02-10 Cisco Technology, Inc. Latency reduction in a display device
US8130227B2 (en) * 2006-05-12 2012-03-06 Nvidia Corporation Distributed antialiasing in a multiprocessor graphics system
US7937606B1 (en) 2006-05-18 2011-05-03 Nvidia Corporation Shadow unit for shadowing circuit status
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
SG140508A1 (en) * 2006-08-31 2008-03-28 St Microelectronics Asia Multimode filter for de-blocking and de-ringing
US7876313B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Graphics controller, display controller and method for compensating for low response time in displays
JP2008098911A (ja) * 2006-10-11 2008-04-24 Sony Corp 画像処理装置および方法、並びにプログラム
CN101523481B (zh) * 2006-10-13 2012-05-30 飞思卡尔半导体公司 用于使显示具有不同帧速率的视频数据的窗口迭加的图像处理设备
US8269782B2 (en) * 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
US8149242B2 (en) * 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
JP4968778B2 (ja) * 2006-11-27 2012-07-04 ルネサスエレクトロニクス株式会社 表示制御用半導体集積回路
US8134567B1 (en) * 2007-11-06 2012-03-13 Nvidia Corporation Active raster composition and error checking in hardware
US7999815B1 (en) * 2007-11-06 2011-08-16 Nvdia Corporation Active raster composition and error checking in hardware
US9292069B1 (en) * 2007-11-12 2016-03-22 Nvidia Corporation System and method for controlling mode switches in hardware
US8826294B2 (en) 2007-12-26 2014-09-02 Advanced Micro Devices, Inc. Efficient state management system
US9418171B2 (en) 2008-03-04 2016-08-16 Apple Inc. Acceleration of rendering of web-based content
US8477143B2 (en) 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
KR100948510B1 (ko) 2008-04-21 2010-03-23 주식회사 코아로직 하드웨어 방식의 벡터 그래픽 가속기, 그 가속기를 포함한어플리케이션 프로세서 및 단말기, 및 그 프로세서에서그래픽 가속방법
US8578192B2 (en) 2008-06-30 2013-11-05 Intel Corporation Power efficient high frequency display with motion blur mitigation
US8319780B2 (en) * 2008-07-30 2012-11-27 Nvidia Corporation System, method, and computer program product for synchronizing operation of a first graphics processor and a second graphics processor in order to secure communication therebetween
US8373708B2 (en) * 2008-07-30 2013-02-12 Nvidia Corporation Video processing system, method, and computer program product for encrypting communications between a plurality of graphics processors
US20100141664A1 (en) * 2008-12-08 2010-06-10 Rawson Andrew R Efficient GPU Context Save And Restore For Hosted Graphics
KR102057881B1 (ko) * 2009-02-06 2019-12-20 가부시키가이샤 한도오따이 에네루기 켄큐쇼 표시 장치 구동 방법
US8243088B2 (en) * 2009-02-26 2012-08-14 Presagis Two dimensional memory access controller
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8405666B2 (en) 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
GB0922126D0 (en) * 2009-12-17 2010-02-03 Advanced Risc Mach Ltd Graphics processing systems
US8730251B2 (en) * 2010-06-07 2014-05-20 Apple Inc. Switching video streams for a display without a visible interruption
CN101976183B (zh) * 2010-09-27 2012-02-22 广东威创视讯科技股份有限公司 一种多窗口图像同时更新时图像更新的方法及装置
US9092873B2 (en) * 2011-02-03 2015-07-28 L-3 Communications Corporation Rasterizer packet generator for use in graphics processor
US8640047B2 (en) * 2011-06-01 2014-01-28 Micorsoft Corporation Asynchronous handling of a user interface manipulation
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
CN103024404A (zh) * 2011-09-23 2013-04-03 华晶科技股份有限公司 处理影像旋转的方法与装置
WO2013048532A1 (en) 2011-10-01 2013-04-04 Intel Corporation Using a graphics engine to process print requests
US9443279B2 (en) * 2011-12-26 2016-09-13 Intel Corporation Direct link synchronization communication between co-processors
US9626216B2 (en) * 2012-05-09 2017-04-18 Nvidia Corporation Graphics processing unit sharing between many applications
CN102810294A (zh) * 2012-08-01 2012-12-05 京东方科技集团股份有限公司 一种显示方法、装置及系统
TWI540466B (zh) 2012-09-06 2016-07-01 財團法人工業技術研究院 可摺疊式顯示器及其影像處理方法
US8797340B2 (en) * 2012-10-02 2014-08-05 Nvidia Corporation System, method, and computer program product for modifying a pixel value as a function of a display duration estimate
DE102013219581B4 (de) * 2012-10-02 2016-11-24 Nvidia Corporation Apparat, Verfahren und Computer-Programm-Produkt zum Bereitstellen einer dynamischen Anzeigeauffrischung
US8937623B2 (en) 2012-10-15 2015-01-20 Apple Inc. Page flipping with backend scaling at high resolutions
US9135081B2 (en) * 2012-10-26 2015-09-15 Nvidia Corporation Work-queue-based graphics processing unit work creation
US9489245B2 (en) * 2012-10-26 2016-11-08 Nvidia Corporation Work-queue-based graphics processing unit work creation
US20140184629A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Method and apparatus for synchronizing a lower bandwidth graphics processor with a higher bandwidth display using framelock signals
US9086813B2 (en) * 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
US9646412B1 (en) * 2013-07-19 2017-05-09 Dassault Systemes Solidworks Corporation Pre-sorted order independent transparency
US9940686B2 (en) * 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
US20180197509A1 (en) * 2015-08-11 2018-07-12 Sony Corporation Information processing device, information processing method, and program
US10068554B2 (en) 2016-08-02 2018-09-04 Qualcomm Incorporated Systems and methods for conserving power in refreshing a display panel
KR102606693B1 (ko) * 2016-08-23 2023-11-28 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 제어 방법
US10147227B2 (en) * 2017-02-17 2018-12-04 Microsoft Technology Licensing, Llc Variable rate shading
US10115223B2 (en) * 2017-04-01 2018-10-30 Intel Corporation Graphics apparatus including a parallelized macro-pipeline
CN107220019B (zh) * 2017-05-15 2021-01-08 固安县朔程燃气有限公司 一种基于动态vsync信号的渲染方法、移动终端及存储介质
JP6612292B2 (ja) * 2017-05-17 2019-11-27 株式会社ソニー・インタラクティブエンタテインメント 変換システム、映像出力装置及び変換方法
US11049211B2 (en) * 2017-07-06 2021-06-29 Channel One Holdings Inc. Methods and system for asynchronously buffering rendering by a graphics processing unit
US10445694B2 (en) 2017-08-07 2019-10-15 Standard Cognition, Corp. Realtime inventory tracking using deep learning
US10650545B2 (en) 2017-08-07 2020-05-12 Standard Cognition, Corp. Systems and methods to check-in shoppers in a cashier-less store
US11250376B2 (en) 2017-08-07 2022-02-15 Standard Cognition, Corp Product correlation analysis using deep learning
US10474988B2 (en) 2017-08-07 2019-11-12 Standard Cognition, Corp. Predicting inventory events using foreground/background processing
US11023850B2 (en) 2017-08-07 2021-06-01 Standard Cognition, Corp. Realtime inventory location management using deep learning
US11200692B2 (en) 2017-08-07 2021-12-14 Standard Cognition, Corp Systems and methods to check-in shoppers in a cashier-less store
US10474991B2 (en) 2017-08-07 2019-11-12 Standard Cognition, Corp. Deep learning-based store realograms
US11232687B2 (en) 2017-08-07 2022-01-25 Standard Cognition, Corp Deep learning-based shopper statuses in a cashier-less store
US10853965B2 (en) 2017-08-07 2020-12-01 Standard Cognition, Corp Directional impression analysis using deep learning
US11232531B2 (en) * 2017-08-29 2022-01-25 Intel Corporation Method and apparatus for efficient loop processing in a graphics hardware front end
US10957020B2 (en) * 2017-12-04 2021-03-23 Nvidia Corporation Systems and methods for frame time smoothing based on modified animation advancement and use of post render queues
CN108156520B (zh) * 2017-12-29 2020-08-25 珠海市君天电子科技有限公司 视频播放方法、装置、电子设备及存储介质
US10636392B2 (en) * 2018-05-02 2020-04-28 Apple Inc. Electronic display partial image frame update systems and methods
US10269167B1 (en) * 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
CA3044477A1 (en) 2018-06-01 2019-12-01 Gregory Szober Display buffering methods and systems
JP6499364B1 (ja) * 2018-09-26 2019-04-10 株式会社Cygames 情報処理プログラム、端末装置、及び情報処理方法
CN111400024B (zh) * 2019-01-03 2023-10-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems
US11232575B2 (en) 2019-04-18 2022-01-25 Standard Cognition, Corp Systems and methods for deep learning-based subject persistence
CN112925592A (zh) * 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
US11303853B2 (en) 2020-06-26 2022-04-12 Standard Cognition, Corp. Systems and methods for automated design of camera placement and cameras arrangements for autonomous checkout
US11361468B2 (en) 2020-06-26 2022-06-14 Standard Cognition, Corp. Systems and methods for automated recalibration of sensors for autonomous checkout
TWI756771B (zh) * 2020-08-05 2022-03-01 偉詮電子股份有限公司 影像轉換方法
CN115225615B (zh) * 2022-06-30 2024-02-23 如你所视(北京)科技有限公司 虚幻引擎像素流送方法及装置
CN115223516B (zh) * 2022-09-20 2022-12-13 深圳市优奕视界有限公司 图形渲染与lcd驱动一体化芯片及相关方法和设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546530A (en) * 1990-11-30 1996-08-13 Vpl Research, Inc. Method and apparatus for rendering graphical images using parallel processing
US6243107B1 (en) * 1998-08-10 2001-06-05 3D Labs Inc., Ltd. Optimization of a graphics processor system when rendering images
US6452595B1 (en) * 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
US6731288B2 (en) * 2002-03-01 2004-05-04 3Dlabs Inc., Ltd. Graphics engine with isochronous context switching
US6778188B2 (en) * 2002-02-28 2004-08-17 Sun Microsystems, Inc. Reconfigurable hardware filter for texture mapping and image processing
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2575885B1 (fr) 1985-01-04 1987-02-20 Thomson Csf Renforcateur de contraste pour images video
GB2181318B (en) 1985-10-04 1989-12-28 Sony Corp Two-dimensional finite impulse response filters
FR2680292B1 (fr) 1991-08-09 1993-11-12 Sgs Thomson Microelectronics Sa Filtre bidimensionnel a reponse impulsionnelle finie.
JP3278525B2 (ja) 1994-02-28 2002-04-30 株式会社東芝 周波数データ変換装置およびメータ装置
JPH10187124A (ja) * 1996-12-24 1998-07-14 Sony Corp 描画装置および描画方法
EP1628479A3 (en) * 1997-03-12 2007-09-05 Matsushita Electric Industrial Co., Ltd. HDTV downconversion system
JP2002503855A (ja) 1998-02-17 2002-02-05 サン・マイクロシステムズ・インコーポレーテッド 可変解像度スーパーサンプリングによるグラフィックス・システム
US6188394B1 (en) 1998-08-28 2001-02-13 Ati Technologies, Inc. Method and apparatus for video graphics antialiasing
US6374279B1 (en) 1999-02-22 2002-04-16 Nvidia U.S. Investment Company System and method for increasing dual FIR filter efficiency
US6496160B1 (en) 1999-04-29 2002-12-17 Evans & Sutherland Computer Corporation Stroke to raster converter system
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6646688B1 (en) * 2000-11-10 2003-11-11 Koninklijke Philips Electronics N.V. High quality video and graphics pipeline
US6680739B1 (en) 2000-11-17 2004-01-20 Hewlett-Packard Development Company, L.P. Systems and methods for compositing graphical data
US6919900B2 (en) * 2001-03-23 2005-07-19 Microsoft Corporation Methods and systems for preparing graphics for display on a computing device
US7038690B2 (en) * 2001-03-23 2006-05-02 Microsoft Corporation Methods and systems for displaying animated graphics on a computing device
US6885374B2 (en) * 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
JP2003029713A (ja) * 2001-07-06 2003-01-31 Internatl Business Mach Corp <Ibm> 液晶表示装置、液晶ディスプレイ駆動回路、液晶ディスプレイの駆動方法、およびプログラム
EP1345168B1 (en) * 2002-03-12 2007-10-24 Sun Microsystems, Inc. Dynamically adjusting sample density and/or number of rendering passes in a graphics system
US6776186B2 (en) * 2002-06-07 2004-08-17 Machine Design Specialists, Inc. Dispensing tool for evacuating and charging a fluid system
US20050140688A1 (en) * 2003-12-29 2005-06-30 Kim Pallister Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546530A (en) * 1990-11-30 1996-08-13 Vpl Research, Inc. Method and apparatus for rendering graphical images using parallel processing
US6243107B1 (en) * 1998-08-10 2001-06-05 3D Labs Inc., Ltd. Optimization of a graphics processor system when rendering images
US6452595B1 (en) * 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统
US6778188B2 (en) * 2002-02-28 2004-08-17 Sun Microsystems, Inc. Reconfigurable hardware filter for texture mapping and image processing
US6731288B2 (en) * 2002-03-01 2004-05-04 3Dlabs Inc., Ltd. Graphics engine with isochronous context switching

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US 2003/0006949 A1,说明书第[0010]段.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557312A (zh) * 2015-09-24 2017-04-05 瑞萨电子株式会社 程序开发支援装置以及程序开发支援软件
CN106557312B (zh) * 2015-09-24 2021-07-09 瑞萨电子株式会社 程序开发支援装置以及程序开发支援软件

Also Published As

Publication number Publication date
KR20090045349A (ko) 2009-05-07
US20060132491A1 (en) 2006-06-22
JP2008524720A (ja) 2008-07-10
JP4620129B2 (ja) 2011-01-26
WO2006068985A3 (en) 2007-01-11
TWI406185B (zh) 2013-08-21
KR100902973B1 (ko) 2009-06-15
TW200632775A (en) 2006-09-16
WO2006068985A2 (en) 2006-06-29
CN101080698A (zh) 2007-11-28
KR20070091356A (ko) 2007-09-10
US7586492B2 (en) 2009-09-08

Similar Documents

Publication Publication Date Title
CN101080698B (zh) 图形处理器,图形处理系统及产生图像的方法
US5838334A (en) Memory and graphics controller which performs pointer-based display list video refresh operations
CN101548277B (zh) 多并行处理器的计算机图形系统
US6567091B2 (en) Video controller system with object display lists
US5701444A (en) Three-dimensional graphics subsystem with enhanced support for graphical user interface
US5936641A (en) Graphics hardware acceleration method, computer program, and system
US5649173A (en) Hardware architecture for image generation and manipulation
US7941645B1 (en) Isochronous pipelined processor with deterministic control
US7525547B1 (en) Programming multiple chips from a command buffer to process multiple images
US7629978B1 (en) Multichip rendering with state control
US20020135585A1 (en) Video controller system with screen caching
JPH0749676A (ja) フルカラー2次元グラフイツクスのためのグラフイツクスエンジン
JPS62288984A (ja) ビデオ表示装置
WO1999052093A1 (en) Video/graphics controller which performs pointer-based display list video refresh operations
JPH0727571B2 (ja) ラスタ走査表示装置及び図形データ転送方法
US8941669B1 (en) Split push buffer rendering for scalability
US4862155A (en) Graphic display system with secondary pixel image storage
US7545380B1 (en) Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
JP2003515766A (ja) ハンドヘルドlcd素子に高い色解像度を表示するための方法および装置
US6952217B1 (en) Graphics processing unit self-programming
US5321805A (en) Raster graphics engine for producing graphics on a display
US6172686B1 (en) Graphic processor and method for displaying a plurality of figures in motion with three dimensional overlay
US20190108037A1 (en) Pro-Active GPU Hardware Bootup
CN116670719A (zh) 一种图形处理方法、装置及电子设备
US20060184893A1 (en) Graphics controller providing for enhanced control of window animation

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