CN105849780A - 平铺块式基础架构上的经优化多遍次再现 - Google Patents

平铺块式基础架构上的经优化多遍次再现 Download PDF

Info

Publication number
CN105849780A
CN105849780A CN201480070397.XA CN201480070397A CN105849780A CN 105849780 A CN105849780 A CN 105849780A CN 201480070397 A CN201480070397 A CN 201480070397A CN 105849780 A CN105849780 A CN 105849780A
Authority
CN
China
Prior art keywords
time
over
inquiry
perform
gpu
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
Application number
CN201480070397.XA
Other languages
English (en)
Other versions
CN105849780B (zh
Inventor
穆拉特·巴尔契
克里斯托弗·保罗·弗拉斯卡蒂
阿温阿什·赛塔拉迈亚
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105849780A publication Critical patent/CN105849780A/zh
Application granted granted Critical
Publication of CN105849780B publication Critical patent/CN105849780B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/73Querying
    • G06F16/732Query formulation
    • G06F16/7335Graphical querying, e.g. query-by-region, query-by-sketch, query-by-trajectory, GUIs for designating a person/face/object as a query predicate

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本发明提供用于在基于平铺块的架构上多路径再现的系统和方法,其包含:运用图形处理单元GPU执行查询遍次;运用所述GPU基于所述查询遍次执行条件真遍次而不执行刷新操作;运用所述GPU基于所述查询遍次执行条件假遍次而不执行刷新操作;以及响应于执行所述条件真遍次和所述条件假遍次而运用所述GPU执行刷新操作。

Description

平铺块式基础架构上的经优化多遍次再现
本申请案主张2013年12月27日申请的美国临时申请案第61/921,145号的权益,所述申请案的整个内容以引用的方式并入本文中。
技术领域
本发明涉及用于图形处理的技术,且更具体地说涉及用于再现图形处理中的基元的技术。
背景技术
图形处理单元(GPU)可执行基于平铺块的再现且可用于再现三维场景。因为三维场景的此再现可为存储器带宽非常密集的,所以专用图形存储器(GMEM)可接近于GPU核心定位。GPU核心一般使用GMEM再现场景。GPU或中央处理单元(CPU)接着可将含有场景的GMEM的内容分解到系统存储器。换句话说,表示场景的数据可从GMEM传送到系统存储器。因为移动环境中的GMEM的大小归因于物理区域约束和存储器带宽可为有限的,所以GPU可将待再现的场景拆分成较小部分以使得可个别地再现那些较小部分。具体来说,GPU可通过将场景划分成可再现到GMEM中的部分且将场景的每一部分再现到GMEM中来再现场景。
发明内容
一般来说,本发明描述用于针对基于平铺块的图形处理单元(GPU)架构优化图形再现的技术。通过在执行再现指令时缩减中央处理单元(CPU)与GPU之间的通信和数据传送,基于平铺块的GPU可改进其在再现图形对象和场景方面的性能。具体来说,经配置以用于基于平铺块的再现的GPU可对GPU自身执行较大量的图形场景的再现且不必须等待CPU交互作用,此可改进GPU的再现性能。
在一个实例中,本发明描述一种方法,其包含:运用图形处理单元(GPU)执行查询遍次;运用所述GPU基于所述查询遍次执行条件真遍次而不执行刷新操作;运用所述GPU基于所述查询遍次执行条件假遍次而不执行刷新操作;以及响应于执行所述条件真遍次和所述条件假遍次而运用所述GPU执行刷新操作。
在另一实例中,本发明描述一种装置,其包含经配置以进行以下操作的GPU:执行查询遍次;基于所述查询遍次执行条件真遍次而不执行刷新操作;基于所述查询遍次执行条件假遍次而不执行刷新操作;以及响应于执行所述条件真遍次和所述条件假遍次而执行刷新操作。
在另一实例中,本发明描述一种装置,其包含用于运用图形处理单元(GPU)执行查询遍次的装置、用于运用所述GPU基于所述查询遍次执行条件真遍次而不执行刷新操作的装置、用于运用所述GPU基于所述查询遍次执行条件假遍次而不执行刷新操作的装置,和用于响应于执行所述条件真遍次和所述条件假遍次而运用所述GPU执行刷新操作的装置。
在另一实例中,本发明描述一种计算机可读存储媒体。所述计算机可读存储媒体于其上存储有指令,所述指令在执行时致使一或多个处理器进行以下操作:执行查询遍次;基于所述查询遍次执行条件真遍次而不执行刷新操作;基于所述查询遍次执行条件假遍次而不执行刷新操作;以及响应于执行所述条件真遍次和所述条件假遍次而执行刷新操作。
附图说明
图1为根据本发明的一些方面的说明用于再现三维场景的处理器、图形处理单元和系统存储器的框图。
图2为根据本发明的一些方面的说明基于平铺块的再现架构中的场景的平铺块的概念图。
图3为根据本发明的方面的展示在仓之间划分的基元的概念图。
图4为根据本发明的技术的说明用于执行多遍次再现的技术的概念图。
图5为根据本发明中所描述的一或多个实例的说明可由硬件执行的功能的实例的概念图。
图6为根据本发明中所描述的一或多个实例的说明用于在基于平铺块的架构上多遍次再现的实例方法的流程图。
图7为说明可经配置以实施本发明的一或多个方面的装置的实例的框图。
具体实施方式
图形处理单元(GPU)可用于再现三维(3D)场景。因为3D场景的此再现可为存储器带宽非常密集的,所以可使用专用图形存储器(GMEM)。GMEM可接近于GPU的图形处理核心定位以使得GMEM具有非常高存储器带宽(即,读取和将存取写入到GMEM相对快)。场景可由GPU的图形处理核心再现到GMEM,且可将所述场景从GMEM分解到存储器(例如,帧缓冲器)以使得所述场景接着可在显示装置处显示。然而,因为GMEM的大小归因于物理区域约束可为有限的,所以GMEM可能不具有足够的存储器容量以含有整个三维场景(例如,帧)。
在一些实例中,GPU或其它处理装置可经配置以将3D场景拆分成平铺块,以使得组成场景的每一平铺块可放入GMEM中。这被称作基于平铺块的再现或“装仓”。作为一实例,如果GMEM能够存储512kB的数据,那么场景可划分成平铺块以使得每一平铺块中所含有的像素数据小于或等于512kB。以此方式,GPU或其它处理器可通过以下操作再现场景:将场景划分成可再现到GMEM中的平铺块以及将场景的每一平铺块个别地再现到GMEM中;将经再现平铺块从GMEM存储到帧缓冲器;以及针对场景的每一平铺块重复再现和存储。因此,GPU或其它处理器可使用多个再现遍次平铺块逐平铺块地再现场景以再现场景的每一平铺块。
在一些实例中,基于平铺块的再现可以若干步骤执行。举例来说,实施基于平铺块的架构的GPU起初可在装仓遍次期间处理或预处理整个场景以界定数个仓,所述仓也被称作“平铺块”。装仓遍次随后可为一系列再现遍次,在所述再现遍次期间再现经界定平铺块中的每一者。在一些实例中,以三个阶段完成再现遍次中的每一者:(1)清除/未分解,(2)再现,(3)分解。在清除/未分解阶段期间,GPU可针对新平铺块初始化GMEM且将已从外部存储器读取的值存储到GMEM中。在再现期间,GPU可重新创建与当前平铺块相关联的多边形,以及产生像素值且表面处理当前平铺块,以使得可在显示器上显示平铺块。分解步骤可涉及GPU将芯片上存储器(GMEM)的内容复制到GPU外部的存储器,例如,由显示器用来显示经表面处理场景的缓冲器。
在装仓遍次期间,GPU可产生组成场景的多边形(例如,三角形),且将多边形分类到多个“仓”中。如本文中所描述,装仓遍次期间所界定的仓为呈现在显示器上的最后场景的平铺块(例如,有时被称作“屏幕平铺块”)的同义词。举例来说,每一仓表示最后场景(例如,视频数据帧、计算机产生的图形图像、静态图像,或其类似者的预定义部分)的一部分或平铺块。因此,术语“仓”和“平铺块”可在本文中互换地使用。组成场景的平铺块可各自与存储每一相应平铺块中包含的基元的存储器中的仓相关联。仓为存储器的一部分、图片或帧的一部分,例如,图片或帧的平铺块中的基元。将场景的平铺块再现到GMEM中可包含执行命令以将相关联的仓中的基元再现到GMEM中。GPU的装仓遍次可将组成场景的基元分类到适当仓中。GPU的装仓遍次还可针对每一仓创建可见性流,其指示所述仓中的任何基元将在最后再现场景中可见还是不可见。可见性流为指示当再现基元时所述基元在每一平铺块中可见还是不可见的位流。
用以再现仓中的基元的命令可加载在间接缓冲器中。间接缓冲器可为(例如)GMEM、帧缓冲器或其它存储器的一部分。然而,一般来说,间接缓冲器可为系统存储器的一部分。GPU可执行存储于间接缓冲器中的命令以再现包含于仓中的基元。如果仓的可见性流指示所述仓不含有任何可见基元(即,仓中的所有基元将在最后再现的场景中不可见),那么在GPU通过跳过执行与仓相关联的间接缓冲器中的指令而不再现所述仓中的基元的情况下可改进性能。
在多遍次再现的一些实例中,可多次再现场景和相关联的对象。每次绘制对象时,可计算对象的外观的额外方面且将其与先前结果组合。一般来说,这可涉及粗糙初始再现和基于第一粗糙遍次的查询结果的详细第二再现遍次。查询遍次结果可包含数据,例如,指示是否应执行装仓遍次的计数器值或试探法。举例来说,如果待再现的对象为简单的(相对来说),那么在执行查询遍次之后仅执行再现遍次可为有利的。或者,如果待再现的对象为复杂的(相对来说),那么在执行查询遍次之后执行装仓遍次和再现遍次可为有利的。
在一些实例中,GPU还可经配置以在装仓遍次期间执行操作以确定哪些多边形在场景中为可见的,例如,执行深度测试以确定一多边形是否覆盖另一多边形。在确定哪些多边形在场景中可见后,GPU就可产生被称作“可见性流”的数据流。可见性流可包含用于场景的多边形中的每一者的值,且所述值可表示多边形是否可见(例如,值“1”可指示多边形为可见的且值“0”可指示多边形为不可见的)。
在装仓遍次之后,GPU可通过再次处理平铺块中的每一者来分离地再现平铺块中的每一者。在一些实例中,GPU使用在装仓期间产生的可见性流以省略或跳过再现不可见多边形。因此,仅处理且再现可见多边形,即,促成最后场景的那些多边形。GPU可以三个阶段来对平铺块中的每一者执行再现处理:(1)清除/未分解,(2)再现,(3)分解。
在清除/未分解阶段期间,GPU可针对新平铺块初始化本地存储器资源(例如,对于GPU或芯片上GPU存储器为本地的,其也可被称作GMEM)。在一些实例中,GPU通过执行清除处理以清除GMEM来初始化GMEM。在其它实例中,GPU可通过执行未分解处理来初始化GMEM。在未分解处理期间,GPU可将值从外部存储器读取到GMEM中。当运用新数据仅更新场景的一部分时,GPU可实施未分解处理。举例来说,可使用未分解处理跨越一个以上场景(例如,图形数据的一个以上帧)保留未从一个场景改变为另一场景的像素数据。
在再现期间,GPU可重新创建与当前平铺块相关联的多边形,以及产生像素值且表面处理当前平铺块,以使得可在显示器上显示平铺块。举例来说,GPU可在再现阶段期间产生适当像素值以使得所显示的像素数据准确地表示场景。在一些实例中,GPU可将最后像素值存储在局部(对于GPU)或芯片上GPU存储器(即,GMEM)中。
在再现之后,GPU可通过将芯片上存储器的内容复制到GPU外部的存储器(例如,由显示器用来显示经表面处理场景的缓冲器)来分解当前平铺块。GPU通常必须等待分解像素数据直到像素数据已结束再现为止。举例来说,如果GPU在已经完全再现像素之前将像素数据从GMEM分解或复制到外部存储器,那么所产生的场景在经显示时将不展现既定场景的适当属性。
在一些实例中,GPU可等待分解平铺块直到整个平铺块已结束再现为止。举例来说,GPU可在将平铺块从GMEM复制到外部存储器之前等待直到整个平铺块准备好显示为止。GPU通过针对下一个平铺块清除/未分解GMEM、再现下一个平铺块以及分解下一个平铺块来重复所述过程直到表面处理整个场景为止。
在基于平铺块的架构上,装仓在两个遍次上运行且可针对两个遍次产生与装仓相关的数据,这可涉及附加刷新点和中间场景分解。即使当应用程序的性能未由此行为增加超过单个遍次情形时,状况也可如此。因此,在一些状况下,多遍次再现可包含执行第一遍次再现、查询和第二遍次再现。查询可为由应用程序触发的对信息的任何请求。举例来说,应用程序可再现API侧上的某物,刷新再现到图形卡的对象。此操作完成具体再现。接着可发送查询。所述查询可为在再现从API被刷新到图形卡时所传递的像素的数目。所述查询可为对关于所执行的最后再现或当前再现作业的状态的信息的任何请求,所述最后再现或当前再现作业由硬件支持。在一些状况下,应用程序可再现某物,触发查询,且仅发送基于查询结果的数据。根据本申请案的一些实例,所述应用程序可发送查询和多个第2级间接缓冲器(IB2)。IB2含有用于再现管线的各个方面的命令。举例来说,IB2可含有可由GPU执行的前导命令,例如,初始化GPU的静止状态且设置GPU的初始再现状态的命令。GPU的再现状态可包含可基于具体应用程序改变的GPU设置。IB2可包含一系列状态命令和绘图命令以用于在经加载仓中绘制三角形。每一绘图命令可指示GPU根据图形处理管线绘制三角形。IB2 68可影响由GPU执行的图形处理管线的行为。举例来说,状态命令可改变颜色、多边形模式(例如,点而不是固体或线)、掺合(开/关)、深度测试(开/关)、纹理化(开/关)、剔除、剪除,和其它逻辑运算。可在每个三角形(或每个基元)基础上发出IB2状态命令。
在一实例中,所述应用程序可针对每一可能查询结果发送一个IB2。因此,可发送用于每一可能查询结果的再现管线的各个方面的命令。在一个实例中,两个查询结果—“真”和“假”可为可能的。因此,所述应用程序可发送两个IB2,用于“真”查询结果的一个IB2和用于“假”查询结果的一个IB2。因此,可发送用于“真”查询结果的再现管线的各个方面的命令,且可发送用于“假”查询结果的再现管线的各个方面的命令。所述应用程序发送两个可能性,用于“真”查询结果的IB2和用于“假”查询结果的IB2。
因为所述应用程序发送用于“真”查询结果的IB2和用于“假”查询结果的IB2两者,所以所述应用程序不需要等待发送基于查询结果的数据。实际上,GPU将让用于“真”查询结果的IB2和用于“假”查询结果的IB2两者由所述应用程序发送,且GPU可等待查询的结果。因此,而非让所述应用程序等待,所述GPU可等待查询结果且接着所述GPU可执行查询遍次。所述GPU可在查询遍次的结果为“真”的情况下执行条件真遍次。另外,可在不执行刷新操作的情况下执行所述条件真遍次。所述GPU可在查询遍次的结果为“假”的情况下执行条件假遍次。还可在不执行刷新操作的情况下执行条件假遍次。响应于基于查询遍次的结果条件性地执行条件真遍次或条件假遍次中的一者,所述GPU接着可执行刷新操作。
因此,在本发明的一些方面中,等待查询结果可从应用程序被传送到GPU。换句话说,所述GPU而非所述应用程序可等待查询的结果。此情形为可能的,因为在一些实例中,所述应用程序可将用于条件“真”状况的IB2和用于条件“假”状况的IB2两者发送到GPU。因此,所述GPU具有针对“真”状况和“假”状况两者所述应用程序将再现的内容以及所述应用程序想要执行的内容,因为IB2中的每一者含有用于其相应状况的再现管线的各个方面的命令,例如,分别用于“真”查询结果和“假”查询结果的条件“真”状况和条件“假”状况。
随之可为额外查询和后续遍次再现:对于平铺块式系统,此可对应于以下序列:(1)第一遍次再现,也被称作粗糙遍次或查询遍次,其中平铺块式系统可执行可产生可见性流、处置用于第一遍次的再现遍次的加载以及再现及存储的装仓遍次;(2)查询检查(可由应用程序进行),所述查询检查为检查查询遍次(第一遍次)的结果时的时间;以及(3)第二遍次。第二遍次可包含基于第一遍次的查询结果完成的所有再现。在此实例中,基于平铺块的系统可执行装仓遍次,产生可见性流,以及执行用于此第二遍次的再现遍次(其可具有基于应用程序行为的详细几何形状的不同集合,此情形最可能为所述状况)的加载、再现和存储。因此,在基于平铺块的系统中,归因于可针对两个遍次触发经装仓的再现的总线访问,可出现瓶颈。因此,通过使用可见性流获得的任何优化可被最小化,因为实施这些步骤的应用程序可造成附加刷新以用于能够执行查询遍次以确定数据,例如,指示是否应执行装仓遍次的计数器值或试探法。这些计数器值或试探法也可被称作查询遍次再现统计。另外,一般来说,可产生例如指示是否应执行装仓遍次的计数器值或试探法的数据或将所述数据确定为初始遍次的部分。
一般来说,在一些实例中,图形应用程序触发查询,再现粗糙遍次(第一遍次),且接着结束查询。图形应用程序可检查查询值(即,经传递以检测是否需要详细的再现的像素的数目)。基于查询结果(图形应用程序可触发第二遍次)。当查询为真时,可再现详细的场景;当查询为假时,可完全不再现所述场景或可再现粗糙但颜色管道实现场景。因此,第二遍次可包含所有再现,基于第一遍次的查询结果可或可不执行所述所有再现。
一些实例可修改应用程序的行为以便以其用于多遍次再现的优势而使用基于平铺块的架构。一些实例可界定新执行点且将完全控制传送到GPU和图形驱动程序。举例来说,一些实例可:(1)在经引入查询条件的情况下于第一遍次中调用Start_Query_Pass,(2)提交用于query_pass的再现调用,(3)结束query_pass(调用Query_Pass_End),(4)调用Start_Condition_true遍次,(5)提交用于condition_true_pass的再现调用,(6)调用End_condition_true_pass,(7)调用Start_Condition_false遍次,(8)提交用于condition_false_pass的再现调用,以及(9)调用End_condition_false_pass。
在一个实例中,间接缓冲器1(IB1)可调用查询遍次、装仓遍次或再现遍次。查询遍次、装仓遍次和再现遍次可为间接缓冲器2(IB2)的部分。IB1和IB2为缓冲器,例如,多级缓冲器。顶层缓冲器(IB1)中的命令可用于调用较低级缓冲器(IB2)中的命令的整个集合。在一实例中,查询遍次可由调用查询遍次IB2的IB1中的命令执行,所述查询遍次IB2可含有用于查询遍次的所有命令。另一IB2可含有用于装仓的所有命令,且又一IB2可含有用于再现等的所有命令。举例来说,查询遍次、装仓遍次和再现遍次可各自为单独IB2的(即)IB2级缓冲器内的单独实体。查询遍次可在装仓遍次之前运行。装仓遍次可在再现遍次之前运行。在一些状况下,可跳过装仓遍次以使得紧接在查询遍次之后运行再现遍次。在一些状况下,在查询遍次之后既不执行装仓遍次也不执行再现遍次。
举例来说,查询遍次可返回数据,例如,指示是否应执行装仓遍次的计数器值或试探法。在一实例中,条件执行确定单元可确定是否应执行装仓遍次或再现遍次。对执行装仓遍次的确定可基于待再现的对象的复杂性。举例来说,对于简单的对象,可跳过装仓遍次。相反地,对于较复杂的对象,可执行装仓遍次。因此,对于较简单的对象,可跳过装仓遍次以使得紧接在查询遍次之后运行再现遍次。另外,对于简单的对象,可以单个迭代执行再现,例如,整个屏幕可以单个遍次而非以一系列块写入。这对于非常简单的重复屏幕再现可为可能的。
图1为根据本发明的一些方面的说明用于再现三维(3D)场景的处理器102、图形处理单元(GPU)120和系统存储器118的框图。处理器102可执行软件应用程序112、操作系统(OS)114和图形驱动程序116。系统存储器118可包含存储用于再现基元的命令流以及待由GPU 120执行的二级命令的间接缓冲器。GPU 120可包含GMEM 122。GMEM122可为上文所描述的GMEM。在一些实例中,GMEM 122可与GPU 120在“芯片上”。在一些状况下,图1中所展示的所有硬件元件在(例如)系统芯片(SoC)设计中可在芯片上。
在图1的实例中,处理器102、系统存储器118和GPU 120可为装置的一部分。装置的实例包含(但不限于)视频装置、媒体播放器、机顶盒、无线手机(例如,移动电话和所谓的智能电话)、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及其类似者。
处理器102可为中央处理单元(CPU)。GPU 120可为处理单元,其经配置以执行例如产生且输出图形数据以供在显示器上呈现的与图形相关的功能,以及执行采用由GPU120提供的大规模处理并行性的与非图形相关的功能。举例来说,GPU 120可执行图形应用程序和非图形应用程序两者。因为GPU 120除图形处理能力之外还可提供通用处理能力,所以GPU 120可被称作通用GPU(GP-GPU)。
处理器102和GPU 120的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。在一些实例中,GPU 120可为微处理器,其经设计用于例如提供用于处理图形以及用于执行与非图形相关的应用程序的大规模并行处理的特定用途。此外,尽管处理器102和GPU 120经说明为单独组件,但本发明的各方面不限于此。举例来说,处理器102和GPU 120可驻留在共同集成电路(IC)中。
在处理器102上执行的软件应用程序112可包含指示处理器102致使图形数据再现到显示器(未图示)的一或多个图形再现指令。在一些实例中,图形再现指令可包含软件指令,其可符合图形应用程序编程接口(API),例如开放式图形库API、开放式图形库嵌入系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGLAPI,或任何其它公共或专有标准图形API。为了处理图形再现指令,处理器102可将一或多个图形再现命令发出到GPU 120(例如,经由图形驱动程序116)以致使GPU 120执行图形数据的一些或全部再现。在一些实例中,待再现的图形数据可包含例如点、线、三角形、四边形、三角形带的图形基元的列表。
GPU 120可经配置以执行图形操作以将一或多个图形基元再现到显示器。因此,当在处理器102上执行的软件应用程序中的一者需要图形处理时,处理器102可将图形命令和图形数据提供到GPU 120以用于再现到显示器。所述图形数据可包含(例如)绘图命令、状态信息、基元信息、纹理信息,等等。在一些情况下,GPU 120可内置有高度并行结构,所述高度并行结构比处理器102提供复杂图形相关操作的更有效的处理。举例来说,GPU 120可包含经配置而以并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,处理器102的高度并行性质允许GPU 120比使用处理器102直接将场景绘制到显示器更快速地将图形图像(例如,GUI和二维(2D)及/或三维(3D)图形场景)绘制到显示器上。
GPU 120可直接耦合到GMEM 122。换句话说,GPU 120可使用本地存储装置而不是片外存储器在本地处理数据。此允许GPU 120通过消除GPU 120经由(例如)共享总线读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 120可不包含单独存储器,而是利用系统存储器118。GMEM 122可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)和一或多个寄存器。
处理器102及/或GPU 120可将经再现图像数据存储在帧缓冲器124中。帧缓冲器124可为独立存储器或可分配在系统存储器118内。显示处理器(未图示)可从帧缓冲器124检索经再现图像数据且将所述经再现图像数据显示在显示器上。
系统存储器118可为装置中的存储器且可驻留在处理器102和GPU 120外部,即,相对于处理器102为晶片外,且相对于GPU 120为晶片外。系统存储器118可存储由处理器102和GPU 120执行的应用程序。此外,系统存储器118可存储所执行应用程序对其进行操作的数据,以及由应用程序产生的数据。然而,并非所有此数据在每一实例中都需要存储在系统存储器118中。在一些情况下,数据可本地地存储在处理器102或GPU 120上。举例来说,所述数据中的一些或全部可本地存储在芯片上GPU存储器(例如,图形存储器,GMEM 122)内。
系统存储器118可存储可由处理器102存取以用于执行的程序模块、指令或这两者、供在处理器102上执行的程序使用的数据,或以上这些中的两者或两者以上。举例来说,系统存储器118可存储窗口管理器应用程序,其可由处理器102使用以将图形用户接口(GUI)呈现在显示器上。另外,系统存储器118可存储用户应用程序和与所述应用程序相关联的应用程序表面数据。系统存储器118可充当用于GPU 120的装置存储器,且可存储待由GPU 120操作的数据以及由GPU 120所执行的操作产生的数据。举例来说,系统存储器118可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。
系统存储器118可为计算机可读存储媒体的实例。举例来说,系统存储器118可存储指令,其致使处理器102和GPU 120执行在本发明中归于每一者的功能。系统存储器118可被认为是包括指令的计算机可读存储媒体,所述指令致使一或多个处理器(例如,处理器102或GPU 120)执行各种功能。
系统存储器118的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),或可用于携载或存储呈指令或数据结构的形式的所要程序代码且可由计算机或处理器存取的任何其它媒体。作为一个实例,系统存储器118可从所述装置移除,且移动到另一装置。作为另一实例,大体类似于系统存储器118的存储装置可插入到所述装置中。
根据本发明的技术,一些实例可修改应用程序的行为以便以其用于多遍次再现的优势而使用基于平铺块的架构。在一些实例中,应用程序可使用新执行点/后门/延伸,且将完全控制传送到GPU和图形驱动程序。
举例来说,GPU可调用“暴露出”到应用程序的各个入口点,以使得GPU可将被提交到应用程序的内容的指示提供到驱动程序。“暴露出”是指到代码块的入口点,其提供可触发代码块的功能性指标(当需要所述功能性指标时)。一般来说,如果应用程序调用一些开始步骤,即,StartXXX,那么调用在驱动程序中结束,且在一些实例中,以下再现/状态调用是为了XXX遍次直到结束调用(即,EndXXX)被调用为止。因此,相关联的遍次的开始与结束之间的所有再现/状态调用可累积且可用于针对这些遍次构建间接缓冲器。实例调用包含在经引入查询条件的情况下的Start_Query_Pass(第一遍次)。GPU通常可提交用于query_pass的再现调用且可调用Query_Pass_End。GPU还可调用Start_Condition_true遍次以及设置查询。GPU可提交用于condition_true_pass的再现调用。GPU还可调用End_condition_true_pass和Start_Condition_false遍次。GPU还可提交用于condition_false_pass再现调用,调用End_condition_false_pass。因此,在一实例中,可仅需要一个刷新。刷新为所有经累积的再现命令到操作系统的提交或发送。当图形应用程序触发再现命令时,所述再现命令不直接发送到硬件,例如,屏幕。相反地,所述命令由图形驱动程序累积(按需要转译)。刷新调用为需要处置再现且驱动程序将所有经累积的命令/缓冲器经由操作系统核心发送/提交到硬件的界限。
在一些实例中,应用程序可不需要刷新直到发送完所有数据为止。另外,应用程序可不需要明确地检查查询数据。在一实例中,硬件可执行查询遍次、装仓遍次和再现遍次。因此,可基于查询结果针对匹配再现遍次触发一次装仓遍次。一般来说,对于经很好地编写的应用程序,此遍次相较于其它遍次可需要用以执行的较多处理循环。因此,在较佳地利用硬件资源的情况下可以单个刷新点完成操作。因此,各种实例可去除不必要的加载/存储(分解/未分解)和刷新点。
图2为说明基于平铺块的再现架构中的场景的平铺块的概念图。如图2中所展示,待由GPU(例如,图1中所展示的GPU 120)再现的3D图形对象206可由基元(例如,基元208)组成。在图2中所展示的实例中,基元可为包含三个顶点的三角形。在其它实例中,基元可为点、线及其类似者。含有图形对象206的3D场景202可划分成平铺块,例如平铺块204。场景202的每一平铺块(例如,平铺块204)的大小可至少部分地基于GMEM的大小确定。举例来说,场景202的每一平铺块可经设定大小以使得平铺块中含有的场景202的部分可全部在例如图1中所展示的GMEM 122的图形存储器中再现。场景202的每一平铺块可被视为在所述平铺块中包含三角形的仓。在一个实例中,仓的宽度和高度可由32个像素对准。因为场景202划分成平铺块的5x5栅格,所以存在图2中所展示的场景202的总共25个平铺块。
GPU 120可通过执行用于再现三角形的命令而再现三角形。因此,GPU 120可通过执行用于再现组成图形对象206的三角形中的每一者的命令而再现图形对象206。GPU120可将场景的三角形分类到仓中,以使得每一仓可包含命令流(命令的集合)以再现所述仓中包含的三角形。因为存在场景202的总共25个平铺块,所以可存在场景202的25个对应仓。用于每一仓的命令流可存储于存储器(例如,图1中所展示的系统存储器108)中的间接缓冲器中。GPU 120通过执行每一仓的命令流以将仓中的每一者中的三角形再现到GMEM 122上而再现图形对象206。
在一些实例中,为了再现场景,GPU 120执行第一粗糙遍次。GPU 120接着可第二精细遍次。在第一粗糙遍次期间,GPU 120可确定仓中的每一者中的三角形是否为可见的。在先前技术中,在GPU完成第一遍次之后,CPU执行刷新操作。刷新操作存储第一遍次的结果且将所述结果返回到CPU。所述结果可包含(例如)哪些三角形为可见的以及哪些为不可见的等等。
基于查询操作的结果(例如,哪些三角形为可见的以及哪些为不可见的),CPU针对第二遍次产生参数。在第二遍次期间,GPU执行第二装仓遍次。GPU还在第二遍次期间产生可见性流。GPU可在第二遍次期间产生新可见性流。使用此新可见性流,GPU执行第二再现遍次。在第二遍次之后,GPU执行另一刷新操作。在第二刷新操作中,可将GMEM的内容写入到图形缓冲器或系统存储器118。
在GPU 120将仓中所含有的场景202的部分再现到GMEM 122上之后,场景202的经再现部分可从GMEM 122加载到存储器,例如图1中所展示的帧缓冲器124。GPU120可重复以下过程:执行命令流;将仓的三角形再现到GMEM 122上;以及将场景202的经再现部分从GMEM 122加载到帧缓冲器124,以使得每一仓再现整个场景202。
如本文中所描述,“装仓”或“基于平铺块的再现”为一种以较小部分再现3D场景的方式。由于3D再现需要大量存储器带宽,因此适用于使用GMEM、专用图形存储器,其中高带宽接近于3D核心。然而,在移动环境中,由于区域约束,GMEM的大小受到限制。因此,可能需要将场景拆分成较小部分以使得可分离地再现各者。
在另一实例中,可使用面向流(faceness stream),但其可分离地应用于每一仓。在其它实例中,面向流可包含指示三角形是前向还是背向的每三角形位数据。在此实例中,此可扩展到可见性流,其中每一位指示三角形对于给定仓是否完全可见。对于每一仓存在一个可见性流,其列举对于所述仓可见的三角形。可使用多个因素计算可见性值:(1)三角形是否经背面剔除,(2)所述三角形是否命中仓区域(包含Z方向),(3)所述三角形是否通过低分辨率Z检查闭合。
在一实例中,在装仓遍次期间,创建多个可见性流,针对每一仓创建一个可见性流。在再现遍次期间,仅读取一个可见性流(用于当前仓的所述可见性流)。另外,压缩可见性流。此可导致较小存储器消耗。其还可在再现阶段期间使得能够快速跳过不可见三角形。
在一实例中,可在装仓遍次期间产生可见性流。此可涉及处理整个场景的命令流。然而,一般来说,未进行任何像素着色。所述创建可包含以下阶段:(1)运用仓着色器进行顶点着色,(2)低分辨率光栅化,(3)低分辨率Z测试,和(4)可见性流压缩。
在两个实例中,装仓遍次需要特定装仓着色器。此可为顶点着色器的经修改版本,其中唯一输出为顶点位置。所有参数输出以及与其相关的任何计算可从装仓着色器移除。然而,在一些实例中,不需要添加任何特定与仓相关的着色器代码。(可有可能也在驱动程序开发的初始阶段期间将普通顶点着色器用作装仓着色器。在此状况下,也应存在适当像素着色器,但其不仅不断接收任何像素)。
根据经着色顶点,光栅化器产生三角形的低分辨率表示,其中每一像素等于最后图像中的4×4像素区域。所产生的低分辨率像素可具有两个值:部分地覆盖或完全覆盖。光栅化与普通光栅化使用相同剔除规则(面向、锥台等等),且因此仅产生真正地促成场景的那些三角形。
所述过程中的第三阶段为低分辨率Z测试。GMEM还可在装仓遍次期间用作Z缓冲器。由于以4×4像素块完成再现,因此GMEM中的Z缓冲器也在此分辨率中。此外,不需要GMEM中的颜色缓冲器。这意味着低分辨率Z缓冲器(LRZ-缓冲器)相较于全分辨率可覆盖非常大的屏幕上区域。由于LRZ缓冲器不在全分辨率下操作,因此LRZ处理需要为保守的。仅针对由三角形完全覆盖的像素进行写入到LRZ缓冲器,且经部分地覆盖的像素不促成Z写入。这还意味着LRZ缓冲器不完全准确,因为在三角形边缘处可能存在间隙。在装仓遍次结束时,可将LRZ缓冲器写出到外部存储器,且稍后所述LRZ缓冲器可用于在再现遍次期间初始化Z缓冲器。此在再现期间提供经改进的Z测试。
图3为根据本发明的方面的展示在仓之间划分的基元的概念图。如图3中所展示,各自含有像素的4×4栅格的仓302、304、306和308经再现/光栅化以含有多个像素310。一般来说,视频再现为基于现有对象或模型产生图像的过程。光栅化(rasterisation)(或光栅化(rasterization))一般为拍摄以矢量图形格式(例如,形状)描述的图像,以及将所述图像转换为光栅图像(例如,像素或点)以用于在视频显示器或打印机上输出或用于以位图文件格式存储。
一或多个图形基元可在每一仓中可见。举例来说,三角形A(Tri A)的部分在仓302和仓306两者中可见。三角形B(Tri B)的部分在仓302、仓304、仓306和仓308中的每一者中可见。三角形C(Tri C)仅在仓304中可见。在再现遍次期间,GPU 120可将场景拆分成仓且可将三角形指派到所述仓。如果三角形在一个以上仓中可见,那么GPU 120可将三角形指派到其中三角形为可见的仓中的仅一者,以使得三角形不随着再现仓302、304、306和308中的每一者而被再现多次。
GPU 120还可确定仓中的哪些三角形在最后经再现场景中实际上可见。举例来说,一些三角形可在一或多个其它三角形后方且将在最后经再现场景中不可见。以此方式,无需再现针对所述仓的不可见的三角形。
当执行具体再现遍次时,与所述具体再现遍次相关联的仓的像素数据可存储在图形存储器(例如图1中所展示的GMEM 122(有时称为仓缓冲器))中。在执行再现遍次之后,GPU 120可将GMEM 122的内容传送到帧缓冲器124。在一些状况下,GPU 120可运用存储在GMEM 122中的数据重写帧缓冲器124中的数据的一部分。在其它状况下,GPU120可将帧缓冲器124中的数据与存储在GMEM 122中的数据合成或组合。在将GMEM122的内容传送到帧缓冲器124之后,GPU 120可将GMEM 122初始化为默认值且开始相对于不同仓的后续再现遍次。
图4为根据本发明的技术的说明用于执行多遍次再现的技术的概念图。一般来说,此可允许仅执行刷新一次。可如功能在图4中经定向来从“上到下”且从“左到右”执行所述功能。更确切而言,如图4中所说明,可在执行查询遍次400之后执行条件真遍次404、条件假遍次406,且一旦三个遍次(查询遍次400、条件真404和条件假406)完成,就执行刷新操作408。因此,在一些实例中,本发明的技术可通过修改应用程序的行为来去除在GPU 120完成查询遍次之后进行的刷新操作408,所述应用程序利用基于平铺块的GPU架构。具体来说,在一些实例中,本发明的技术可包含新执行点、后门命令,及/或延伸。这些新执行点、后门命令及/或延伸可允许GPU 120和图形驱动程序去除上文所描述的第二查询操作。在一些实例中,本发明的技术修改DirectX 11图形API以包含允许GPU 120去除刷新命令的额外再现命令。
当执行多遍次基于平铺块的再现时,GPU 120一般执行查询遍次400和查询检查402,紧接着执行条件真遍次404和条件假遍次406。查询检查402可为由应用程序触发的对信息的任何请求。举例来说,应用程序可再现API侧上的某物,刷新再现到图形卡的对象。此操作完成具体再现。接着可发送查询。所述查询可为在再现从API被刷新到图形卡时所传递的像素的数目。所述查询可为对关于所执行的最后再现或当前再现作业的状态的信息的任何请求,所述最后再现或当前再现作业由硬件支持。在一些状况下,应用程序可再现某物,触发查询,且仅发送基于查询结果的数据。
根据本申请案的一些实例,所述应用程序可发送查询和多个IB2。如上文所描述,IB2含有用于再现管线的各个方面的命令。
在一个实例中,两个查询结果—“真”和“假”可为可能的。因此,所述应用程序可发送两个IB2,用于“真”查询结果的一个IB2和用于“假”查询结果的一个IB2。因此,可发送用于“真”查询结果的再现管线的各个方面的命令,且可发送用于“假”查询结果的再现管线的各个方面的命令。所述应用程序发送两个可能性,用于“真”查询结果的IB2和用于“假”查询结果的IB2。
因为所述应用程序发送用于“真”查询结果的IB2和用于“假”查询结果的IB2两者,所以所述应用程序不需要等待发送基于查询结果的数据。实际上,GPU将让用于“真”查询结果的IB2和用于“假”查询结果的IB2两者由所述应用程序发送,且GPU可等待查询的结果。因此,而非让所述应用程序等待,所述GPU可等待查询结果且接着所述GPU可执行查询遍次。所述GPU可在查询遍次的结果为“真”的情况下执行条件真遍次。另外,可在不执行刷新操作408的情况下执行所述条件真遍次。所述GPU可在查询遍次的结果为“假”的情况下执行条件假遍次。还可在不执行刷新操作408的情况下执行条件假遍次。响应于基于查询遍次的结果条件性地执行条件真遍次或条件假遍次中的一者,所述GPU接着可执行刷新操作408。
因此,在本发明的一些方面中,等待查询结果可从应用程序被传送到GPU。换句话说,所述GPU而非所述应用程序可等待查询的结果。此情形为可能的,因为在一些实例中,所述应用程序可将用于条件“真”状况的IB2和用于条件“假”状况的IB2两者发送到GPU。因此,所述GPU具有针对“真”状况和“假”状况两者所述应用程序将再现的内容以及所述应用程序想要执行的内容,因为IB2中的每一者含有用于其相应状况的再现管线的各个方面的命令,例如,分别用于“真”查询结果和“假”查询结果的条件“真”状况和条件“假”状况。
查询遍次400确定三角形为可见的还是不可见的,且针对条件真遍次404和条件假遍次406建立条件。一旦GPU 120完成查询遍次400,GPU 120就执行条件真遍次404,且接着执行条件假遍次406。条件真遍次和条件假遍次使不同数据和再现命令基于应用程序再现序列累积在其中。
本发明的技术可包含可指定GPU 120执行的再现遍次的开始和结束的再现指令。因此,本发明的一些实例技术包含可指定(例如)查询遍次400、条件真遍次404和条件假遍次406的开始和结束的再现指令。具体来说,本发明的一些实例技术包含入口点,例如,Start_Query_Pass命令、End_Query_Pass命令、Start_Condition_True_pass,和End_condition_true_pass,以及End_condition_false_pass命令。这些为经“暴露出”以允许存取不同代码子程序的入口点。此外,“暴露出”是指到代码块的入口点,其提供可触发代码块的功能性指标(当需要所述功能性指标时)。如本文中所描述,这些为经暴露出到应用程序以使得所述应用程序可将由应用程序提交到驱动程序的内容的指示提供到驱动程序的入口点。
在一实例中,在每对对应的命令(例如,查询遍次开始和查询遍次结束、条件真开始和条件真结束、条件假开始和条件假结束)之间,图形驱动程序或应用程序指定用于GPU120在所述再现遍次期间执行的再现命令。一旦完成所有遍次,GPU 120就执行刷新命令。刷新命令可将三个遍次—查询遍次400、条件真404和条件假406—的结果写入到系统存储器118。
如本文中所描述,查询遍次400可在装仓遍次之前运行。装仓遍次可在再现遍次(例如,用于条件真遍次404的再现或用于条件假遍次406的再现)之前运行。(图4中未说明装仓遍次。)在一些状况下,可跳过装仓遍次以使得紧接在查询遍次400之后运行再现遍次404或406。在一些状况下,在查询遍次400之后既不执行装仓遍次也不执行再现遍次,例如,用于条件真遍次404的再现或用于条件假遍次406的再现。举例来说,条件假遍次可致使不执行装仓遍次和再现遍次,但状况并非总是如此。然而,在一些实例中,应针对条件假遍次执行装仓遍次和再现遍次。可针对条件真遍次执行装仓遍次和再现遍次。条件真遍次与条件假遍次之间的主要差异在于使不同数据和再现命令基于应用程序再现序列累积在其中。
查询遍次400可返回指示是否应执行装仓遍次的数据。在一实例中,条件执行确定单元可确定是否应执行装仓遍次或再现遍次,例如,用于条件真遍次404的再现或用于条件假遍次406的再现。对执行装仓遍次的确定可基于待再现的对象的复杂性。举例来说,对于简单的对象,可跳过装仓遍次。相反地,对于较复杂的对象,可执行装仓遍次。如本文中所描述,条件真再现和条件假再现可进行。查询遍次和条件真再现以及条件假可在刷新408之前进行。
如本文中所描述,一些实例直到所有数据列好队才刷新。举例来说,查询遍次400、再现遍次404和再现遍次406可各自列队以用于刷新408而非在查询遍次400和再现遍次404以及再现遍次406中的每一者之后执行刷新。因此,可执行单个刷新408。此情形可为有条件的且可基于查询。如本文中所描述,在一些实例中,GPU 120完成查询遍次400、再现遍次404和再现遍次406,以及刷新408。刷新408可将数据发送到处理器102,以供操作系统114使用。所述数据可为来自经累积再现命令的数据。如本文中所描述,在一些实例中,刷新为所有经累积再现命令到操作系统114的提交或发送。当图形应用程序触发再现命令时,图形驱动程序不直接将经累积再现命令发送到硬件。再现命令由图形驱动程序累积(按需要转译)。
另外,在一些实例中,查询值是多少并不重要。因此,可不需要锁定存储器地点以使得值无法被写入到(例如)经锁定存储器地点,因为是否重写存储器地点可不重要。可能不必要取回调用,等等。在一些实例中,存储器驱动程序可执行不促成可见性流的预装仓遍次/查询遍次。在一些实例中,存储器驱动程序可执行装仓遍次。条件性地执行装仓遍次。查询结果可从查询检查402返回。查询检查402可返回“真”或“假”值。可基于查询的真或假结果再现场景。换句话说,基于真或假的查询结果条件性地执行装仓遍次。真查询结果可导致再现遍次404,而假查询结果可导致再现遍次406。
当由装仓遍次返回的条件或值为真时,条件真再现404可促成可见性流。或者,如果由装仓遍次返回的条件或值为假,那么条件假再现406作为再现IB2促成可见性流。条件性地执行再现遍次404和406。可针对正确再现遍次触发一次装仓遍次。接着可执行正确可见性流和优化。可仅对正确几何形状执行再现遍次而不执行一个查询遍次。可以单个刷新点完成所述操作。
举例来说,一些装置可执行用于在基于平铺块的架构上多路径图形再现的方法。此类装置可包含基于查询遍次执行查询检查402、条件真遍次404而不执行刷新操作408,基于查询遍次执行条件假遍次406而不执行刷新操作408的GPU。一般来说,基于给定查询检查402的结果执行条件真遍次404或条件假遍次406。响应于执行条件真遍次和条件假遍次,GPU可执行刷新操作408。在一些实例中,条件真或条件假可导致产生可见性流的装仓遍次。或者,这些中的任一者—条件真或条件假,可使用直接再现遍次来再现场景。
在一些实例中,查询遍次(例如,查询检查402)可包含第一查询遍次。执行第一查询遍次可包含执行指示第一查询遍次的开始的图形再现命令。另外,在一些实例中,执行第一查询遍次进一步包含执行指示第一查询遍次的结束的图形再现命令。在一些实例中,执行条件假遍次进一步包含执行指示条件假遍次的结束的图形命令。在一些实例中,执行开始条件遍次进一步包含指示开始条件遍次的结束的图形再现命令。在一些实例中,执行条件真遍次进一步包含执行指示第一查询遍次的结束的图形再现命令。在一些实例中,执行条件假遍次进一步包括执行指示条件假遍次的开始的图形命令。
图5为根据本发明中所描述的一或多个实例的说明可由硬件执行的功能的实例的概念图。在图5的所说明的实例中,可在硬件中执行查询遍次500。还可在硬件中执行装仓遍次502。另外,可在硬件中执行再现遍次504。在一些实例中,硬件可包含GPU 120或其它处理硬件。可由操作系统506控制查询遍次500、装仓遍次502和再现遍次504。操作系统506可起动查询遍次500。在一些实例中,再现遍次包含基于查询结果的结果执行条件真遍次和条件假遍次中的一者。所述结果可控制第二遍次的装仓和再现两者。
可在查询块508中执行查询遍次500,所述查询块508可将查询结果返回到预先确定的存储器或预先确定的寄存器。操作系统506可致使查询结果存储于预先确定的存储器或预先确定的寄存器中。另外,可存储于预先确定的存储器或预先确定的寄存器中的查询结果可由装仓遍次502、再现遍次504或这两者使用。举例来说,可结合多遍次再现场景和相关联的对象使用查询结果。在多遍次再现中,可多次再现场景和相关联的对象。每次绘制对象时,可计算对象的外观的额外方面且将其与先前结果组合。一般来说,这可涉及粗糙初始再现和基于第一粗糙遍次的查询结果的详细第二再现遍次。可在查询检查期间检查查询结果,且所述查询结果可导致条件真查询结果或条件假查询结果。如上文所描述,所述查询可为由应用程序触发的对信息的任何请求。所述查询结果接着可通过执行条件真队列而导致条件真图形再现404,或所述查询结果接着可通过执行条件假队列而导致条件假图形再现406。
装仓遍次502为有条件的。在装仓遍次502期间,GPU可产生组成场景且将多边形分类到多个“仓”的多边形(例如,三角形)。如本文中所描述,在装仓遍次502期间所界定的仓可直接涉及呈现在显示器上的最后场景的平铺块(例如,有时被称作“屏幕平铺块”)。举例来说,每一仓表示最后场景(例如,视频数据帧、计算机产生的图形图像、静态图像,或其类似者的预定义部分)的一部分或平铺块。因此,术语“仓”和“平铺块”可在本文中互换地使用。
在一些实例中,GPU还在装仓遍次502期间执行操作以确定多边形中的哪些在场景中可见,例如,执行深度测试以确定一多边形是否覆盖另一多边形。在确定哪些多边形在场景中可见后,GPU就可产生被称作“可见性流”的数据流。可见性流可包含用于场景的多边形中的每一者的值,且所述值可表示多边形是否可见(例如,值“1”可指示多边形为可见的且值“0”可指示多边形为不可见的)。
再现遍次504也是有条件的。在再现遍次504期间,再现所界定的平铺块中的每一者。在一些实例中,可以三个阶段完成再现遍次中的每一者:(1)清除/未分解,(2)再现,(3)分解。
在一些实例中,存储器驱动程序可执行不促成可见性流的预装仓遍次。在一些实例中,存储器驱动程序可执行装仓遍次502。条件性地执行装仓遍次502。举例来说,对于直接再现,可跳过装仓遍次502。在一些实例中,当条件性地执行装仓遍次502时,所述装仓遍次502可返回指示其是否促成可见性流的值。或者,如果由装仓遍次502返回的条件或值为假,那么装仓遍次502作为再现IB2促成可见性流。还条件性地执行再现遍次504。当条件为真时,再现遍次504促成可见性流。当条件性地执行再现遍次504时,所述再现遍次504还可返回“真”或“假”的值。当条件为假时,再现遍次504作为再现IB2促成可见性流。可针对正确再现遍次504触发一次装仓遍次502。接着可执行正确可见性流和优化。可仅对正确几何形状执行再现遍次504而不执行一个查询遍次500。可以单个刷新点完成所述操作。
在一个实例中,间接缓冲器1(IB1)可调用查询遍次500、装仓遍次502或再现遍次504。查询遍次500、装仓遍次502和再现遍次504可为间接缓冲器2(IB2)的一部分。举例来说,查询遍次500、装仓遍次502和再现遍次504可各自为单独IB2的(即)IB2级缓冲器内的单独实体。查询遍次500可在装仓遍次502之前运行。装仓遍次502可在再现遍次504之前运行。在一些状况下,可跳过装仓遍次502以使得紧接在查询遍次500之后运行再现遍次504。在一些状况下,在查询遍次500之后既不执行装仓遍次502也不执行再现遍次504。
举例来说,查询遍次500可返回数据,例如,指示是否应执行装仓遍次502的计数器值或试探法。在一实例中,条件执行确定单元可确定是否应执行装仓遍次502或再现遍次504。对执行装仓遍次502的确定可基于待再现的对象的复杂性。举例来说,对于简单的对象,可跳过装仓遍次502。相反地,对于较复杂的对象,可执行装仓遍次502。因此,对于较简单的对象,可跳过装仓遍次502以使得紧接在查询遍次500之后运行再现遍次504。另外,对于简单的对象,可以单个迭代执行再现遍次504,例如,整个屏幕可以单个遍次而非以一系列块写入。这对于(例如)非常简单的重复屏幕再现可为可能的。
如本文中所描述,一些实例直到发送完所有数据才刷新。另外,在一些实例中,查询值是多少并不重要。因此,可不需要锁定(例如)存储器地点,因为是否重写存储器地点可不重要。可能不必要取回调用,等等。在一些实例中,存储器驱动程序可执行不促成可见性流的预装仓遍次/查询遍次。在一些实例中,存储器驱动程序可执行装仓遍次502。可条件性地执行装仓遍次502。在一些实例中,当条件性地执行装仓遍次502时,所述装仓遍次502可返回指示其促成可见性流的值。或者,如果由装仓遍次502返回的条件或值为假,那么装仓遍次502作为再现IB2促成可见性流。还条件性地执行再现遍次504。当条件为真时,再现遍次504促成可见性流。当条件性地执行再现遍次504时,所述再现遍次504还可返回“真”或“假”的值。当条件为假时,再现遍次504作为再现IB2促成可见性流。可针对正确再现遍次触发一次装仓遍次。接着可执行正确可见性流和优化。可仅对正确几何形状执行再现遍次504而不执行一个查询遍次500。可以单个刷新点完成所述操作。
举例来说,一些装置可执行用于在基于平铺块的架构上多路径图形再现的方法。此类装置可包含基于查询遍次500执行查询遍次、条件真遍次而不执行刷新操作,基于查询遍次500执行条件假遍次而不执行刷新操作的GPU,且响应于执行条件真遍次和条件假遍次,GPU可执行刷新操作。
在一些实例中,查询遍次500可包含第一查询遍次。执行第一查询遍次可包含执行指示第一查询遍次的开始的图形再现命令。另外,在一些实例中,执行第一查询遍次进一步包含执行指示第一查询遍次的结束的图形再现命令。在一些实例中,执行条件假遍次进一步包含执行指示条件假遍次的结束的图形命令。在一些实例中,执行开始条件遍次进一步包含指示开始条件遍次的结束的图形再现命令。在一些实例中,执行条件真遍次进一步包含执行指示第一查询遍次的结束的图形再现命令。在一些实例中,执行条件假遍次进一步包括执行指示条件假遍次的开始的图形命令。
图6为根据本发明中所描述的一或多个实例的说明用于在基于平铺块的架构上多路径图形再现的实例方法的流程图。GPU 120产生查询遍次(600)。查询遍次500可进一步包含第一查询遍次。另外,执行第一查询遍次可包含执行指示第一查询遍次的开始的图形再现命令。在一些实例中,执行第一查询遍次进一步包含执行指示第一查询遍次的结束的图形再现命令。
GPU 120基于查询遍次500产生条件真遍次而不执行刷新操作(602)。在一些实例中,执行开始条件遍次进一步包含指示开始条件遍次的结束的图形再现命令。执行条件真遍次还可进一步包含执行指示第一查询遍次的结束的图形再现命令。
GPU 120基于查询遍次500产生条件假遍次而不执行刷新操作(604)。在一些实例中,执行条件假遍次进一步包含执行指示条件假遍次的结束的图形命令。在一些实例中,执行条件假遍次进一步包含执行指示条件假遍次的开始的图形命令。
GPU 120响应于执行条件真遍次和条件假遍次而执行刷新操作(606)。一旦完成三个遍次—查询遍次400、条件真404和条件假406,就可执行刷新操作。一般来说,此可允许单个刷新操作的性能。刷新命令408可将三个遍次—查询遍次400、条件真404和条件假406—的结果写入到系统存储器118。
图7为说明可经配置以实施本发明的一或多个方面的装置的实例的框图。举例来说,图7说明装置702。装置702的实例包含(但不限于)视频装置、媒体播放器、机顶盒、无线手机(例如,移动电话和所谓的智能电话)、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及其类似者。
在图7的实例中,装置702可包含处理器10、系统存储器118和GPU 120。出于简洁的目的,不关于图7进一步描述处理器102、系统存储器118和GPU 120,因为先前已经关于图1描述了这些组件。装置702还可包含显示处理器724、收发器模块726、用户接口728,和显示器730。收发器模块726和显示处理器724两者都可为与处理器102及/或GPU 120相同的集成电路(IC)的一部分。在另一实例中,收发器模块726和显示处理器724两者都可在IC或包含处理器102及/或GPU 120的若干IC的外部。在又一实例中,收发器模块726和显示处理器724可形成于在包含处理器102及/或GPU 120的IC外部的IC中。
出于清晰性的目的,装置702可包含图7中未展示的额外模块或单元。举例来说,装置702可包含扬声器和麦克风,两者中无一者在图7中展示。在装置702为移动无线电话的实例中,扬声器和麦克风可用于实现电话通信。当装置702为媒体播放器时,其可包含用以提供声音输出的扬声器或其可包含输出插座。装置702还可包含摄像机。此外,装置702中所展示的各种模块和单元可不必在装置702的每一实例中。举例来说,在装置702为桌上型计算机或经装备以与外部用户接口或显示器进行接口连接的其它装置的实例中,用户接口728和显示器730可在装置702外部。
用户接口728的实例包含(但不限于)触摸屏、跟踪球、鼠标、键盘,和其它类型的输入装置。用户接口728还可为触摸屏且可作为显示器730的一部分并入。收发器模块726可包含用以允许装置702与另一装置或网络之间的无线或有线通信的电路。收发器模块726可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
在一些实例中,GPU 120可将完全形成的图像存储在系统存储器118中。显示处理器724可从系统存储器118检索图像,且输出致使显示器730的像素照明以显示所述图像的值。显示器730可为显示由GPU 120产生的图像内容的装置702的显示器。显示器730可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么可将功能作为一或多个指令或代码而存储在计算机可读媒体上或经由计算机可读媒体进行传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码及/或数据结构的任何可用媒体。借助于实例而非限制,这些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供在专用硬件、软件模块或经配置以用于编码以及解码的这些的组合内,或可并入在经组合的编解码器中。另外,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可实施于广泛多种装置或设备中,所述装置或设备包含无线手机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能性方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件、固件或这两者组合在编解码器硬件单元中,或由内部操作硬件单元(包含如上文所描述的一或多个处理器)的集合来提供。
已描述了各种实例。这些及其它实例在以下权利要求书的范围内。

