CN107743636B - 用于高效实时渲染预先不知道的图形的图形引擎和环境 - Google Patents

用于高效实时渲染预先不知道的图形的图形引擎和环境 Download PDF

Info

Publication number
CN107743636B
CN107743636B CN201680033140.6A CN201680033140A CN107743636B CN 107743636 B CN107743636 B CN 107743636B CN 201680033140 A CN201680033140 A CN 201680033140A CN 107743636 B CN107743636 B CN 107743636B
Authority
CN
China
Prior art keywords
statements
graphics
rendering
group
level
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
CN201680033140.6A
Other languages
English (en)
Other versions
CN107743636A (zh
Inventor
N·C·贝格曼
S·M·吉斯
A·M·潘格博恩
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of CN107743636A publication Critical patent/CN107743636A/zh
Application granted granted Critical
Publication of CN107743636B publication Critical patent/CN107743636B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本公开涉及图形系统的操作以及用于从应用程序输出起延伸到像素形式或其它形式的视觉内容呈现的图形系统的设计和/或操作的多种架构。一般来讲,本发明的多个实施方案设想了高层级图形框架,用于接收来自应用的图形请求。图形请求被高层级框架分析,并分选到命令语句分组中用于执行。命令语句被分选以导致下层硬件最有效的处理,并且分组利用便于硬件功能性的严密控制的低层级标准库而被分别提交给GPU。

Description

用于高效实时渲染预先不知道的图形的图形引擎和环境
背景技术
本文公开的发明涉及图形处理领域,并且非限制性地涉及将来自应用的图形请求提供给渲染或呈现硬件的软件操纵。
图形处理器单元(GPU)对于处理数据并行图形任务来说已经变得重要。开发者现在认识到非图形数据并行任务也可由GPU处理,从而利用其大规模并行能力。供应商和标准化组织已经创建了由于开发者编程交互的高层级而使图形数据并行任务更易于编程的应用编程接口(API)。然而还存在更靠近硬件并且一般通过应用高层级API的输出而被采用的低层级API(库/框架等)。换句话讲,高层级API一般只是准备程序代码用于对低层级API的应用。
图形处理的新情形使得能够实现速度和效率的高水平。然而,为了实现这些有益效果,一般需要自定义编程和其它机制。例如,渲染流水线的一个标准过程开始于应用进行对于当前屏幕图形导致改变的图形改变时。应用使用高层级框架/库来实现这个改变,并且从应用的角度看来,改变被提交给渲染服务或渲染服务器。高层级框架/库然后遍历屏幕图形,并发出绘图命令(可能对于低层级框架/库)以重新描绘屏幕的适当区部。因此,硬件被用于为屏幕创建新像素。然而,在将内容送交帧缓冲器之前常常可能使用若干渲染遍次。有时可使用多个渲染遍次以增量地将数据朝着其可显示形式移动。例如,效果可顺序地应用于相同图形元件–照明、阴影、反射、镜面光照等等。此外,可使用多个渲染遍次,用于创建单个帧的片断或子集以后续被组合形成这个完整帧。在任何情况下,使用多个渲染遍次都导致延迟,延迟可以是依赖于系统速度和图形复杂性和变化速率的因素。例如,在游戏应用中,图形的广度和复杂性可能是非常需要资源的。幸运的是,对于大多数游戏应用,可显示图形的范围大多是预先确定的。例如,游戏应用通常事先知道所有资产、状态向量和几何形状。换句话讲,当游戏加载或游戏等级加载时,应用通常知道游戏可能显示的可显示图形的基本范围。此外,即使考虑不知道所述基本范围的游戏,最通常也事先知道图形的大多数。对可显示图形的这个预先确定的知道就允许游戏应用预渲染图形片断,由此避免运行时–即在对于屏幕需要图形时的延迟问题。
遗憾的是,用于计算环境中普通显示的内容许多都不是预先知道或预先确定的。例如,普通用户界面动作、网页、甚至所存储的文档如PDF一般在其第一相关联图形请求之前对于图形系统是未知的。图形有时甚至对于适当的应用也是未知的(例如,Acrobat阅读器在用户打开文档之前并不知道该文档的内容)。此外,游戏应用是在有繁重图形考虑的情况下进行设计的,因此应用本身能帮助管理工作负荷并使用非标准图形工具和技术。
发明内容
本公开整体涉及计算机编程领域。更具体地,但并非限制性地,本公开涉及对于非预先知道或预先确定的图形的有效实时渲染。对于这些类型的图形资产,本发明的多个实施方案将渲染任务分成用于在图形硬件诸如GPU上执行的命令语句。为了在硬件上的有效处理,命令语句然后被分组。例如,每个分组可依赖于相同GPU状态向量,从而所有命令语句是通过GPU状态来进行组织。一旦命令语句被组织到分组中,每个分组就可被送交给硬件并被渲染到并非帧缓冲器的缓冲存储器中。最后,各种结果可被组合到帧缓冲器中用于显示。
本发明的一些实施方案设想了高层级图形框架,用于接收来自应用的图形请求。图形请求被高层级框架分析,并分选到命令语句的分组中用于执行。命令语句被分选以导致下层硬件最有效的处理,并且分组被分别提交给GPU。向GPU的提交可使用有利于硬件功能性的严密控制的低层级标准库。这样,可使用标准框架来渲染非预先确定的图形;并且渲染是以使CPU工作最小化(例如更少的GPU状态改变)、增加并行性和节省电力的方式来进行的。
附图说明
图1示出了可例如被用作最终用户机器或开发者机器的一种代表性计算机节点。
图2示出了可与本发明一个或多个实施方案相关联的一种示例性网络环境。
图3示出了一种示例性软件层和架构示意图。
图4A示出了一种示例性程序序列。
图4B和图4C示出了示例性系统架构。
图5A示出了一种示例性程序序列。
图5B、图5C和图5D示出了示例性系统架构。
图6示出了示例性过程。
具体实施方式
本公开涉及用于改进图形系统的操作的系统、方法和计算机可读介质。还涉及多种用于从应用程序开始并延伸到像素形式或其它形式的视觉内容呈现的图形系统的设计和/或操作的架构。一般来讲,本发明的多个实施方案设想对运行中图形程序操纵的重新组织。在一个或多个实施方案中,所述重新组织可使用命令缓冲器来将图形编程部分分组到用于有效执行的分组中。可以简单地通过避免系统或GPU状态改变和/或通过以防止CPU和其它系统硬件不必要工作的方式针对执行对分组排序来实现效率。
在以下描述中,为了解释的目的,阐述了很多具体细节以便提供对所公开构思的彻底理解。作为该描述的一部分,本公开的附图中的一些附图以框图形式表示结构和设备,以避免模糊所公开构思的新颖方面。为了清晰起见,未对实际的具体实施的所有特征进行描述。此外,本公开中所使用的语言主要是为了可读性和指导性目的而选择的,并且可能并未被选择为描述或限定发明主题,从而可能必需凭借权利要求来确定此类发明主题。在本公开中提到“一个实施方案”或“实施方案”意指结合本发明所述的特定特征、结构或特性被包括在所公开主题的至少一个实施方案中,并且多次提到“一个实施方案”或“实施方案”不应被理解为必然地全部涉及相同的实施方案。
应当理解,在任何实际具体实施的开发中(如在任何软件和/或硬件开发项目中那样),必须要作出许多决策以实现开发者的特定目标(例如,符合与系统和商务相关的约束条件),并且这些目标在不同具体实施之间可能是不同的。还应当理解,此类开发努力可能是复杂且耗时的,但是尽管如此,对于受益于本公开的在设计和实施计算系统和/或图形系统中的普通技术人员而言会是一项常规任务。
示例性硬件和软件
本文所述的发明实施方案可在所有类型的设备中以及相对于所有类型的设备有所涉及和使用,所述设备包括单处理器和多处理器计算系统和包含单处理或多处理计算系统的直立式设备(例如相机、游戏系统、电器等)。本文中的讨论是参考可作为软件开发系统或最终用户系统进行讨论的一种常见计算配置来进行的。这个常见计算配置可具有包括一个或多个微处理器的CPU资源。本论述仅用于关于样本实施方案的举例说明,并非意图要将本发明的应用限制到所公开的硬件。具有其它(现在或未来)已知或常见硬件配置的其它系统也完全被设想和预期。在考虑上述声明的情况下,以下讨论一种典型的硬件和软件操作环境。硬件配置可例如存在于服务器、工作站、膝上型计算机、平板计算机、台式计算机、游戏平台(不管是否是便携式的)、电视机、娱乐系统、智能电话、电话、或任何其它计算设备(不管是移动式的还是固定式的)中。
参见图1,所公开实施方案可由代表性计算机系统100来执行。例如,代表性计算机系统100可充当软件开发平台或最终用户设备。系统100可在任何类型的设备中实施,诸如通用计算机系统、电视机、机顶盒、媒体播放器、多媒体娱乐系统、图像处理工作站、手持式设备、或可与本文所述显示器或展示设备耦接或者可包含本文所述显示器或展示设备的任何设备。计算机系统100可包括一个或多个处理器105、存储器110(110A和110B)、一个或多个存储设备115、以及图形硬件120。计算机系统100还可具有设备传感器125,设备传感器可包括以下中的一者或多者:深度传感器(诸如深度相机)、一个或多个3D深度传感器、成像设备(诸如固定和/或支持视频的图像捕捉单元)、RGB传感器、接近传感器、环境光传感器、加速度计、陀螺仪、任何类型的静止或视频相机、LIDAR设备、SONAR设备、麦克风、CCD(或其它图像传感器)、红外传感器、温度计等。这些及其它传感器可与适当编程一起结合一个或多个GPU、DSP或传统微处理器工作,使得传感器输出可被正确地解释和/或组合并解释。
返回图1,系统100还可包括通信接口130、用户接口适配器135、和显示器适配器140,所有这些可经由系统总线或背板145耦接。存储器110可包括处理器105和图形硬件120使用的一个或多个不同类型的介质(例如固态、DRAM、光学、磁等)。例如,存储器110可包括存储器高速缓存、只读存储器(ROM)、和/或随机存取存储器(RAM)。存储装置115可包括一个或多个非暂态存储介质,包括例如磁盘(固定盘、软盘和可移除盘)和磁带、光学介质(诸如CD-ROM和数字视频光盘(DVD))、以及半导体存储器设备(诸如电可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM))。存储器110和存储装置115可用于保持媒体(例如音频、图像、和视频文件)、偏好信息、设备配置文件信息、被组织成一个或多个模块且以任何期望的计算机编程语言编写的计算机程序指令、和任何其它合适的数据。当被处理器105和/或图形硬件120(也为处理器)执行时,此类计算机程序代码可实施本文所述方法或过程中的一者或多者。通信接口130可包括基于半导体的电路,并且可被用于将计算机系统100连接到一个或多个网络。示例性网络包括但不限于:本地网络诸如USB网络;商业局域网;和广域网诸如互联网;并且可使用任何合适技术(例如有线或无线技术)。可实施的通信技术包括基于蜂窝的通信(例如LTE、CDMA、GSM、HSDPA等)或其它通信(以太网、WiFi、Bluetooth、USB、Thunderbolt、Firewire等)。用户接口适配器135可用于连接键盘150、麦克风155、指针设备160、扬声器165、和其它用户接口设备诸如触摸板和/或触摸屏(未示出)。显示器适配器140可用于通过帧缓冲器(未示出)连接一个或多个显示单元170。
处理器105可执行实施或控制由系统100所执行的多种功能的操作(例如评估、转换、和包括图形程序编译的图形工作)所必要的指令。处理器105可例如驱动显示器170并可从用户接口适配器135或系统所实施的任何其它用户接口接收用户输入。用户接口135例如可呈现多种形式诸如按钮、小键盘、拨号盘、点击轮、键盘、显示屏和/或触摸屏。用户界面项目或桌面小程序可在用户与界面交互时由图形硬件120实时地生成。处理器105可以是任何类型的计算设备,诸如单独或与GPU结合工作的一个或多个微处理器、DSP、和/或片上系统设备诸如在移动设备中找到的那些。处理器105可包括一个或多个专用GPU或图形子系统,其接受程序指令以生成或改变显示信息诸如像素。此外,处理器105可基于精简指令集计算机(RISC)或复杂指令集计算机(CISC)架构或任何其它合适的架构,并且可包括一个或多个处理核心。图形硬件120可以是用于处理图形和/或辅助处理器105执行计算任务的专用计算硬件。在一些实施方案中,图形硬件120可包括CPU集成的图形和/或一个或多个可编程GPU。
本发明的各种实施方案可使用传感器诸如相机。相机及类似传感器系统可包括自动对焦系统,用于准确地捕捉最终用于解释用户意图或命令的视频或图像数据。由于用户的运动可基于所捕捉图像中小区域(例如手部、手指、面部、嘴、额头等)中的细微活动,所以自动对焦系统可用于在图像的多个区域上分别对焦以便获取更好的信息。
返回图1,传感器125可捕捉情景和/或环境现象,诸如时间;位置信息;设备相对于光、重力和磁北极的状态;甚至还有静态和视频图像。此外,也可使用网络能访问的信息诸如天气信息作为情景的一部分。所捕捉的所有情景和环境现象可用于为用户活动或关于用户活动的信息提供情景。例如,在获取用户的手势或表情或情绪中,情景信息可被用作为分析的一部分。系统100可对环境和情景事件进行反应,并通过使用图形硬件120在显示系统上实时地反映响应。
来自传感器125的输出可至少部分地由处理器105和/或图形硬件120、和/或结合在系统100内或没有系统100的专用图像处理单元来处理。如此捕捉的信息可被存储在存储器110和/或存储装置115和/或在所附接的网络上能访问的任何存储装置中。存储器110可包括由处理器105、图形硬件120和传感器125用以执行设备功能的一个或多个不同类型的介质。存储装置115可存储数据,诸如媒体(例如音频、图像和视频文件);媒体的元数据;计算机程序指令;和其它软件;包括数据库应用(例如存储角色帧的数据库)、偏好信息、设备配置文件信息和任何其它合适的数据。存储器110和存储装置115可用于保持经编译形式的或者以任何期望的计算机编程语言编写的被组织成一个或多个模块的计算机程序指令或代码。在由例如处理器105执行时,此类计算机程序代码可实施本文所述行为或功能中的一者或多者(例如实施图形框架和/或有利于图形渲染功能)。
图2示出了示例性网络架构200,在该网络架构内可实施所公开的技术并且所公开的硬件可位于该网络架构内。这个示例性网络200可包括多个网络205(即205A、205B和205C),其中每一个可采用任何形式,包括但不限于局域网(LAN)或广域网(WAN),诸如互联网。另外,网络250可使用任何期望的技术(有线、无线或其组合)和协议(例如传输控制协议TCP)。能够操作服务器应用诸如数据库并且还能够通过网络205进行通信的数据服务器计算机210(即210A和210B)耦接到网络205。使用服务器计算机的一个实施方案可涉及一个或多个中央系统的操作以处理图形信息并将经处理的信息发布到网络上的节点。
可采用任何智能电话、游戏系统、平板计算机、计算机、机顶盒、娱乐设备/系统、电视机、电话、通信设备或智能机器(包括嵌入式系统)的形式的客户端计算机215(即215A、215B和215C)也可耦接到网络205和/或数据服务器计算机210。在一些实施方案中,网络架构210还可包括网络打印机诸如打印机220和可用于存储多媒体项目或本文提及的其它数据的存储系统诸如225。为了便于不同网络设备(例如数据服务器210、最终用户计算机215、网络打印机220和存储系统225)之间的通信,至少一个网关或路由器230可任选地耦接在它们之间。此外,为了便于此类通信,利用网络的每个设备可包括网络适配器电路和相关软件。例如,如果期望以太网网络用于通信,则每个参与设备必须具有以太网适配器或支持以太网的嵌入式IC。另外,所述设备可带有用于其可能参与的任何网络(包括但不限于PAN、LAN、WAN、和蜂窝网络)的网络适配器。
如上所述,本文公开的发明的实施方案包括软件。就此,提供常见计算软件架构的描述,如图3中的层图中所表述。与硬件示例类似,这里讨论的软件架构并不旨在以任何方式是排他性的,相反是例示性的。这对于层类型图尤其如此,软件开发者往往会以略微不同的方式对层类型图进行表述。在这种情况下,描述开始于层从对硬件进行例示的基底硬件层395开始,硬件可包括CPU和GPU或其它处理和/或计算机硬件。在硬件层上方是O/S内核层390,其将一个示例示为O/S内核345,O/S内核是可执行存储器管理、设备管理和系统调用(常常是硬件驱动器的权限)的内核软件。这里采用的标记一般性地旨在说明层中所示的软件元素使用来自下面的层的资源并为上面的层提供服务。然而在实践中,特定软件元素的所有部件可能并不完全按该方式作用。
返回图3,层385是由O/S服务350举例说明的O/S服务层。O/S服务可提供受保护环境中的核心O/S功能。此外,层385中所示的O/S服务可包括用于OpenGL 351、Metal 352、软件光线跟踪器353和纯软件光栅器354的框架。这些具体示例都与图形和/或图形库有关,并且被选择以用于说明与图形处理有关的本文多个实施方案的话题。这些具体示例还表示可在框架的较低等级中操作的图形框架/库,从而开发者可使用着色和图形基元和/或获得对图形硬件的相当紧密耦接的控制。此外,层385中所述的具体示例可将其工作产品直接传递给硬件或硬件驱动器,硬件驱动器是通常紧密耦接到硬件的软件。
再次参见图3,OpenGL 351表示熟知的用于图形渲染(包括2D和3D图形)的库和应用编程接口的示例。Metal 352还表示所发布的图形库和框架,但其是比OpenGL 351低的层级,从而支持组织、处理和提交图形和计算命令以及管理那些命令的相关联数据和资源的细粒度低层级控制。软件光线跟踪器353是用于基于跟踪图像平面中穿过像素的光路径的过程来生成图像信息的软件。纯软件光栅器354一般是指用于在没有专门的图形硬件(例如只利用CPU)的情况下生成图形信息诸如像素的软件。在O/S服务层385内示出的这些库或框架仅仅是示例性的,并且旨在用于展示层的一般层级以及其在样本布置中如何与其它软件有关(例如内核操作通常在下面,并且高层级应用服务360通常在上面)。此外,可能有用的是要注意,Metal 352表示本领域开发人员已知的Apple Inc.的所发布框架/库。此外,OpenGL 351可表示Apple Inc.所发布软件的当前版本中存在的框架/库。
在O/S服务层385上方有应用服务层380,其包括Sprite Kit 361、Scene Kit 362、核心动画363和核心图形364。O/S服务层表示通常被应用程序直接访问的高层级框架。在本公开的一些实施方案中,O/S服务层可包括图形有关的框架,其是高层级,因为其对下面的图形库(诸如参考层385讨论的那些)是不可知的。在此类实施方案中,这些高层级图形框架意在以用户/开发者更加友好的方式为开发者提供对图形功能性的访问并允许开发者免除与着色和图形基元的工作。以举例的方式,Sprite Kit 361是Apple Inc.提供的图形渲染和动画基础结构。Sprite Kit 361可用于对纹理图像或“子图形”动画化。Scene Kit 362是来自Apple Inc.的3D渲染框架,其支持在比具有类似能力的框架诸如OpenGL高的层级导入、操纵和渲染3D资产。核心动画363是Apple Inc.提供的图形渲染和动画基础结构。核心动画363可用于对视图以及应用的其它视觉元素动画化。核心图形364是来自Apple Inc.的二维绘图引擎。核心图形365提供用于应用的2D渲染。
在应用服务层380上方有应用层375,其可包括任何类型的应用程序。以举例的方式,图3示出了三个特定应用:照片371(照片管理、编辑和分享程序)、Quicken 372(财务管理程序)、iMovie 373(电影制作和分享程序)。应用层375还示出了两个通用应用370和374,其表示存在任何其它应用可与本文所公开的本发明实施方案交互或可作为本文所公开的本发明实施方案的一部分。一般来讲,本发明的实施方案采用生成可显示/可查看内容的应用和/或与其交互。
在评估O/S服务层385和应用服务层380中,可能有用的是认识到不同框架具有较高或较低层级应用程序接口,即使框架被表示在图3示意图的相同层中也是如此。图3的例示用于提供一般性指导以及提出后面可能要讨论的示例性框架。此外,本发明的一些实施方案可表明,层380中的框架利用层385中表示的库。因此,图3提供用于这些示例的知识强化。重要地,图3并非意图限制可以任何特定方式或在任何特定实施方案中使用的框架或库的类型。一般来讲,本公开的多个实施方案提出硬件340和应用375层之间的层中的软件活动和架构,通过C100来图示。
再次参考图3,一些实施方案可提出使用较高层级框架,诸如应用服务层380中所示的那些。高层级框架可对来自应用程序的特定图形请求进行智能分析。高层级框架然后可选择特定硬件和/或特定库或低层级框架来帮助处理请求。在这些实施方案中,智能分析可提供对于图形请求向下沿循到硬件的最佳路径的运行时决断。
非预先确定的内容的实时显示
如上所述,如果可显示内容是预先确定的,如在许多游戏程序的情况那样,则有显著的机会用于允许在运行时使用更复杂和资源强度高的图形的预渲染技术和管理。然而,如果可显示内容对于图形系统和/或对于起源应用程序不是预先知道的,则有有限延迟可用于处理图形请求和将结果送交屏幕。参考图4A,在大多数系统中定期地进行或接收实时图形请求440,从而便于使用显示元件。从其是对于直接显示进行的、而不是对于存储在存储器或纹理中或对于后续作为更大布置的一部分单独显示进行的这个意义上来说,请求是实时的。考虑到实时请求的实质,处理445所花费的任何时间都引入进行请求的应用可预期或不可预期的延迟。例如,如果屏幕刷新率是60帧/秒,则希望图形比每秒60次(大约每16.67毫秒)更快地生成新的帧。所述定时在能以144次/秒刷新屏幕的高性能系统上被进一步挤压。因此,参见图4B,实时图形显示留出非常少量的时间用于行经从图形请求到显示的典型流程。在一种典型情况下,在这个少量时间中:应用405可发出请求;请求可被高层级框架410处理,所述高层级框架可与应用所提供的数据交互并且可利用低层级框架415管理图形向屏幕的移动;最后,低层级框架415可将请求传递给硬件驱动器420,然后硬件(例如GPU)可处理数据并且可填充帧缓冲器。当然,存在多个到显示元件的软件路径包括层和图4中未图示的其它框架,但一般性软件架构选项在本领域中是公知的。
参考图4C,示出了图形处理和为帧缓冲器425生成像素的另一概念视图。项目430代表场景图,其是代表用于一定量的图形的渲染任务的逻辑数据结构。场景图可具有根431和子视图诸如432和430A。如图4所示,子视图可具有其自己的子视图,并且组织可以该方式继续嵌套。逻辑数据结构如场景图是一种表示图形的方便有效方式,诸如帧缓冲器425的状态或帧缓冲器425的所期望未来状态。由于应用软件通常在高层级处理图形,所以屏幕图形是表达所期望显示输出的常见方式。
如上所述,当图形对于图形系统不是预先知道的时,通常没有预渲染被执行并且几乎没有对渲染任务的组织超出屏幕图形中表示的。例如,当图形处理软件遍历渲染树430时,每个节点(或节点内的可渲染项目)可按相遇次序来渲染。因此,例如,节点430A可先于节点430B被渲染,节点430B可先于节点430C被渲染(需注意,实际上,多个具体实施可实际开始于叶节点并往回向根工作)。通过如场景图的次序所示来对渲染遍次排序,第一节点可非常快地被渲染,但后续节点可能至少由于图形硬件的必需状态改变(例如,对于在场景图遍历期间所需要的每个状态,设置和拆卸GPU)而受到一定延迟。GPU状态改变对于系统资源(包括时间和能量二者)而言是代价高的。
现在参见图5A、图5B和图5C,示出了与图4A、图4B和图4C类似的布置。具体地,图5A示出了图4A中所示实时请求的相同顺序处理。然而,图5B与图4B不同,因为图5B在515示出“非常”低层级图形框架/库。这个非常低层级库可涉及本发明的多个实施方案,并且可提供GPU操作的非常粒度控制。特别地,一些实施方案可需要具有以下能力或特征中一者或多者的低层级库/框架:直接控制GPU状态向量;便于直接确定/选择被提交给硬件的命令缓冲器(编码和提交);能够延迟送交动作(例如,能够延迟送交或并行送交命令缓冲器);提供标准库;和/或提供GPU的粒度控制(例如,控制组织、处理和提交图形和计算命令以及管理这些命令的相关联数据和资源)。在一些实施方案中,低层级框架可以是或者可以包括标准或所发布API或库,并且在一些实施方案中,低层级框架可以是Metal 352。在其它实施方案中,低层级库可以是Mantle或DirectX12。
能够通过所发布低层级接口严密地控制GPU就提供了可便于用于实时渲染的更有序渲染路径并且仍然允许应用使用高层级所发布框架来与系统的图形能力交互的优点。在这方面,参考图5C,示出了具有九个如图所示进行组织的子视图的场景图530。场景图530可被分析,并且GPU命令可被提取并分选到多个命令缓冲器中。在一些实施方案中,场景图530可被高层级图形框架(例如Scene Kit)分析,并且所提取的GPU命令可以低层级GPU接口语言来表述,诸如低层级框架促进的命令或指令(例如Metal)。如图5C所示,命令可被分选在任意数量的缓冲器中,诸如被分选的命令缓冲器525、535、540和545。特别地,随着软件遍历场景图530,命令可从每个节点推导,并被分选到命令缓冲器1至N中,表示为命令缓冲器525、535、540和545。
在本公开的一些实施方案中,对于在场景图下行时遇到的每个图形表面,GPU命令缓冲器可被分配。命令缓冲器可根据与该表面相关联的所有绘制的场景图以正确次序被填充以正确绘制(例如三角形)。实践中,这可涉及组合顶点流水线状态、顶点数据和纹理。例如,命令可为“利用流水线状态13在指定位置利用两个三角形绘制主按钮的图标”,这是顶点着色器、片段着色器、混合模式、GPU索引O的组合。因此,在这些实施方案中,正在关于确切地如何绘制特定纹理的内容对GPU进行指示。用于这个绘制的命令可被编码到用于适当表面的命令缓冲器中,并被分选用于最有效执行。
本发明的不同实施方案可以提供更容易或更有效的执行的方式来分选GPU命令(不管是什么语言)。例如,命令可根据所需要的GPU状态向量来进行分选。这样,每个命令缓冲器可聚集与单个GPU状态向量相关联的命令,使得数量减少的GPU状态改变可能是必需的。此外在某些实施方案中,用于多个命令缓冲器的送交序列可被安排成使状态改变更容易(例如,通过要求状态向量更少的方面被改变)。因此,需要公共GPU状态的任务可被聚集(例如一起生成所有模糊、色彩空间转换、或混合)。
在其它实施方案中,命令分选可另选地或除此之外设想多个处理资源(例如GPU)。因此,在这些实施方案中,基于处理任务和/或所需要的GPU状态,一些命令可被置于被分选用于不同GPU属性(诸如较高功率或较高效率)的命令缓冲器中。例如,如果系统可在高功率和高效率GPU之间进行选择,则需要或受益于较高性能(例如以减小延迟)的任务可被分选到用于高功率GPU的命令缓冲器,而需要较低性能的任务可被分选到用于高效率GPU的命令缓冲器。此外,对于每个适用的GPU,可根据所需要的GPU状态(即按照使GPU状态转变最小化的次序)进一步分选命令。在另外实施方案中,可基于图形表面来对命令缓冲器进行分选,其中每个命令缓冲器保持与单个图形表面或其一部分有关的命令。在另外的实施方案中:可基于系统状态例如电池寿命和需求来对命令进行分选(例如,当电池低于阈值电荷水平时,更多命令被分选到高效率GPU);可基于用户设置诸如对于电池寿命、系统温度、图形性能等的设置来对命令进行分选;可基于传感器输出来对命令进行分选,例如,如果环境光高或逆光是一个因数,则可通过将更多命令分选到高功率GPU来增大图形性能的层级;命令也可被分选以允许多个命令在多CPU系统上被同时编码(例如,于是之后重新排序);命令也可被分选以允许多个命令在多线程系统上被同时逻辑地编码(例如,于是之后重新排序);命令也可被分选以对于一个或多个特定绘图命令减小(到屏幕的)延迟;或者,命令可被分选以改善一组(例如优先组)绘图命令或所有绘图命令的总体吞吐量。
在一定量的命令被分选之后,命令缓冲器(525、535、540和545)可被送交用于渲染。在本公开的多个实施方案中,命令缓冲器可被渲染到代表除了命令缓冲器之外的任何合适存储器的图形缓冲器550。这允许整个场景图在一个或多个后续渲染遍次和/或组合到帧缓冲器555中之前被渲染到存储器中。本公开的其它实施方案可提出直接从命令缓冲器渲染到帧缓冲器。
本公开的一些实施方案可提出有意选择渲染每个命令缓冲器的次序。该次序可基于GPU状态改变的容易性或任何其它影响因素,诸如命令缓冲器的尺寸和释放命令缓冲器存储器的需求或GPU的操作条件(例如温度)。在一些实施方案中,命令缓冲器以(至少部分地)基于CPU效率(例如CPU资源的最佳使用,可能包括多个内核)的次序来填充。类似地,一旦命令缓冲器(或命令缓冲器中至少两个)被填充,则其可以对于GPU最有效的次序被提交给GPU资源(例如包括多个GPU),例如允许更加并行性。因此,一些实施方案在填充命令缓冲器中优化CPU效率,然后在提交命令缓冲器用于渲染中优化渲染效率(例如渲染正确次序)。
如上所述,本公开的一些实施方案可设想根据目的硬件设备诸如GPU将命令分选到命令缓冲器中。图5D示出了这种情况。参考图5D,命令缓冲器(525、535、540和545)可包含根据GPU身份和GPU状态进行分选的命令。例如,命令缓冲器525和535可被分选用于第一GPU,其中命令缓冲器525可代表第一GPU的第一状态,而命令缓冲器535可代表第一GPU的第二状态。此外,命令缓冲器540和545可被分选用于第二GPU,其中命令缓冲器540可代表用于第二GPU的第一状态的命令,命令缓冲器545可代表用于第二GPU的第二状态的命令。根据系统配置,这两个GPU可渲染到相同帧缓冲器(例如帧缓冲器555),或者在一些实施方案(例如具有多个显示器)中,图形可被渲染到分开的帧缓冲器,如图5D中所例示。例如,命令缓冲器525和535可被分选用于与帧缓冲器555相关联的第一GPU,而命令缓冲器540和545可被分选用于与帧缓冲器570相关联的第二GPU。
本公开的不同实施方案设想了在不同情形下送交每个命令缓冲器。在一些实施方案中,命令缓冲器可以只在场景图已经完全被遍历/评估之后才被送交。在其它实施方案中,命令缓冲器可在没有来自场景图的进一步的命令且代表特定GPU状态向量时(或在软件认为有高概率如此时)被送交。同样地,命令缓冲器可在没有进一步的命令用于特定GPU时(或在软件认为有高概率如此时)被送交。此外,命令缓冲器可在对于作为命令缓冲器的目标的特定GPU没有进一步的命令与特定GPU状态向量相关联时(或在软件认为有高概率如此时)被送交。另外,命令缓冲器可基于其消耗的存储器中所测得尺寸或其代表的处理任务的尺寸来被送交。最后,前述原因的任意组合可被用于决定何时送交命令缓冲器。
示例性过程
参考图6,示出了旨在例示本公开多个实施方案的流程图。特别地,在601,被请求图形的逻辑表示可被接收。在一些实施方案中,逻辑表示可为场景图。如上所述,场景图是基于向量的图形编辑应用和现代计算机游戏常使用的一般性数据结构,其布置图形场景的逻辑的且常常(但并非必须)空间的表示。场景图限定应用正请求的可显示内容,因此一般来讲,场景图具有为了应用的利益、而不是为了图形系统的利益的组织。
在本公开的多个实施方案中,所接收的图形请求可以是实时请求,这意味着图形是用于主机系统的显示元件上的立即显示。换句话讲,作为图6过程的一部分而执行的预渲染不是关于用于后续可能显示的预先知道或预先确定的图形。而是用于对于图形系统并未预先知道的图形的立即显示。
再次参见图6,在605,逻辑表示可被评估,并且一个或多个图形命令可被提取。对于每个所提取的命令,可关于将命令分选到命令分组中用于一起执行做出决定。如上所述,分选命令的目的是使得命令分组可按照对于系统最期望或有效、而不是仅仅对于应用表述最容易的次序被提交给GPU(或其它硬件)。
再次参见图6,在610,可确定是否需要新的命令缓冲器用于保持特定的所分选命令。如果适当命令缓冲器已存在,则可以不需要新的命令缓冲器。如果没有适当的命令缓冲器,则在615可分配新的命令缓冲器。在一些实施方案中,可为在被请求图形的逻辑表示中遇见的每个图形表面分配新的命令缓冲器。在其它实施方案中,可为被请求图形所需要的单独GPU状态或者为每个目标GPU(或者以上述任何方式,包括GPU状态和目标GPU身份的组合)分配命令缓冲器。
再次参见图6,在620,一个或多个命令可被分选到对于每个命令适合的一个或多个命令缓冲器中。例如,如果在610确定了现有命令缓冲器对于给定命令时适当的,则在620,所述给定命令会被分选到那个现有命令缓冲器中。另选地,如果在610确定了对于特定命令不存在适当的命令缓冲器,则在615会分配新的命令缓冲器并且在620所述特定命令会被分选到所述新的命令缓冲器中。
再次参见图6,在625可确定是否送交命令缓冲器用于渲染。如果命令缓冲器未准备好被送交用于渲染,则过程可返回到605并继续评估被请求图形的逻辑表示。这个关于何时送交命令缓冲器的决定在上文进行了讨论,但常常与对于缓冲器是否预期有更多命令和/或存储器约束是否是一个因素有关。
如果在625决定送交命令缓冲器用于渲染,则在630,目标GPU可被设置用于渲染命令缓冲器。例如,如果目标GPU的状态需要更替,则那些更替可在630进行。
一旦硬件在630被准备,命令缓冲器就可在635被送交用于渲染。如上所述,本公开的多个实施方案可渲染到存储器缓冲器,但不立即渲染到帧缓冲器。这种类型的延期渲染或组合就允许图形系统在组合和/或提交给帧缓冲器用于显示之前等待期望量的预渲染发生。重要地,在不同实施方案中并且通过使用高层级或低层级框架,这个延迟的控制可置于应用开发者的手中,或者可能更便利地,由高层级框架自动处理。例如,高层级框架可选择通过一起生成所有照明信息、和/或通过一起生成所有深度信息、和/或通过利用公共状态向量一起绘制所有树、和/或通过利用公共状态向量一起绘制所有岩石等等来组织渲染。这个通过高层级框架的组织可发生,即使图形请求是针对实时呈现并且场景图以任意或不方便的次序展示信息。在组织和分组命令之后,高层级框架可通过低层级框架提交命令缓冲器用于渲染,如上所述。
再次参见图6,在640可确定被请求图形是否已被完整提交用于渲染。如果被请求图形的部分仍然未渲染/未送交,则可返回到605并继续评估被请求图形的逻辑表示。在某些情况或实施方案中,一直返回到605可能不是必需的,因为即使过程的下部可能未完成,整个图形/场景图也可被完全评估。在这些情况下,从决策框640返回可以返回到工作保持完成图形渲染的任何先前点。
再次参见图6,在645,如果所有预渲染完成,则经预渲染的组分可被组合到帧缓冲器中用于在目标显示元件上显示。
应当理解,以上描述旨在是示例性的而非限制性的。已呈现材料以使得本领域的任何技术人员能够作出和使用受权利要求保护的发明,并在特定实施方案的上下文中提供该材料,其变化对于本领域的技术人员而言将是显而易见的(例如,可彼此结合使用所公开的实施方案中的多个实施方案)。此外应当理解,本文所标识的操作中的一些操作可以不同的顺序来执行。因此应当参考所附权利要求以及赋予此类权利要求的等同形式的完整范围来确定本发明的范围。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的通俗的英语等同形式。