Claims (22)

1.一种用于在基于平铺块的架构上多路径图形再现的方法,所述方法包括:
运用图形处理单元GPU执行查询遍次;
运用所述GPU基于所述查询遍次执行条件真遍次而不执行刷新操作;
运用所述GPU基于所述查询遍次执行条件假遍次而不执行刷新操作;以及
响应于执行所述条件真遍次和所述条件假遍次而运用所述GPU执行刷新操作。
2.根据权利要求1所述的方法,其中所述查询遍次包括第一查询遍次且执行所述第一查询遍次包括执行指示所述第一查询遍次的开始的图形再现命令。
3.根据权利要求2所述的方法,其中执行所述第一查询遍次进一步包括执行指示所述第一查询遍次的结束的图形再现命令。
4.根据权利要求1所述的方法,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的结束的图形命令。
5.根据权利要求1所述的方法,其进一步包括执行直接再现。
6.根据权利要求5所述的方法,其中执行所述条件真遍次进一步包括执行指示第一查询遍次的结束的图形再现命令。
7.根据权利要求1所述的方法,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的开始的图形命令。
8.一种用于在基于平铺块的架构上多路径图形再现的装置,其包括:
GPU,所述GPU经配置以:
执行查询遍次;
基于所述查询遍次执行条件真遍次而不执行刷新操作;
基于所述查询遍次执行条件假遍次而不执行刷新操作;以及
响应于执行所述条件真遍次和所述条件假遍次而执行刷新操作。
9.根据权利要求8所述的装置,其中所述查询遍次包括第一查询遍次且执行所述第一查询遍次包括执行指示所述第一查询遍次的开始的图形再现命令。
10.根据权利要求9所述的装置,其中执行所述第一查询遍次进一步包括执行指示所述第一查询遍次的结束的图形再现命令。
11.根据权利要求8所述的装置,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的结束的图形命令。
12.根据权利要求8所述的装置,其进一步包括执行直接再现。
13.根据权利要求12所述的装置,其中执行所述条件真遍次进一步包括执行指示第一查询遍次的结束的图形再现命令。
14.根据权利要求8所述的装置,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的开始的图形命令。
15.一种用于在基于平铺块的架构上多路径图形再现的装置,其包括:
用于运用图形处理单元GPU执行查询遍次的装置;
用于运用所述GPU基于所述查询遍次执行条件真遍次而不执行刷新操作的装置;
用于运用所述GPU基于所述查询遍次执行条件假遍次而不执行刷新操作的装置;以及
用于响应于执行所述条件真遍次和所述条件假遍次而运用所述GPU执行刷新操作的装置。
16.根据权利要求15所述的装置,其中所述查询遍次包括第一查询遍次且执行所述第一查询遍次包括执行指示所述第一查询遍次的开始的图形再现命令。
17.根据权利要求16所述的装置,其中执行所述第一查询遍次进一步包括用于执行指示所述第一查询遍次的结束的图形再现命令的装置。
18.根据权利要求15所述的装置,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的结束的图形命令。
19.根据权利要求15所述的装置,其进一步包括执行直接再现。
20.根据权利要求19所述的装置,其中执行所述条件真遍次进一步包括执行指示第一查询遍次的结束的图形再现命令。
21.根据权利要求15所述的装置,其中执行所述条件假遍次进一步包括执行指示所述条件假遍次的开始的图形命令。
22.一种计算机可读存储媒体,所述计算机可读存储媒体具有存储于其上的指令以用于在基于平铺块的架构上多路径图形再现,所述指令在执行后就致使一或多个图形处理单元GPU进行以下操作:
执行查询遍次;
基于所述查询遍次执行条件真遍次而不执行刷新操作;
基于所述查询遍次执行条件假遍次而不执行刷新操作;以及
响应于执行所述条件真遍次和所述条件假遍次而执行刷新操作。
CN201480070397.XA 2013-12-27 2014-12-04 平铺块式基础架构上的经优化多遍次再现 Active CN105849780B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361921145P 2013-12-27 2013-12-27
US61/921,145 2013-12-27
US14/154,996 US9280845B2 (en) 2013-12-27 2014-01-14 Optimized multi-pass rendering on tiled base architectures
US14/154,996 2014-01-14
PCT/US2014/068573 WO2015099970A1 (en) 2013-12-27 2014-12-04 Optimized multi-pass rendering on tiled base architectures

Publications (2)

Publication Number Publication Date
CN105849780A true CN105849780A (zh) 2016-08-10
CN105849780B CN105849780B (zh) 2019-01-22

Family

ID=52118029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480070397.XA Active CN105849780B (zh) 2013-12-27 2014-12-04 平铺块式基础架构上的经优化多遍次再现

Country Status (6)

Country Link
US (2) US9280845B2 (zh)
EP (1) EP3087553B1 (zh)
JP (1) JP6073533B1 (zh)
KR (1) KR101721861B1 (zh)
CN (1) CN105849780B (zh)
WO (1) WO2015099970A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708594A (zh) * 2016-12-12 2017-05-24 中国航空工业集团公司西安航空计算技术研究所 一种层次化OpenGL运行时编译软件实现方法
CN110058926A (zh) * 2018-01-18 2019-07-26 伊姆西Ip控股有限责任公司 用于处理gpu任务的方法、设备和计算机可读介质

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9727392B2 (en) * 2014-09-16 2017-08-08 Nvidia Corporation Techniques for render pass dependencies in an API
US9600926B2 (en) * 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US9922449B2 (en) * 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US9842376B2 (en) 2015-09-29 2017-12-12 Qualcomm Incorporated Graphics processing unit preemption with pixel tile level granularity
US10096147B2 (en) 2016-03-10 2018-10-09 Qualcomm Incorporated Visibility information modification
US20170352182A1 (en) * 2016-06-06 2017-12-07 Qualcomm Incorporated Dynamic low-resolution z test sizes
US10607390B2 (en) * 2016-12-14 2020-03-31 Nvidia Corporation Techniques for tiling compute work with graphics work
US10699368B1 (en) * 2017-08-30 2020-06-30 Apple Inc. Memory allocation techniques for graphics shader
CN108510430A (zh) * 2018-03-27 2018-09-07 长沙景嘉微电子股份有限公司 基于分块渲染的gpu中一种资源共享的实现方法
US11315225B2 (en) 2019-06-20 2022-04-26 Samsung Electronics Co., Ltd. Coarse depth culling during binning
US11373267B2 (en) 2019-11-04 2022-06-28 Qualcomm Incorporated Methods and apparatus for reducing the transfer of rendering information
US11263718B2 (en) * 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11373268B2 (en) * 2020-09-30 2022-06-28 Qualcomm Incorporated Apparatus and method for graphics processing unit hybrid rendering
US20230140640A1 (en) * 2021-11-03 2023-05-04 Intel Corporation 3d graphics driver to split frames into multiple command buffer submissions based on analysis of previous frames
US20240104684A1 (en) * 2022-09-23 2024-03-28 Qualcomm Incorporated Visibility generation in tile based gpu architectures

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US20030212728A1 (en) * 2002-05-10 2003-11-13 Amit Dagan Method and system to perform complex number multiplications and calculations
US20050257026A1 (en) * 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US20060015703A1 (en) * 2004-07-13 2006-01-19 Amit Ramchandran Programmable processor architecture
US20060095894A1 (en) * 2004-09-15 2006-05-04 Wilde Myles J Method and apparatus to provide graphical architecture design for a network processor having multiple processing elements
US20090265528A1 (en) * 2008-04-21 2009-10-22 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution
US7962923B2 (en) * 2005-12-30 2011-06-14 Level 3 Communications, Llc System and method for generating a lock-free dual queue
US20120084539A1 (en) * 2010-09-29 2012-04-05 Nyland Lars S Method and sytem for predicate-controlled multi-function instructions
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US20120242672A1 (en) * 2011-03-21 2012-09-27 Apple Inc. Fast queries in a multithreaded queue of a graphics system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778432A (en) * 1996-07-01 1998-07-07 Motorola, Inc. Method and apparatus for performing different cache replacement algorithms for flush and non-flush operations in response to a cache flush control bit register
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6952206B1 (en) 2002-08-12 2005-10-04 Nvidia Corporation Graphics application program interface system and method for accelerating graphics processing
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
GB0810311D0 (en) 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US9354887B2 (en) * 2010-06-28 2016-05-31 International Business Machines Corporation Instruction buffer bypass of target instruction in response to partial flush
US9547930B2 (en) * 2011-11-30 2017-01-17 Qualcomm Incorporated Hardware switching between direct rendering and binning in graphics processing
US10242481B2 (en) * 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US10559123B2 (en) * 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US20030212728A1 (en) * 2002-05-10 2003-11-13 Amit Dagan Method and system to perform complex number multiplications and calculations
US20050257026A1 (en) * 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US20060015703A1 (en) * 2004-07-13 2006-01-19 Amit Ramchandran Programmable processor architecture
US20060095894A1 (en) * 2004-09-15 2006-05-04 Wilde Myles J Method and apparatus to provide graphical architecture design for a network processor having multiple processing elements
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US7962923B2 (en) * 2005-12-30 2011-06-14 Level 3 Communications, Llc System and method for generating a lock-free dual queue
US20090265528A1 (en) * 2008-04-21 2009-10-22 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution
US20120084539A1 (en) * 2010-09-29 2012-04-05 Nyland Lars S Method and sytem for predicate-controlled multi-function instructions
US20120242672A1 (en) * 2011-03-21 2012-09-27 Apple Inc. Fast queries in a multithreaded queue of a graphics system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708594A (zh) * 2016-12-12 2017-05-24 中国航空工业集团公司西安航空计算技术研究所 一种层次化OpenGL运行时编译软件实现方法
CN106708594B (zh) * 2016-12-12 2020-06-09 中国航空工业集团公司西安航空计算技术研究所 一种层次化OpenGL运行时编译软件实现方法
CN110058926A (zh) * 2018-01-18 2019-07-26 伊姆西Ip控股有限责任公司 用于处理gpu任务的方法、设备和计算机可读介质