Claims (20)

1.一种用于渲染图形的方法,包括:
由较高层级框架接收用于在计算机系统的显示元件上显示的被请求图形的逻辑表示,其中所述被请求图形对于所述较高层级框架不是预先知道的;
利用所述较高层级框架评估所述被请求图形的所述逻辑表示并推导代表对目标硬件的命令的一个或多个语句,其中所述一个或多个语句被表达在用于标准较低层级图形库的程序接口中;
将所述一个或多个语句分选到两个或更多个语句分组中;
确定所述两个或更多个语句分组中的第一语句分组是否准备好用于渲染;
如果所述第一语句分组准备好用于渲染,则利用所述较低层级图形库送交所述第一语句分组以使所述目标硬件渲染到第一图形缓冲器;
确定所述两个或更多个语句分组中的第二语句分组是否准备好用于渲染;
如果所述第二语句分组准备好用于渲染,则利用所述较低层级图形库送交所述第二语句分组以使所述目标硬件渲染到第二图形缓冲器;
将所述第一图形缓冲器和所述第二图形缓冲器的内容合成到帧缓冲器中用于在所述显示元件上显示。
2.根据权利要求1所述的方法,其中所述被请求图形的所述逻辑表示是从应用程序接收的。
3.根据权利要求2所述的方法,其中在运行时所述被请求图形对于所述应用程序不是预先知道的。
4.根据权利要求1所述的方法,其中所述被请求图形的所述逻辑表示被表示为场景图。
5.根据权利要求1所述的方法,其中所述第一图形缓冲器和所述第二图形缓冲器包括相同物理存储器。
6.根据权利要求1所述的方法,其中所述第一语句分组驻留在第一命令缓冲器中,所述第二语句分组驻留在第二命令缓冲器中。
7.根据权利要求1所述的方法,其中确定所述第一语句分组是否准备好用于渲染包括以下中的一者或多者:
确定另外的语句是否将被添加到所述第一语句分组;
确定计算机系统存储器是否受约束;
确定所述被请求图形的所述逻辑表示的评估是否完成;以及
确定所述被请求图形的所述逻辑表示的所有需要预渲染的方面是否已被预渲染。
8.根据权利要求1所述的方法,其中将所述一个或多个语句分选到两个或更多个语句分组中包括以下中的一者或多者:
根据所需要的GPU状态分选所述一个或多个语句;
根据目标硬件分选所述一个或多个语句;以及
根据每个语句所代表的图形表面分选所述一个或多个语句。
9.一种非暂态程序存储设备,所述非暂态程序存储设备能够由处理器读取并且包括存储在其上的指令,以使得一个或多个处理器:
由较高层级框架接收用于在计算机系统的显示元件上显示的被请求图形的逻辑表示,其中所述被请求图形对于所述较高层级框架不是预先知道的;
利用所述较高层级框架评估所述被请求图形的所述逻辑表示并推导代表对目标硬件的命令的一个或多个语句;
将所述一个或多个语句分选到两个或更多个语句分组中;
确定所述两个或更多个语句分组中的第一语句分组是否准备好用于渲染;
如果所述第一语句分组准备好用于渲染,则送交所述第一语句分组以使所述目标硬件渲染到第一图形缓冲器;
确定所述两个或更多个语句分组中的第二语句分组是否准备好用于渲染;
如果所述第二语句分组准备好用于渲染,则送交所述第二语句分组以使所述目标硬件渲染到第二图形缓冲器;
将所述第一图形缓冲器和所述第二图形缓冲器的内容合成到帧缓冲器中用于在所述显示元件上显示。
10.根据权利要求9所述的非暂态程序存储设备,其中所述被请求图形的所述逻辑表示是从应用程序接收的,并且在运行时所述被请求图形对于所述应用程序不是预先知道的。
11.根据权利要求9所述的非暂态程序存储设备,其中所述被请求图形的所述逻辑表示被表示为场景图。
12.根据权利要求9所述的非暂态程序存储设备,其中用于使得所述一个或多个处理器确定所述第一语句分组是否准备好用于渲染的所述指令包括用于使得所述一个或多个处理器确定以下中一者或多者的指令:
另外的语句是否将被添加到所述第一语句分组;
计算机系统存储器是否受约束;
所述被请求图形的所述逻辑表示的评估是否完成;以及
所述被请求图形的所述逻辑表示的所有需要预渲染的方面是否已被预渲染。
13.根据权利要求9所述的非暂态程序存储设备,其中所述一个或多个语句被表达在用于标准较低层级图形库的程序接口中。
14.根据权利要求13所述的非暂态程序存储设备,其中所述第一语句分组和所述第二语句分组是利用所述标准较低层级图形库来送交的。
15.根据权利要求9所述的非暂态程序存储设备,其中用于使得一个或多个处理器将所述一个或多个语句分选到两个或更多个语句分组中的所述指令包括用于使得所述一个或多个处理器根据以下中一者或多者分选所述一个或多个语句的指令:
所需要的GPU状态;
目标硬件;以及
每个语句所代表的图形表面。
16.一种用于渲染图形的系统,包括:
一个或多个中央处理单元(CPU);
显示元件;存储器,所述存储器通信地耦接到所述一个或多个CPU,其中某些指令在被执行时使得所述一个或多个CPU:
由较高层级框架接收被请求图形的逻辑表示,其中所述被请求图形用于在所述显示元件上显示,并且对于所述较高层级框架不是预先知道的;
利用所述较高层级框架评估所述被请求图形的所述逻辑表示;
利用所述较高层级框架推导代表对目标硬件的命令的一个或多个语句,其中所述一个或多个语句被表达在用于标准较低层级图形库的程序接口中;
将所述一个或多个语句分选到两个或更多个语句分组中;
确定所述两个或更多个语句分组中的第一语句分组是否准备好用于渲染;
如果所述第一语句分组准备好用于渲染,则利用所述较低层级图形库送交所述第一语句分组以使所述目标硬件渲染到第一图形缓冲器;
确定所述两个或更多个语句分组中的第二语句分组是否准备好用于渲染;
如果所述第二语句分组准备好用于渲染,则利用所述较低层级图形库送交所述第二语句分组以使所述目标硬件渲染到第二图形缓冲器;
将所述第一图形缓冲器和所述第二图形缓冲器的内容合成到帧缓冲器中用于在所述显示元件上显示。
17.根据权利要求16所述的系统,其中所述被请求图形的所述逻辑表示是从应用程序接收的,并且在运行时所述被请求图形对于所述应用程序不是预先知道的。
18.根据权利要求16所述的系统,其中用于使得所述一个或多个CPU确定所述第一语句分组是否准备好用于渲染的指令包括用于使得所述一个或多个CPU确定以下中一者或多者的指令:
另外的语句是否将被添加到所述第一语句分组;
所述存储器是否受约束;
所述被请求图形的所述逻辑表示的评估是否完成;以及
所述被请求图形的所述逻辑表示的所有需要预渲染的方面是否已被预渲染。
19.根据权利要求16所述的系统,其中用于使得所述一个或多个CPU将所述一个或多个语句分选到两个或更多个语句分组中的所述指令包括用于使得所述一个或多个CPU根据以下中一者或多者分选所述一个或多个语句的指令:
所需要的GPU状态;
目标硬件;以及
每个语句所代表的图形表面。
20.根据权利要求16所述的系统,其中所述被请求图形的所述逻辑表示被表示为场景图。
CN201680033140.6A 2015-06-07 2016-05-13 用于高效实时渲染预先不知道的图形的图形引擎和环境 Active CN107743636B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562172113P 2015-06-07 2015-06-07
US62/172,113 2015-06-07
PCT/US2016/032452 WO2016200558A1 (en) 2015-06-07 2016-05-13 Graphics engine and environment for efficient real time rendering of graphics that are not pre-known