Also Published As

Publication number Publication date
JP6073533B1 (ja) 2017-02-01
US9280845B2 (en) 2016-03-08
US20150187117A1 (en) 2015-07-02
EP3087553B1 (en) 2020-10-28
US9836810B2 (en) 2017-12-05
WO2015099970A1 (en) 2015-07-02
KR101721861B1 (ko) 2017-03-31
JP2017505476A (ja) 2017-02-16
CN105849780B (zh) 2019-01-22
US20160148338A1 (en) 2016-05-26
KR20160096719A (ko) 2016-08-16
EP3087553A1 (en) 2016-11-02

Similar Documents

Publication Publication Date Title
CN105849780A (zh) 平铺块式基础架构上的经优化多遍次再现
US20230033306A1 (en) Image rendering method and apparatus, computer device, and storage medium
CN106575228B (zh) 图形处理中的渲染目标命令重新排序
CN106233326B (zh) 图形处理中基于显现目标的灵活显现
KR101820621B1 (ko) 광선 추적 어플리케이션들에서 트리 순회를 위한 시작 노드 결정
JP6571884B2 (ja) グラフィックス処理におけるシャドーレイのツリー横断のための開始ノード決定
US9355492B2 (en) System, method, and computer program product for utilizing a wavefront path tracer
KR101615840B1 (ko) 그래픽 프로세싱에서 직접 렌더링과 비닝 사이의 스위칭
JP2018060556A (ja) グラフィック処理ユニットにおける視界ベースの状態更新
CN105210111B (zh) 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行
JP2015529859A (ja) グラフィックス処理におけるパッチされたシェーディング
JP2016509718A (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
US11282260B2 (en) Bounded volume hierarchy (BVH) tree traversal using spatial division
CN111986279A (zh) 有效访问存储器和避免不必要的计算的技术

Legal Events

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