Publications (2)

Publication Number Publication Date
CN107743636A CN107743636A (zh) 2018-02-27
CN107743636B true CN107743636B (zh) 2021-07-23

Family

ID=57452145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680033140.6A Active CN107743636B (zh) 2015-06-07 2016-05-13 用于高效实时渲染预先不知道的图形的图形引擎和环境

Country Status (3)

Country Link
US (3) US9679346B2 (zh)
CN (1) CN107743636B (zh)
WO (1) WO2016200558A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719303B2 (en) * 2015-06-07 2020-07-21 Apple Inc. Graphics engine and environment for encapsulating graphics libraries and hardware
US9916634B2 (en) * 2015-06-12 2018-03-13 Intel Corporation Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
US10204394B2 (en) * 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US11244419B2 (en) 2017-05-24 2022-02-08 650 Industries, Inc. Method and apparatus for hardware accelerated graphics rendering in bridge APIs
US10269167B1 (en) * 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
US10713747B2 (en) 2018-06-08 2020-07-14 Honeywell International Inc. System and method for distributed processing of graphic server components
US10692169B2 (en) 2018-09-28 2020-06-23 Apple Inc. Graphics driver virtual channels for out-of-order command scheduling for a graphics processor
KR102649351B1 (ko) 2018-11-06 2024-03-20 삼성전자주식회사 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법
US10650482B1 (en) * 2018-11-09 2020-05-12 Adobe Inc. Parallel rendering engine
US11074109B2 (en) * 2019-03-27 2021-07-27 Intel Corporation Dynamic load balancing of compute assets among different compute contexts
US20210117246A1 (en) 2020-09-25 2021-04-22 Intel Corporation Disaggregated computing for distributed confidential computing environment
CN113238758B (zh) * 2021-04-10 2024-05-14 北京猿力未来科技有限公司 编程代码的展示方法及装置
CN114708369B (zh) * 2022-03-15 2023-06-13 荣耀终端有限公司 一种图像渲染方法和电子设备
CN118038780A (zh) * 2022-11-01 2024-05-14 联发科技(新加坡)私人有限公司 改善图形性能的方法及其装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101911125A (zh) * 2008-01-18 2010-12-08 高通股份有限公司 图形处理系统中对离屏表面的多重缓冲支持
CN102722861A (zh) * 2011-05-06 2012-10-10 新奥特(北京)视频技术有限公司 一种基于cpu的图形渲染引擎及实现方法
CN103620641A (zh) * 2011-06-30 2014-03-05 英特尔公司 最大化图形处理器中的并行处理

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7184038B2 (en) * 1999-09-24 2007-02-27 Sun Microsystems, Inc. Using render bin parallelism for rendering scene graph based graphics data
TWI272887B (en) * 2005-12-09 2007-02-01 High Tech Comp Corp Printed circuit board and manufacturing method thereof
US8368705B2 (en) * 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8675000B2 (en) 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8310492B2 (en) 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8537169B1 (en) 2010-03-01 2013-09-17 Nvidia Corporation GPU virtual memory model for OpenGL
EP2383648B1 (en) * 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US8984519B2 (en) 2010-11-17 2015-03-17 Nec Laboratories America, Inc. Scheduler and resource manager for coprocessor-based heterogeneous clusters
US20150199788A1 (en) * 2012-04-12 2015-07-16 Google Inc. Accelerating graphical rendering through legacy graphics compilation
US9330495B2 (en) 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics
US9075618B2 (en) * 2012-11-02 2015-07-07 Microsoft Technology Licensing, Llc Cross-platform data visualizations using common descriptions
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
US9384522B2 (en) 2012-12-28 2016-07-05 Qualcomm Incorporated Reordering of command streams for graphical processing units (GPUs)
US20170300361A1 (en) 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101911125A (zh) * 2008-01-18 2010-12-08 高通股份有限公司 图形处理系统中对离屏表面的多重缓冲支持
CN102722861A (zh) * 2011-05-06 2012-10-10 新奥特(北京)视频技术有限公司 一种基于cpu的图形渲染引擎及实现方法
CN103620641A (zh) * 2011-06-30 2014-03-05 英特尔公司 最大化图形处理器中的并行处理

Also Published As

Publication number Publication date
US20170249117A1 (en) 2017-08-31
US9679346B2 (en) 2017-06-13
WO2016200558A1 (en) 2016-12-15
CN107743636A (zh) 2018-02-27
US20190087143A1 (en) 2019-03-21
US10437541B2 (en) 2019-10-08
US10445043B2 (en) 2019-10-15
US20160358306A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
CN107743636B (zh) 用于高效实时渲染预先不知道的图形的图形引擎和环境
CN107771319B (zh) 封装图形库和硬件的图形引擎和环境
US10719970B2 (en) Low latency firmware command selection using a directed acyclic graph
CN108986013B (zh) 用于在图形处理器上执行任务的方法和程序存储设备
US10789756B2 (en) Indirect command buffers for graphics processing
US9916634B2 (en) Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
US11436055B2 (en) Execution graph acceleration
US10319068B2 (en) Texture not backed by real mapping
US11088907B2 (en) System characterization and configuration distribution for facilitating improved performance at computing devices
US10628909B2 (en) Graphics processing unit resource dependency viewer
US10026142B2 (en) Supporting multi-level nesting of command buffers in graphics command streams at computing devices
US11010863B2 (en) Bindpoint emulation
US10586304B2 (en) Dynamic selection of image rendering formats
US20190369707A1 (en) Proactive Power Management of a Graphics Processor
US10692169B2 (en) Graphics driver virtual channels for out-of-order command scheduling for a graphics processor
US10908962B1 (en) System and method to share GPU resources

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant