[go: up one dir, main page]

CN108027956B - 后期深度测试与保守深度测试之间的动态切换 - Google Patents

后期深度测试与保守深度测试之间的动态切换 Download PDF

Info

Publication number
CN108027956B
CN108027956B CN201680054603.7A CN201680054603A CN108027956B CN 108027956 B CN108027956 B CN 108027956B CN 201680054603 A CN201680054603 A CN 201680054603A CN 108027956 B CN108027956 B CN 108027956B
Authority
CN
China
Prior art keywords
fragments
fragment shader
shader program
gpu
workload
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
CN201680054603.7A
Other languages
English (en)
Other versions
CN108027956A (zh
Inventor
S·坎德瓦勒
夏阳
唐学峰
梁坚
王韬
A·E·格鲁贝尔
E·德默斯
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 CN108027956A publication Critical patent/CN108027956A/zh
Application granted granted Critical
Publication of CN108027956B publication Critical patent/CN108027956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

一种图形处理单元GPU可以确定在所述GPU上执行的片段着色器程序的工作负载。所述GPU可以比较所述片段着色器程序的所述工作负载与阈值。响应于确定所述片段着色器程序的所述工作负载低于指定阈值,所述片段着色器程序可以处理所述一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,所述GPU执行对一或多个片段的早期深度测试。在通过所述片段着色器程序进行处理之后,所述GPU可以执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段。所述GPU可以将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。

Description

后期深度测试与保守深度测试之间的动态切换
技术领域
本公开涉及图形处理,且更确切地说涉及后期深度处理与保守深度处理之间的动态切换。
背景技术
计算装置的图形处理单元(GPU)可执行包含用于处理图形命令的多个阶段的图形处理管线以呈现三维场景的二维表示。三维场景通常由顶点组成,且图形处理管线包含一系列阶段,所述阶段针对三维场景中的每一顶点以固定次序执行以呈现三维场景的二维表示。
图形处理管线可包含着色器阶段链,所述阶段执行以转换三维场景的顶点。着色器阶段中的每一个消耗由前一阶段产生的数据且产生用于下一阶段的数据。所述图形处理管线可以包含将图元光栅化成片段的光栅化阶段。图形处理管线还可以包含在光栅化阶段之后的片段着色器阶段,所述片段着色器阶段执行对由光栅化阶段产生的片段的片断着色。
发明内容
一般来说,本公开描述用于在每交易基础上,针对由图形处理管线的光栅化阶段产生的一组片段确定执行保守深度测试还是后期深度测试的技术。
在本公开的一个实例中,一种图形处理方法可以包含通过图形处理单元(GPU)来确定在所述GPU上执行的片段着色器程序的工作负载。所述方法可以进一步包含通过所述GPU来比较所述片段着色器程序的所述工作负载与阈值。所述方法可以进一步包含响应于确定所述片段着色器程序的所述工作负载低于所述阈值,通过所述片段着色器程序来处理一或多个片段,而不在通过片段着色器程序进行所述处理之前,通过所述GPU来执行对所述一或多个片段的早期深度测试。所述方法可以进一步包含在通过所述片段着色器程序进行处理之后,所述GPU执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段。所述方法可以进一步包含通过所述GPU来将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
在本公开的另一实例中,一种图形处理设备可以包含存储一或多个片段的存储器。所述设备可以进一步包含经配置以进行一下操作的图形处理单元(GPU):确定在所述GPU上执行的片段着色器程序的工作负载;比较所述片段着色器程序的所述工作负载与阈值;响应于确定所述片段着色器程序的所述工作负载低于所述阈值,通过所述片段着色器程序来处理所述一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,所述GPU执行对所述一或多个片段的早期深度测试;在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段;和将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
在本公开的另一实例中,一种用于图形处理的图形设备可以包含用于确定片段着色器程序的工作负载的装置。所述设备可以进一步包含用于比较所述片段着色器程序的所述工作负载与阈值的装置。所述设备可以进一步包含用于响应于确定所述片段着色器程序的所述工作负载低于指定阈值,处理所述一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,执行对一或多个片段的早期深度测试的装置。所述设备可以进一步包含用于在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段的装置。所述设备可以进一步包含用于将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中的装置。
在本公开的另一实例中,一种计算机可读存储媒体可以存储指令,所述指令在被执行时致使一或多个可编程处理器进行以下操作:确定在所述一或多个可编程处理器上执行的片段着色器程序的工作负载;比较所述片段着色器程序的所述工作负载与阈值;响应于确定所述片段着色器程序的所述工作负载低于所述阈值,通过所述片段着色器程序来处理一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,所述一或多个可编程处理器执行对所述一或多个片段的早期深度测试;在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段;和将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
随附图式和以下描述中阐述一或多个实例的细节。其它特征、目标和优势将从所述描述和图式以及从权利要求书而显而易见。
附图说明
图1是说明实例计算装置的框图,实例计算装置可以被配置成实施本公开的一或多个方面以供在后期深度处理与保守深度处理之间进行动态切换。
图2是说明可由GPU执行以产生三维场景的二维表示的实例图形处理管线的框图。
图3是进一步详细地说明图1的CPU、GPU和系统存储器的实例实施方案的框图。
图4是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图。
图5是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图。
图6是进一步详细地说明用于在后期深度处理与保守深度处理之间进行动态切换的图3的GPU的硬件单元的框图。
图7是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图。
具体实施方式
一般来说,本公开描述用于在每交易基础上,针对由图形处理管线的光栅化阶段产生的一组片段确定执行保守深度处理还是后期深度处理的技术。GPU执行对片段的深度处理,以确定所述片段是否在最终呈现的场景中被遮蔽不被看见,并省略任何可能被遮蔽的片段免遭进一步处理。以此方式,GPU可以通过不进一步处理将不会在最终呈现的场景中可见的片段来改进性能。
GPU可以针对由光栅化器级产生的一组片段,通过对所述片段组执行早期深度测试和后期深度测试来执行保守深度处理。替代地,GPU可以针对所述片段组,通过仅对所述片段组执行后期深度测试来执行后期深度处理。因为片段着色器可以潜在地修改片段的深度值,所以GPU会在对所述片段组的保守深度处理和后期深度处理期间执行后期深度测试。
在一些情况下,如果片段着色器具有繁重的工作负载,那么GPU可以通过对片段执行保守深度处理以经由早期深度测试潜在地移除片段免遭片段着色器处理,而改进其性能。在其它情况下,如果片段着色器具有较轻的工作负载,那么GPU可以通过对片段执行后期深度处理而非保守深度处理,借此省略对片段的早期深度测试来改进其性能,这是因为片段着色器能够由于其较轻的工作负载来有效地处理片段。因为片段着色器的工作负载可以根据不同的时脉循环而改变,所以GPU可以在每交易基础上,针对由图形处理管线的光栅化阶段产生的片段决定执行保守深度处理还是后期深度处理。
针对由光栅化器产生的一组片段的每一交易,GPU可以确定针对所述片段组执行保守深度处理还是后期深度处理,且可以在每交易基础上在保守深度处理或后期深度处理之间进行切换。在一些实例中,交易可以是在单个时脉循环中由光栅化器产生片段组。在其它实例中,交易大体上可以是由光栅化器产生一组片段。单个交易中的片段组可以少于光栅化器可以通过软件应用程序而在处理单个绘制调用时产生的所有片段。
GPU可以基于执行对片段组的片断着色的片段着色器的工作负载以及执行对片段组的深度测试的深度测试硬件的可用性,针对给定的片段组确定执行保守深度处理还是后期深度处理。通过当GPU的深度测试单元可用以执行深度测试时执行保守深度处理,GPU可以舍弃在最终呈现的场景中不可见的片段,之后执行对那些片段的片断着色,借此最小化GPU执行片断着色的片段数目。此外,通过在片段着色器程序具有较轻的工作负载的情况下,确定执行后期深度处理(后期深度处理并不包含在对那些片段进行片断着色之前对片段执行深度测试),GPU可以最小化欲对片段进行片断着色的等待时间。以此方式,相较于将会在最终呈现的场景中可见,GPU可以通过针对一组片段确定保守深度处理还是后期深度处理会在执行图形处理操作时提供较大性能,更快速地呈现片段。
图1是说明可以被配置成实施本公开的一或多个方面的实例计算装置的框图。如图1中所展示,装置2可以是包含但不限于以下各个的计算装置:视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及其类似装置。在图1的实例中,装置2可以包含中央处理单元(CPU)6、系统存储器10和GPU 12。装置2还可以包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14都可以是与CPU 6和/或GPU 12相同的集成电路(IC)的部分,都可以在包含CPU 6和/或GPU 12的一或多个IC的外部,或可以形成于在包含CPU 6和/或GPU 12的IC外部的IC中。
为清楚起见,装置2可以包含图1中未展示的额外模块或单元。举例来说,装置2可以包含扬声器和麦克风(其均未在图1中展示)以在装置2是移动无线电话或扬声器(其中装置2是媒体播放器)的实例中实现电话通信。装置2还可以包含摄像机。此外,装置2中所展示的各种模块和单元可不必在装置2的每个实例中。举例来说,在装置2是桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在计算装置2外部。
用户接口4的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可以是触摸屏且可作为显示器8的一部分并入。收发器模块3可包含电路以允许计算装置2与另一装置或网络之间无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
CPU 6可以是微处理器,例如中央处理单元(CPU),其被配置成处理计算机程序的指令以供执行。CPU 6可以包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含例如操作系统、文字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行GPU驱动程序22以用于控制GPU 12的操作。用户可经由一或多个输入装置(未展示)(例如键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置)而将输入提供到计算装置2。
在CPU 6上执行的软件应用程序可包含指示CPU 6以向显示器8呈现图形数据的一或多个图形呈现指令。在一些实例中,所述软件指令可符合图形应用程序编程接口(API),例如开放图形库
Figure BDA0001602072480000051
API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、X3DAPI、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形呈现指令,CPU 6可将一或多个图形呈现命令发布到GPU 12(例如,经由GPU驱动程序22)以导致GPU12执行呈现图形数据中的一些或全部。在一些实例中,待呈现的图形数据在一些实例中,待呈现的图形数据可以包含例如点、线、三角形、四边形、三角形条带等等图形图元的列表。
GPU 12可以被配置成执行图形操作,从而将一或多个图形图元呈现到显示器8。因此,当CPU 6上执行的软件应用程序中的一个需要图形处理时,CPU 6可提供图形命令和图形数据到GPU 12以向显示器8呈现。图形数据可包含例如绘制命令、状态信息、图元信息、纹理信息等等。在一些情况下,GPU 12可内置有高度并行结构,所述高度并行结构提供比CPU6更高效的复杂图形相关操作的处理。举例来说,GPU 12可包含经配置成以并行方式对多个顶点或像素进行操作的多个处理元件,例如着色器单元。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用CPU 6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安置在计算装置2的母板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。CPU 6和GPU 12还可以是例如芯片上系统(SoC)的单个封装的部分。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
GPU 12可直接耦合到图形存储器40。因此,GPU 12可在不使用总线的情况下从图形存储器40读取数据并将数据写入到所述图形存储器40。换句话说,GPU 12可使用本地存储装置而非芯片外存储器在本地处理数据。此类图形存储器40可称作芯片上存储器。这允许GPU 12通过消除对GPU 12经由总线读取并写入数据(这可能经历繁重的总线通信量)的需要而以更有效的方式操作。然而,在一些情况下,GPU 12可能不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,GPU 12可将完全形成的图像存储在系统存储器10中。显示处理器14可从系统存储器10检索图像,并且输出使显示器8的像素照亮以显示所述图像的值。显示器8可以是显示由GPU 12产生的图像内容的计算装置2的显示器。显示器8可以是液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
根据本公开的方面,GPU 12可以确定在GPU 12上执行的片段着色器的工作负载。响应于确定片段着色器的工作负载低于指定阈值,片段着色器可以处理一或多个片段,而不在片段着色器处理所述一或多个片段之前,GPU 12执行对所述一或多个片段的深度测试。
图2是说明可由GPU 12执行以产生三维场景的二维表示的实例图形处理管线24的框图。图形处理管线24可包含多个图形处理阶段,所述多个图形处理阶段一起操作以执行图形处理命令。如图2中所展示,图形处理管线24可以包含命令引擎26、顶点着色器阶段28、镶嵌阶段30、几何处理阶段32、光栅化阶段34和片段着色器阶段36。图形处理管线24中的每一组分可以被实施为固定功能组分、可编程组分(例如,实施为在可编程着色器单元上执行的着色器程序的部分),或实施为固定功能组分与可编程组分的组合。
GPU 12可经配置以经由GPU驱动程序22从CPU 6接收一或多个图形处理命令,且经配置以经由图形处理管线24执行图形处理命令以产生可显示的图形图像。如上文所论述,图形处理管线24包含一起操作以执行图形处理命令的多个阶段。然而,应注意,此类阶段不需要一定实施在单独硬件块中。举例来说,顶点着色器阶段28、镶嵌阶段30、几何处理阶段32、光栅化阶段34和片段着色器阶段36的部分可以作为统一着色器单元的部分而被实施。
命令引擎26可接收图形处理命令,且配置图形处理管线24内的剩余处理阶段以执行用于进行图形处理命令的各种操作。图形处理命令可包含例如绘制命令及图形状态命令。所述绘制命令可包含顶点规格命令,所述顶点规格命令指定一或多个顶点的位置坐标,并且在一些情况下,指定与所述顶点中的每一个相关联的其它属性值,例如色彩坐标、法向量、纹理坐标和雾坐标。图形状态命令可包含基元类型命令、变换命令、照明命令等等图元类型命令可指定待呈现图元的类型及/或顶点如何组合以形成图元。所述变换命令可规定在顶点上执行的变换的类型。所述照明命令可指定图形场景内的不同光的类型、方向及/或布局。命令引擎26可以致使几何处理阶段32相对于与一或多个所接收命令相关联的顶点和/或图元执行几何处理。
顶点着色器阶段28可处理所接收顶点数据和属性。举例来说,顶点着色器阶段28可执行每顶点处理,例如,变换、结皮、顶点移位和计算每顶点材料属性。在一些实例中,顶点着色器阶段28可产生纹理坐标、顶点色彩、顶点照明、雾效因子等等。顶点着色器阶段28一般采用单个输入顶点且输出单个经处理输出顶点。
镶嵌阶段30可以是图形处理管线24的一组任选阶段,所述阶段接收通过顶点着色器阶段28输出的顶点,且将低细节细分表面转换成较高细节图元并将高阶表面平铺成合适表面(例如,三角形)以供呈现。
几何处理阶段32可以对通过顶点着色器阶段28或镶嵌阶段30输出的一或多个顶点执行每顶点操作和/或图元设置操作,以便产生用于光栅化阶段34的图元数据。每一顶点可与一组属性(例如,位置坐标、色彩值、法向量和纹理坐标)相关联。几何处理阶段32根据各种每顶点操作修改这些属性中的一或多个。举例来说,几何处理阶段32可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理阶段32可例如向顶点位置坐标应用模型化变换、观看变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换和深度范围缩放变换中的一或多个以产生经修改的顶点位置坐标。在一些情况下,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。可在所述模型化、观看、投影及视口变换的应用之后获得屏幕空间坐标。在一些情况下,几何处理阶段32还可对顶点执行每顶点照明操作以产生顶点的经修改的色彩坐标。几何处理阶段32还可执行其它操作,包含例如法线变换、法线归一化操作、视图体积裁剪、均匀划分和/或背面剔除操作。
几何处理阶段32可产生包含限定将被光栅化的图元的一组一或多个经修改的顶点的图元数据以及规定顶点如何组合以形成图元的数据。所述经修改的顶点中的每一个可包含例如与所述顶点相关联的经修改的顶点位置坐标及经处理的顶点属性值。图元数据可共同地对应于将由图形处理管线24的其它阶段光栅化的图元。在概念上,每一顶点可对应于图元的其中所述图元的两个边缘会合的拐角。几何处理阶段32可将图元数据提供到光栅化阶段34以供进一步处理。
在一些实例中,几何处理阶段32的全部或部分可由对GPU 12的一或多个着色器处理器执行的一或多个着色器程序实施。举例来说,在此类实例中,几何处理阶段32可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理阶段32实施为固定功能硬件处理管线,或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
光栅化阶段34经配置以从几何处理阶段32接收表示待光栅化图元的图元数据,且光栅化所述图元以产生对应于经光栅化图元的多个源像素。在一些实例中,光栅化阶段34可以确定哪些屏幕像素部位由将被光栅化的图元覆盖,且产生用于被确定为由图元覆盖的每一屏幕像素位置的源像素。光栅化阶段34可以通过使用所属领域的技术人员已知的技术来确定哪些屏幕像素部位被图元覆盖,例如,边缘行走技术、评估边等式等等。光栅化阶段34可以向片段着色器阶段36提供所得的源像素以供进一步处理。
光栅化阶段34所产生的源像素可对应于屏幕像素位置,例如,目的地像素,且与一或多个色彩属性相关联。针对特定经光栅化图元所产生的所有源像素可称为与经光栅化图元相关联。由光栅化阶段34确定的将由图元覆盖的像素可在概念上包含表示图元的顶点的像素、表示图元的边缘的像素以及表示图元的内部的像素。
片段着色器阶段36经配置以接收与光栅化图元相关联的源像素,且经配置以对源像素执行一或多个每像素操作。可以通过片段着色器阶段36执行的每像素操作包含例如阿尔法测试、纹理制图、色彩计算、像素着色、每像素照明、雾处理、混合、像素所有权文本、源阿尔法测试、模具测试、深度测试、剪刀测试和/或点刻法操作。另外,片段着色器阶段36可以执行一或多个片段着色器程序,从而执行一或多个每像素操作。通过片段着色器阶段36产生的所得数据在本文中可以被称作目的地像素数据且可以存储在帧缓冲器中。目的地像素数据可与帧缓冲器中的具有与经处理源像素相同的显示部位的目的地像素相关联。所述目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
根据本公开的一方面,GPU 12可以确定在GPU 12上执行的片段着色器的工作负载,从而执行片段着色器阶段36的功能。响应于确定片段着色器的工作负载低于指定阈值,片段着色器可以处理一或多个片段,而不在片段着色器处理所述一或多个片段之前,GPU12执行对所述一或多个片段的深度测试。
图3是进一步详细地说明图1的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。如图3中所展示,CPU 6可包含至少一个软件应用程序18、图形API 20和GPU驱动程序22,其中的每一个可以是在CPU 6上执行的一或多个软件应用程序或服务。
可用于CPU 6和GPU 12的存储器可包含系统存储器10和帧缓冲器16。帧缓冲器16可为系统存储器10的一部分或可与系统存储器10分离。帧缓冲器16可存储所呈现的图像数据。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可以是GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可包含指示GPU 12呈现图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12呈现的一组一或多个图形图元的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,绘制指令可共同地界定图形场景的全部或部分,其包含在通过应用程序界定的模型空间或世界空间内的一或多个图形对象。
软件应用程序18可经由图形API 20调用GPU驱动程序22,以将一或多个命令发布到GPU 12以供将一或多个图形图元呈现为可显示的图形图像。举例来说,软件应用程序18可经由图形API 20调用GPU驱动程序22以将图元定义提供给GPU 12。在一些情况下,可以绘制图元(例如,三角形、矩形、三角扇、三角形条带等等)的列表形式将图元定义提供给GPU12。图元定义可包含指定与待呈现的图元相关的一或多个顶点的顶点规格。所述顶点规格可包含每一顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩坐标、法向量和纹理坐标。所述图元定义还可包含图元类型信息(例如,三角形、矩形、三角扇、三角形条带等等)、缩放信息、旋转信息等等。基于由软件应用程序18发布到GPU驱动程序22的指令,GPU驱动程序22可调配指定供GPU 12执行的一或多个操作以便呈现图元的一或多个命令。当GPU 12从CPU 6接收命令时,处理器集群46可以执行图形处理管线24以解码命令并配置图形处理管线24以执行命令中指定的操作。举例来说,图形处理管线24中的命令引擎26可以读取图元数据并将所述数据汇编成供图形处理管线24中的其它图形管线阶段使用的图元。在执行指定操作之后,图形处理管线24将所呈现数据输出到与显示装置相关联的帧缓冲器16。
帧缓冲器16存储用于GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器16可存储每一目的地像素的色彩分量和目的地阿尔法值。举例来说,帧缓冲器16可存储用于每一像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值且“A”分量对应于目的地阿尔法值。帧缓冲器16还可存储每一目的地像素的深度值。尽管将帧缓冲器16和系统存储器10说明为单独的存储器单元,但在其它实例中,帧缓冲器16可为系统存储器10的部分。
处理器集群46可包含一或多个可编程处理单元42和/或一或多个固定功能处理单元44。可编程处理单元42可包含例如配置成执行从CPU 6下载到GPU 12上的一或多个着色器程序的可编程着色器单元。在一些实例中,可编程处理单元42可以被称作“着色器处理器”或“统一着色器”,且可执行几何、顶点、像素或其它着色操作以呈现图形。着色器单元可各自包含用于提取和解码操作的一或多个组件、用于进行算术计算的一或多个ALU、一或多个存储器、高速缓冲存储器和寄存器。
在一些实例中,着色器程序可以是用高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等等)编写的程序的经编译版本。在一些实例中,可编程处理单元42可包含经配置以并行操作的多个处理单元(例如,SIMD管线)。可编程处理单元42可具有存储着色器程序指令的程序存储器和执行状态寄存器,例如指示程序存储器中正执行的当前指令或待提取的下一指令的程序计数器寄存器。处理器集群46中的可编程处理单元42可包含例如顶点着色器单元、片段着色器单元、几何着色器单元、外壳着色器单元、域着色器单元、计算着色器单元和/或统一着色器单元。
通过向可编程处理单元42发送执行图形处理管线24中的顶点着色器阶段28、镶嵌阶段30、几何处理阶段32、光栅化阶段34和片段着色器阶段36中的一个或多个的命令,GPU12可以指定可编程处理单元42执行多种着色操作,例如顶点着色、外壳着色、域着色、几何着色、片断着色等等。在一些实例中,GPU驱动程序22可致使在CPU 6上执行的编译程序编译一或多个着色器程序,并将经编译着色器程序下载到GPU 12内含有的可编程处理单元42上。可以高级着色语言来编写着色器程序,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言、OpenCL C核等等。经编译着色器程序可包含控制GPU12内的可编程处理单元42的操作的一或多个指令。举例来说,着色器程序可包含:顶点着色器程序,其可由可编程处理单元42执行以执行顶点着色器阶段28的功能;镶嵌着色器程序,其可由可编程处理单元42执行以执行镶嵌阶段30的功能;几何着色器程序,其可由可编程处理单元42执行以执行几何处理阶段32的功能;和/或片段着色器程序,其可由可编程处理单元42执行以执行片段着色器阶段36的功能。顶点着色器程序可以控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个每顶点操作的指令。
处理器集群46还可包含固定功能处理单元44。固定功能处理单元44可包含经硬连线以执行某些功能的硬件。尽管可例如经由一或多个控制信号配置固定功能处理单元44以执行不同功能,但固定功能硬件通常并不包含能够接收用户编译的程序的程序存储器。在一些实例中,处理器集群46中的固定功能处理单元44可包含例如执行光栅操作(例如深度测试、剪刀测试、阿尔法混合等等)的处理单元,以便执行图形处理管线24的光栅化阶段34的功能。
图形存储器40是物理地集成到GPU 12的集成电路中的芯片上存储装置或存储器。因为图形存储器40是在芯片上,所以与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU 12可能够更快速地从图形存储器40读取值或将值写入到图形存储器40。图形存储器40可以包含着色器输入缓冲器50,其经配置以存储片段并使所述片段排队以供在可编程处理单元42上执行的片段着色器程序进行处理,从而执行片段着色器阶段36的功能。
如上文所论述,处理器集群46包含可编程处理单元42和固定功能处理单元44,其可以执行图形处理管线24的各个阶段的功能。在一个实例中,处理器集群46的固定功能处理单元44可以执行光栅化阶段34的将一或多个图元光栅化成一组像素的功能。可编程处理单元42可以执行片段着色器来执行片段着色器阶段36的功能,从而处理通过执行光栅化阶段34的功能的固定功能处理单元44进行光栅化的所述像素组。
深度测试单元48可以包含硬件和/或执行软件的处理单元,软件经配置以对照在片断样品位置处存储在深度缓冲器中的深度值来测试所述片断的深度值。在一些实例中,帧缓冲器16中可以包含深度缓冲器。此类测试可以适用于确定所述片断是否被后方的其它片段遮蔽,且因此将不会在最终呈现的场景中可见。如果深度测试单元48基于执行深度测试而确定从最终呈现的场景看,片断将会被后方的另一片断遮蔽,那么GPU 12可以舍弃所述片断且可以停止进一步处理所述片断。
根据本公开的一方面,深度逻辑单元54可以包含硬件和/或执行软件的处理单元,软件经配置以确定GPU 12针对由执行图形处理管线24的光栅化阶段34的GPU 12产生的一或多个片段执行保守深度测试还是后期深度测试。通过在GPU 12执行片段着色器以执行片段着色器阶段36的功能从而处理由执行光栅化阶段34产生的一组一或多个片段(即,执行早期深度测试)之前且在GPU 12执行片段着色器以执行片段着色器阶段36的功能从而处理所述一或多个片段组(即,执行后期深度测试)之后,使深度测试单元48针对所述一或多个片段组执行深度测试,GPU 12可以针对所述一或多个片段组执行保守深度测试。换句话说,在保守深度处理中,GPU 12执行早期深度测试和后期深度测试,其中早期和后期是相对于片段着色器执行对片段的片断着色的时间。与保守深度处理形成对比,通过仅在GPU 12执行片段着色器以执行片段着色器阶段36的功能从而处理由执行光栅化阶段34产生的一组一或多个片段之后,使深度测试单元48针对所述一或多个片段组执行深度测试,GPU 12可以针对所述一或多个片段组执行后期深度处理(即,执行后期深度测试)。
此外,如果深度逻辑单元54引导深度测试单元48执行对一组片段的早期深度测试以作为保守深度处理的部分,且如果深度逻辑单元54丢弃所述片段组中的一或多个(这是因为深度测试单元48确定从最终呈现的场景看,那些一或多个片段将会被遮蔽),那么所得的片段组(在深度测试单元48执行早期深度测试之后,所述片段组被转发到片段着色器以供处理)将不会包含被深度测试单元48舍弃的那些一或多个片段。相似地,如果深度逻辑单元54引导深度测试单元48执行对一组片段的后期深度测试以作为保守深度处理或后期深度处理的部分,且如果深度测试单元48舍弃所述片段组中的一或多个(这是因为深度测试单元48确定从最终呈现的场景看,那些一或多个片段将会被遮蔽),那么所得的片段组的值(在深度测试单元48执行早期深度测试之后,GPU 12将所述值写入到帧缓冲器16中)将不会包含被深度测试单元48舍弃的那些一或多个片段。
深度逻辑单元54可能够作出此类确定:GPU 12在每交易基础上执行保守深度处理还是后期深度处理。交易可以是执行光栅化阶段34的功能的GPU 12在给定时脉循环中产生的一或多个片段。在其它实例中,交易可以是一组一或多个片段,其少于由于软件应用程序18进行的绘制调用而产生的片段的总数目。因而,深度逻辑单元54可关于在处理单个绘制调用时执行保守深度处理还是后期深度处理作出多个决策。在一些实例中,执行光栅化阶段34的功能的GPU 12的光栅化器可以产生一或多个片段,例如每交易4×4像素块。因此,针对由光栅化器在给定时脉循环中产生的每一组一或多个片段,深度逻辑单元54可以确定GPU 12针对所述一或多个片段组执行保守深度处理还是后期深度处理。通过在每交易基础上作出确定,深度逻辑单元54可以针对产生一组一或多个片段的光栅化器的每一单独交易(例如,由光栅化阶段34产生的每一单独4×4像素块)作出以下单独确定:GPU 12执行保守深度处理还是后期深度处理。
深度逻辑单元54可以至少部分地基于在可编程处理单元42上执行以执行片段着色器阶段36的功能的片段着色器程序的工作负载,确定针对一组一或多个片段执行保守深度处理还是后期深度处理。如果深度逻辑单元54确定轻载片段着色器程序,那么深度逻辑单元54可以致使GPU 12通过仅执行对一组一或多个片段的后期深度测试,针对所述一或多个片段执行后期深度处理。另一方面,如果深度逻辑单元54确定重载片段着色器,那么深度逻辑单元54可以致使GPU 12针对一或多个片段执行保守深度处理,或可以致使GPU 12在时脉循环内停止确定在时脉循环内对一或多个片段执行保守深度处理还是后期深度处理。
深度逻辑单元54可以至少部分地基于使片段排队以供片段着色器程序进行处理的着色器输入缓冲器50的状态,确定在可编程处理单元42上执行以执行片段着色器阶段36的功能的片段着色器程序的工作负载。深度逻辑单元54可以至少部分地基于相较于着色器输入缓冲器50的容量,存储在着色器输入缓冲器50中的数据量,确定在可编程处理单元42上执行以执行片段着色器阶段36的功能的片段着色器程序的工作负载。在一个实例中,深度逻辑单元54可以在存储在着色器输入缓冲器50中的数据量不超过着色器输入缓冲器50的容量的一半的情况下,确定在可编程处理单元42上执行以执行片段着色器阶段36的功能的片段着色器程序是轻载。深度逻辑单元54可以在存储在着色器输入缓冲器50中的数据量超过着色器输入缓冲器50的容量的一半的情况下,确定在可编程处理单元42上执行以执行片段着色器阶段36的功能的片段着色器程序是重载。
在其它实例中,在片段着色器程序被轻载还是重载之间,存储在着色器输入缓冲器50中的数据量与着色器输入缓冲器50的容量(其组成阈值)之间的比率可以不同。举例来说,在一个实例中,片段着色器程序被轻载还是重载之间的阈值可以是3/5,其中在存储在着色器输入缓冲器50中的数据量不超过着色器输入缓冲器50的容量的3/5的情况下,片段着色器程序可以轻载。在其它实例中,在片段着色器程序被轻载还是重载之间,存储在着色器输入缓冲器50中的数据量与着色器输入缓冲器50的容量(其组成阈值)之间的比率可以不同且可以是任何其它合适的阈值。
深度逻辑单元54还可基于滞后而动态地确定片段着色器程序被轻载还是重载之间的阈值。换句话说,阈值可以取决于着色器输入缓冲器50的目前输入和过去输入。在一个实例中,如果深度逻辑单元54确定着色器输入缓冲器50的充满程度小于30%,那么深度逻辑单元可以确定片段着色器程序被轻载。一旦着色器输入缓冲器50的充满程度小于30%,如果着色器输入缓冲器50跨越多个时钟循环从充满程度小于30%增长到充满程度大于30%,那么深度逻辑单元54就可以继续确定片段着色器程序被轻载,直到存储在着色器输入缓冲器50中的数据量增长到大于着色器输入缓冲器50的容量的70%为止,此时深度逻辑单元54可以确定片段着色器程序被重载。一旦着色器输入缓冲器50的充满程度大于70%,深度逻辑单元54就可以继续确定片段着色器程序被重载,直到存储在着色器输入缓冲器50中的数据量降低到小于着色器输入缓冲器50的容量的30%为止,此时深度逻辑单元54可以确定片段着色器程序被轻载。以此方式,深度逻辑单元54可以动态地设置并改变片段着色器程序被轻载还是重载之间的阈值。
在一些实例中,着色器输入缓冲器50可以包括多个缓冲器,其缓冲数据以供在可编程处理单元42的相应并行着色器处理器上执行的片段着色器程序进行处理。在存储在缓冲器中的数据量相对于多个缓冲器中的至少一个的缓冲器的容量之间的比率低于阈值的情况下,深度逻辑单元54可以确定片段着色器程序被轻载。举例来说,如果缓冲器中的至少一个不超过一半充满程度,那么深度逻辑单元54可以确定片段着色器程序被轻载。
在其它实例中,片段着色器程序被轻载还是重载之间的阈值可基于存储在着色器输入缓冲器50中的数据量而不考虑着色器输入缓冲器50的容量。举例来说,如果存储在着色器输入缓冲器中的数据量包括一或多个片段,那么深度逻辑单元54可以确定片段着色器程序被重载。相反地,如果着色器输入缓冲器是空的,那么深度逻辑单元54可以确定片段着色器程序被轻载。
深度逻辑单元54还可至少部分地基于确定利用GPU 12的各种组件而确定片段着色器程序的工作负载。深度逻辑单元54可以监测处理器集群46的组件的负载和/或利用,例如纹理处理器、着色器处理器、算术逻辑单元(ALU)等等,以及处理器集群46的组件与高速缓冲存储器和/或记忆体之间的存储器带宽的通信量。深度逻辑单元54可以基于处理器集群46的负载和/或利用以及每时脉循环基础上的存储器通信量或基于遍及若干时钟循环的平均负载和/或利用,确定片段着色器程序的工作负载。以此方式,深度逻辑单元54可以将片段着色器程序被轻载还是重载之间的阈值确定为处理器集群46的特定负载和/或利用或瞬时测量的特定存储器通信量级或遍及若干时钟循环的平均温度。深度逻辑单元54还可测量处理器集群46的硬件组件的温度以确定处理器集群46的处理器负载,且可以将片段着色器程序被轻载还是重载之间的阈值确定为瞬时测量的特定温度或遍及若干时钟循环的平均温度。
图4是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图。如图4中所展示,GPU 12可以执行光栅化阶段34的功能以产生一或多个片段,以供在GPU 12上执行以执行片段着色器阶段36的功能的片段着色器进行处理(62)。响应于GPU12由于执行光栅化阶段34的功能而输出一或多个片段,深度逻辑单元54可以确定针对一或多个片段执行保守深度处理还是后期深度处理(64)。
深度逻辑单元54可以至少部分地基于片段着色器的工作负载而作出此类确定。具体来说,深度逻辑单元54可以确定片段着色器的工作负载是否高于指定阈值。如果深度逻辑单元54确定片段着色器的工作负载高于指定阈值,那么深度逻辑单元54可以致使GPU 12针对一或多个片段执行保守深度处理。作为执行保守深度处理的部分,深度测试单元48可以执行早期深度测试和后期深度测试(66)。深度测试单元48可以舍弃深度测试单元48确定从最终呈现的场景看会被遮蔽的任何片段,且可以输出剩余的一或多个片段以供片段着色器进行处理。因为由深度测试单元48执行的早期深度测试可以舍弃将不会由片段着色器进行处理的一或多个片段,所以深度逻辑单元54可以在片段着色器阶段36处减少负载,借此通过潜在地提供较少片段以供片段着色器进行处理来改进GPU的性能。
与此对比,如果深度逻辑单元54确定片段着色器的工作负载低于指定阈值,那么深度逻辑单元54可以致使GPU 12通过将一或多个片段提供为供片段着色器进行处理的输入来针对所述一或多个片段执行后期深度处理,而深度测试单元48不执行对所述一或多个片段的早期深度测试。在此状况下,因为片段着色器的相对较低工作负载,片段着色器可能够处理所述片段而不降低GPU 12的性能。
GPU 12可以执行片段着色器以执行片段着色器阶段36的功能,从而在保守深度处理的状况下处理从深度测试单元48输出的剩余的一或多个片段,或在后期深度处理的状况下,处理由执行光栅化阶段34的功能的光栅化器硬件产生的一或多个片段(68)。深度测试单元48可以执行对由片段着色器输出的一或多个片段的深度测试(70)。深度测试单元48可以舍弃深度测试单元48确定从最终呈现的场景中看会被遮蔽的任何片段,且可以将剩余的一或多个片段的值写入到帧缓冲器16中(72)。
根据本公开的一方面,深度逻辑单元54可以至少部分地基于深度测试单元48可用于执行对一或多个片段的深度测试,进一步确定针对由GPU 12的光栅化器产生的一或多个片段执行保守深度处理还是后期深度处理。单个深度测试单元48在保守深度处理的状况下执行早期深度测试,且在保守深度处理和后期深度处理的状况下执行后期深度测试。因此,由在可编程处理单元42(其用以执行片段着色器阶段36的功能)上执行的片段着色器输出的片段以及由光栅化器硬件(其执行光栅化阶段34的功能)产生的片断都可以在给定的时脉循环下用作用以执行深度测试的深度测试单元48的输入。
图5是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图,所述动态切换是进一步至少部分地基于深度测试单元48的工作负载。如图5中所展示,GPU 12的上游单元(例如GPU 12的光栅化器(例如,固定功能处理单元44的一或多个硬件单元))可以产生可供使用的一或多个片段(82)。
响应于一或多个片段可从上游单元获得,深度逻辑单元54可以至少部分地基于深度测试单元48的可用性,确定针对可供使用的一或多个片段执行保守深度处理还是后期深度处理。具体来说,深度逻辑单元54可以确定深度测试单元48的可用性,且可以至少基于深度测试单元48的可用性而确定针对一或多个片段执行保守深度处理还是后期深度处理(84)。如上文所论述,在片断着色之前(在保守深度处理的状况下)且在片断着色之后(在后期深度处理和保守深度处理的状况下),可以利用同一深度测试单元48来执行对片段的深度测试。因此,在一些情况下,深度测试单元48可忙于对由片段着色器输出的一或多个片段执行深度测试,且不可用于对可从上游单元获得的一或多个片段执行深度测试。
深度逻辑单元54可以至少部分地基于片段是否可从片段着色器获得以供深度逻辑单元54进行处理,确定深度测试单元48的工作负载是否过高而不能对可从上游单元获得的一或多个片段执行深度测试(84)。深度测试单元48可以越过由光栅化器产生的一或多个片段而优先化处理由片段着色器输出的片段。因而,如果由片段着色器输出的片段可供深度测试单元48进行处理,那么深度测试单元48可以执行对那些片段的深度测试而非执行对由光栅化器产生的一或多个片段的深度测试。另一方面,如果由片段着色器输出的片段不可供深度测试单元48进行处理,那么深度测试单元48可用于对由光栅化器产生的一或多个片段执行深度测试。因此,如果由片段着色器输出的片段不可供深度测试单元48进行处理,那么深度逻辑单元54可以对由光栅化器产生的一或多个片段执行保守深度处理(86)。换句话说,因为深度测试单元48可以自由地对由光栅化器产生的一或多个片段执行深度测试,所以通过引导深度测试单元48执行对所述一或多个片段的深度测试,之后由片段着色器对所述一或多个片段进行处理(即,早期深度测试),深度逻辑单元54可以确定GPU 12对所述一或多个片段执行保守深度处理。
如果由片段着色器输出的片段可用作深度测试单元48的输入,那么深度测试单元48可以对从片段着色器输出的那些片段执行深度测试而非对可从上游单元获得的一或多个片段执行深度测试。因此,深度逻辑单元54可以确定不在当前时脉循环期间对一或多个片段执行保守深度处理。实情为,响应于确定由片段着色器输出的片段可供深度测试单元48使用以对那些片段执行深度处理,深度逻辑单元54可以确定片段着色器的工作负载,从而确定是否通过对一或多个片段执行后期深度处理来改进处理一或多个片段的性能(88)。
具体来说,深度逻辑单元54可以确定片段着色器的工作负载是否低于指定阈值。如果片段着色器的工作负载低于指定阈值,那么深度逻辑单元54可以确定通过片段着色器处理一或多个片段,而不在通过片段着色器进行处理之前,深度测试单元48对一或多个片段执行深度测试,来改进对一或多个片段的处理。因此,响应于深度逻辑单元54确定片段着色器的工作负载低于指定阈值,GPU 12可以对由光栅化器产生的一或多个片段执行后期深度处理,包含通过图形着色器来处理由光栅化器产生的一或多个片段,而不在片段着色器处理一或多个片段之前,深度测试单元48执行对一或多个片段的深度测试。
如果片段着色器的工作负载高于指定阈值,那么深度逻辑单元54可以确定在时脉循环期间,对一或多个片段的处理受处理一或多个片段的片段着色器的不利影响。在此状况下,GPU 12可以在时脉循环内停止一或多个片段(90),且可以通过再确定深度逻辑单元54是否可用以处理一或多个片段,再确定在后续时脉循环下执行保守深度处理还是后期深度处理(84)。
后续循环下的处理可以遵循如图6中所展示的相同流程。举例来说,如果在后续时脉循环下,深度逻辑单元54仍然不可用以执行对一或多个片段的深度测试,那么深度逻辑单元54可以再确定片段着色器的工作负载(88)。如果片段着色器的工作负载低于指定阈值,那么深度逻辑单元54可以致使GPU 12执行对一或多个片段的后期深度处理,包含通过片段着色器来处理一或多个片段,而深度测试单元48不执行对一或多个片段的早期深度测试(90)。
图6是进一步详细地说明用于在后期深度处理与保守深度处理之间进行动态切换的图3的GPU 12的硬件单元的框图。如图6中所展示,深度逻辑单元54可以选择多路复用器52转发由光栅化器输出的片断还是由片段着色器输出的片断以供深度测试单元48进行处理。以此方式,深度逻辑单元54确定是否对由光栅化器输出的片断执行保守深度测试。如上文所论述,深度逻辑单元54可以确定由片段着色器输出的片断是否准备好通过深度测试单元48进行处理,并且,如果是,那么可以选择通过深度测试单元48处理所述片断。如果由片段着色器输出的片断未准备好通过深度测试单元48进行处理,那么深度逻辑单元54可以替代地选择由光栅化器输出的片断以供深度测试单元48进行处理。
着色器输入缓冲器50可以存储待通过在处理器集群46上执行的片段着色器进行处理的片段。以此方式,着色器输入缓冲器50充当待通过片段着色器进行片断着色的片段的伫列。深度逻辑单元54可以至少部分地基于存储在着色器输入缓冲器50中的数据量,且更确切地说,与着色器输入缓冲器50的容量相比较,存储在着色器输入缓冲器50中的数据量,确定在处理器集群46上执行的片段着色器的工作负载。如果存储在着色器输入缓冲器50中的数据量小于或等于阈值,那么例如通过占据不超过着色器输入缓冲器50的容量的一半,深度逻辑单元54可以确定片段着色器被轻载,且可能够呈现在当前时脉循环下由光栅化器输出的片断,从而执行片断着色。另一方面,如果存储在着色器输入缓冲器中的数据量大于阈值,那么例如通过占据超过着色器输入缓冲器50的容量的一半,深度逻辑单元54可以确定片段着色器被重载,且可能不能够呈现在当前时脉循环下由光栅化器输出的片断,从而执行片断着色。虽然在一个实例中,片段着色器程序被轻载还是重载之间的阈值是基于存储在着色器输入缓冲器50中的数据量小于还是等于着色器输入缓冲器50的容量的一半,但在其它实例中,片段着色器程序被轻载还是重载之间的阈值可基于存储在着色器输入缓冲器50中的数据量与着色器输入缓冲器50的容量之间的比率。在其它实例中,片段着色器程序被轻载还是重载之间的阈值可基于存储在着色器输入缓冲器50中的数据量。举例来说,如果存储在着色器输入缓冲器中的数据量包括十个或较少片段,那么深度逻辑单元54可以确定片段着色器程序被轻载。相反地,如果存储在着色器输入缓冲器中的数据量包括大于十个片段,那么深度逻辑单元54可以确定片段着色器程序被重载。
如果由光栅化器输出的片段通过深度测试单元48进行处理,那么GPU 12可以将由通过深度测试单元48进行处理而产生的片段存储到着色器输入缓冲器50中。由通过深度测试单元48进行处理而产生的此类片段可以包含少于由光栅化器输出的片段的片段,这是因为深度测试单元48可以舍弃从最终呈现的场景看会被遮蔽的片段中的一或多个。如果由光栅化器输出的片段不通过深度测试单元48进行处理,那么取决于深度逻辑单元54已确定片段着色器被轻载还是重载,GPU 12可以将由光栅化器输出的片段存储在着色器输入缓冲器50中。GPU 12可以将片段存储到着色器输入缓冲器50中,以使那些片段排队以供在处理器集群46上执行的片段着色器进行片断着色。因而,片段着色器处理一或多个片段可以包含GPU 12将所述一或多个片段存储到着色器输入缓冲器50中。
图7是说明用于在后期深度处理与保守深度处理之间进行动态切换的实例方法的流程图。如图7中所展示,所述方法可以包含通过GPU 12来确定在GPU 12上执行的片段着色器程序的工作负载(702)。所述处理可以进一步包含通过GPU 12来比较片段着色器程序的工作负载与阈值(704)。所述方法可以进一步包含响应于确定片段着色器程序的工作负载低于所述阈值,通过片段着色器程序来处理一或多个片段,而不在通过片段着色器程序进行处理之前,通过GPU 12来执行对所述一或多个片段的早期深度测试(706)。所述方法可以进一步包含在通过片段着色器程序进行处理之后,GPU 12执行对一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段(708)。所述方法可以进一步包含GPU 12将一或多个非遮蔽片段的像素值写入到帧缓冲器16中。
在一些实例中,确定片段着色器程序的工作负载是响应于GPU 12确定通过片段着色器程序输出的第二一或多个片段可用作用以对第二一或多个片段执行深度测试的用于GPU 12的输入。在一些实例中,所述方法进一步包含GPU 12针对由GPU 12的光栅化器产生的一或多个片段的每一交易,确定是否执行对由GPU12的光栅化器产生的相应一或多个片段的早期深度测试。
在一些实例中,所述方法进一步包含:响应于确定片段着色器程序的工作负载高于阈值,在后续时脉循环下再确定片段着色器程序的后续工作负载;以及响应于再确定片段着色器程序的后续工作负载低于阈值,通过片段着色器程序来处理一或多个片段,而GPU12不执行对一或多个片段的早期深度测试。
在一些实例中,所述方法进一步包含响应于GPU 12的光栅化器输出待通过片段着色器程序进行处理的第二一或多个片段,通过GPU 12在后续时脉循环下至少部分地基于通过片段着色器程序输出的第三一或多个片段是否可用作用以对第三一或多个像素执行深度测试的用于GPU 12的输入,确定是否执行对第二一或多个片段的早期深度测试。在一些实例中,所述方法进一步包含响应于确定第三一或多个片段不可用作用以对第三一或多个片段执行深度测试的用于GPU 12的输入,GPU 12对第二一或多个片段执行深度测试。在一些实例中,所述方法进一步包含通过片段着色器程序来处理由对第二一或多个片段执行深度测试而产生的第四一或多个片段。在一些实例中,所述方法进一步包含GPU 12执行对第四一或多个片段的后期深度测试。
在一些实例中,确定片段着色器程序的工作负载是至少部分地基于存储在着色器输入缓冲器50中以用于片段着色器的数据量。在一些实例中,确定片段着色器程序的工作负载低于阈值包括确定存储在着色器输入缓冲器50中的数据量不超过着色器输入缓冲器50的容量的一半。
在一些实例中,所述方法进一步包含响应于GPU 12的光栅化器输出在后续时脉循环下待通过片段着色器程序进行处理的第二一或多个片段,GPU 12在后续时脉循环下再确定片段着色器程序的工作负载。在一些实例中,所述方法进一步包含响应于在后续时脉循环下再确定片段着色器程序的工作负载高于指定阈值,GPU 12执行对第二一或多个片段的早期深度处理,之后通过片段着色器程序来对第二一或多个片段进行处理。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进计算机程序从一处传递至另一处的任何媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携带或存储呈指令或数据结构的形式的所需程序代码且可由计算机存取的任何其它媒体。并且,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波的无线技术从网站、服务器或其它远程源发射软件,那么所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波的无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”和“处理单元”可指代前述结构或适于实施本文中所描述的技术的任何其它结构中的任一个。另外,在一些方面中,本文中所描述的功能性可在经配置以用于编码和解码的专用硬件和/或软件模块内提供,或并入在组合编解码器中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
本公开的技术可以实施于各种装置或设备中,包含无线手持机、集成电路(IC)或IC组(即,芯片组)。本公开中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
描述了各种实例。这些和其它实例在所附权利要求书的范围内。

Claims (30)

1.一种图形处理方法,其包括:
通过图形处理单元GPU来确定在所述GPU上执行的片段着色器程序的工作负载;
通过所述GPU来比较所述片段着色器程序的所述工作负载与阈值;
响应于确定所述片段着色器的所述工作负载低于所述阈值,通过所述片段着色器程序来处理一或多个片段,而不在通过所述片段着色器程序进行所述处理之前执行对所述一或多个片段的早期深度测试;
在通过所述片段着色器程序进行处理之后,所述GPU执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段;和
所述GPU将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
2.根据权利要求1所述的方法,其进一步包括:
响应于所述GPU确定通过所述片段着色器程序输出的第二一或多个片段可供所述GPU使用以对所述第二一或多个片段执行深度测试,确定所述片段着色器程序的所述工作负载。
3.根据权利要求1所述的方法,其进一步包括:
针对由所述GPU的光栅化器产生的一或多个片段的每一交易,所述GPU确定是否执行对由所述GPU的所述光栅化器产生的所述一或多个片段的早期深度测试。
4.根据权利要求1所述的方法,其进一步包括:
响应于确定所述片段着色器程序的所述工作负载高于所述阈值,在后续时脉循环下再确定所述片段着色器程序的后续工作负载;和
响应于再确定所述片段着色器程序的所述后续工作负载低于所述阈值,通过所述片段着色器程序来处理所述一或多个片段,而所述GPU不执行对所述一或多个片段的早期深度测试。
5.根据权利要求1所述的方法,其进一步包括:
通过所述GPU的光栅化器来输出待通过所述片段着色器程序进行处理的第二一或多个片段;
响应于所述GPU的所述光栅化器输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,所述GPU在后续时脉循环下,至少部分地基于通过所述片段着色器程序输出的第三一或多个片段是否可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入,确定是否执行对第二一或多个片段的早期深度测试;
所述GPU确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入;
响应于确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入,所述GPU对所述第二一或多个片段执行早期深度测试;
通过所述片段着色器程序来处理由对所述第二一或多个片段执行早期深度测试而产生的第四一或多个片段;和
所述GPU执行对所述第四一或多个片段的后期深度测试。
6.根据权利要求1所述的方法,其进一步包括:
至少部分地基于存储在输入缓冲器中以用于所述片段着色器程序的数据量,确定所述片段着色器程序的所述工作负载。
7.根据权利要求6所述的方法,其中确定所述片段着色器程序的所述工作负载低于所述阈值包括:
确定存储在所述输入缓冲器中的所述数据量不超过所述输入缓冲器的容量的一半。
8.根据权利要求1所述的方法,其进一步包括:
所述GPU的光栅化器在后续时脉循环下输出待通过所述片段着色器程序进行处理的第二一或多个片段;
响应于所述GPU的所述光栅化器在所述后续时脉循环下输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,所述GPU在所述后续时脉循环下再确定所述片段着色器程序的所述工作负载;
响应于在所述后续时脉循环下所述再确定的所述片段着色器程序的工作负载高于所述阈值,所述GPU执行对所述第二一或多个片段的早期深度测试,之后通过所述片段着色器程序来处理所述第二一或多个片段。
9.一种经配置以处理图形数据的设备,其包括:
存储器,其存储一或多个片段;和
图形处理单元GPU,其经配置以:
确定在所述GPU上执行的片段着色器程序的工作负载;
比较所述片段着色器程序的所述工作负载与阈值;
响应于确定所述片段着色器的所述工作负载低于所述阈值,通过所述片段着色器程序来处理一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,所述GPU执行对所述一或多个片段的早期深度测试;
在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段;和
将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
10.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
响应于确定通过所述片段着色器程序输出的第二一或多个片段可供所述GPU使用以对所述第二一或多个片段执行深度测试,确定所述片段着色器程序的所述工作负载。
11.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
针对由所述GPU的光栅化器产生的一或多个片段的每一交易,确定是否执行对由所述GPU的所述光栅化器产生的所述一或多个片段的早期深度测试。
12.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
响应于确定所述片段着色器程序的所述工作负载高于所述阈值,在后续时脉循环下再确定所述片段着色器程序的后续工作负载;和
响应于再确定所述片段着色器程序的所述后续工作负载低于所述阈值,通过所述片段着色器程序来处理所述一或多个片段,而所述GPU不执行对所述一或多个片段的早期深度测试。
13.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
通过所述GPU的光栅化器来输出待通过所述片段着色器程序进行处理的第二一或多个片段;
响应于所述GPU的所述光栅化器输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,在后续时脉循环下,至少部分地基于通过所述片段着色器程序输出的第三一或多个片段是否可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入,确定是否执行对第二一或多个片段的早期深度测试;
确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入;
响应于确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述GPU的输入,对所述第二一或多个片段执行早期深度测试;
通过所述片段着色器程序来处理由对所述第二一或多个片段执行早期深度测试而产生的第四一或多个片段;和
在所述片段着色器程序处理所述第四一或多个片段之后,执行对所述第四一或多个片段的后期深度测试。
14.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
至少部分地基于存储在输入缓冲器中以用于所述片段着色器程序的数据量,确定所述片段着色器程序的所述工作负载。
15.根据权利要求14所述的设备,其中所述GPU经进一步配置以:
确定存储在所述输入缓冲器中的所述数据量不超过所述输入缓冲器的容量的一半。
16.根据权利要求9所述的设备,其中所述GPU经进一步配置以:
所述GPU的光栅化器在后续时脉循环下输出待通过所述片段着色器程序进行处理的第二一或多个片段;
响应于所述GPU的所述光栅化器在所述后续时脉循环下输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,在所述后续时脉循环下再确定所述片段着色器程序的所述工作负载;和
响应于在所述后续时脉循环下所述再确定的所述片段着色器程序的工作负载高于所述阈值,执行对所述第二一或多个片段的早期深度测试,之后通过所述片段着色器程序来处理所述第二一或多个片段。
17.一种用于图形处理的设备,其包括:
确定在图形处理单元GPU上执行的片段着色器程序的工作负载的装置;
用于比较所述片段着色器程序的所述工作负载与阈值的装置;
用于响应于确定所述片段着色器的所述工作负载低于所述阈值,处理一或多个片段,而不在通过所述片段着色器程序进行所述处理之前执行对所述一或多个片段的早期深度测试的装置;
用于在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一或多个非遮蔽片段的装置;和
用于将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中的装置。
18.根据权利要求17所述的设备,其进一步包括:
用于响应于确定通过所述片段着色器程序输出的第二一或多个片段可用以对所述第二一或多个片段执行深度测试、确定所述片段着色器程序的所述工作负载,确定所述片段着色器程序的所述工作负载的装置。
19.根据权利要求17所述的设备,其进一步包括:
用于针对由所述GPU的光栅化器产生的一或多个片段的每一交易,确定是否执行对由所述GPU的所述光栅化器产生的所述一或多个片段的早期深度测试的装置。
20.根据权利要求17所述的设备,其进一步包括:
用于响应于确定所述片段着色器程序的所述工作负载高于所述阈值,在后续时脉循环下再确定所述片段着色器程序的后续工作负载;和
用于响应于再确定所述片段着色器程序的所述后续工作负载低于所述阈值,通过所述片段着色器程序来处理所述一或多个片段,而不执行对所述一或多个片段的早期深度测试的装置。
21.根据权利要求17所述的设备,其进一步包括:
用于输出待通过所述片段着色器程序进行处理的第二一或多个片段的装置;
用于响应于输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,在后续时脉循环下,至少部分地基于通过所述片段着色器程序输出的第三一或多个片段是否可用以对所述第三一或多个片段执行深度测试,确定是否执行对第二一或多个片段的早期深度测试的装置;
用于确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的输入的装置;
用于响应于确定所述第三一或多个片段不可用以对所述第三一或多个片段执行深度测试,对所述第二一或多个片段执行早期深度测试的装置;
用于处理由对所述第二一或多个片段执行早期深度测试产生的第四一或多个片段的装置;和
用于执行对所述第四一或多个片段的后期深度测试的装置。
22.根据权利要求17所述的设备,其进一步包括:
用于至少部分地基于存储在输入缓冲器中以用于所述片段着色器程序的数据量,确定所述片段着色器程序的所述工作负载的装置。
23.根据权利要求22所述的设备,其中用于确定所述片段着色器程序的所述工作负载低于所述阈值的所述装置包括:
用于确定存储在所述输入缓冲器中的所述数据量不超过所述输入缓冲器的容量的一半的装置。
24.一种存储指令的计算机可读存储媒体,所述指令在被执行时致使一或多个可编程处理器:
确定在所述一或多个可编程处理器上执行的片段着色器程序的工作负载;
比较所述片段着色器程序的所述工作负载与阈值;
响应于确定所述片段着色器程序的所述工作负载低于所述阈值,通过所述片段着色器程序来处理一或多个片段,而不在通过所述片段着色器程序进行所述处理之前,通过所述一或多个可编程处理器来执行对所述一或多个片段的早期深度测试;
在通过所述片段着色器程序进行处理之后,执行对所述一或多个片段的后期深度测试,从而产生一个或多个非遮蔽片段;和
将所述一或多个非遮蔽片段的像素值写入到帧缓冲器中。
25.根据权利要求24所述的计算机可读存储媒体,其中所述指令在执行时进一步致使所述一或多个可编程处理器进行以下操作:
响应于所述一或多个可编程处理器确定通过所述片段着色器程序输出的第二一或多个片段可供所述一或多个可编程处理器使用以对所述第二一或多个片段执行深度测试,确定所述片段着色器程序的所述工作负载。
26.根据权利要求24所述的计算机可读存储媒体,其中所述指令在执行时进一步致使所述一或多个可编程处理器进行以下操作:
针对由光栅化器产生的一或多个片段的每一交易,确定是否执行对由所述光栅化器产生的所述一或多个片段的早期深度测试。
27.根据权利要求24所述的计算机可读存储媒体,其中所述指令在执行时进一步致使所述一或多个可编程处理器进行以下操作:
响应于确定所述片段着色器程序的所述工作负载高于所述阈值,在后续时脉循环下再确定所述片段着色器程序的后续工作负载;和
响应于再确定所述片段着色器程序的所述后续工作负载低于所述阈值,通过所述片段着色器程序来处理所述一或多个片段,所述一或多个可编程处理器而不执行对所述一或多个片段的早期深度测试。
28.根据权利要求24所述的计算机可读存储媒体,其中所述指令在执行时进一步致使所述一或多个可编程处理器进行以下操作:
由所述一或多个可编程处理器的光栅化器输出待通过所述片段着色器程序进行处理的第二一或多个片段;
响应于所述一或多个可编程处理器的所述光栅化器输出待通过所述片段着色器程序进行处理的所述第二一或多个片段,在后续时脉循环下,至少部分地基于通过所述片段着色器程序输出的第三一或多个片段是否可用作用以对所述第三一或多个片段执行深度测试的用于所述一或多个可编程处理器的输入,确定是否执行对第二一或多个片段的早期深度测试;
确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述一或多个可编程处理器的输入;
响应于确定所述第三一或多个片段不可用作用以对所述第三一或多个片段执行深度测试的用于所述一或多个可编程处理器的输入,对所述第二一或多个片段执行早期深度测试;
通过所述片段着色器程序来处理由对所述第二一或多个片段执行早期深度测试而产生的第四一或多个片段;和
在所述片段着色器程序处理所述第四一或多个片段之后,执行对所述第四一或多个片段的后期深度测试。
29.根据权利要求24所述的计算机可读存储媒体,其中所述指令在执行时进一步致使所述一或多个可编程处理器进行以下操作:
至少部分地基于存储在输入缓冲器中以用于所述片段着色器程序的数据量,确定所述片段着色器程序的所述工作负载。
30.根据权利要求29所述的计算机可读存储媒体,其中确定所述片段着色器程序的所述工作负载低于所述阈值包括:
确定存储在所述输入缓冲器中的所述数据量不超过所述输入缓冲器的容量的一半。
CN201680054603.7A 2015-09-23 2016-07-26 后期深度测试与保守深度测试之间的动态切换 Active CN108027956B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/862,532 2015-09-23
US14/862,532 US9824458B2 (en) 2015-09-23 2015-09-23 Dynamically switching between late depth testing and conservative depth testing
PCT/US2016/044060 WO2017052750A2 (en) 2015-09-23 2016-07-26 Dynamically switching between late depth testing and conservative depth testing

Publications (2)

Publication Number Publication Date
CN108027956A CN108027956A (zh) 2018-05-11
CN108027956B true CN108027956B (zh) 2021-05-25

Family

ID=56567718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680054603.7A Active CN108027956B (zh) 2015-09-23 2016-07-26 后期深度测试与保守深度测试之间的动态切换

Country Status (7)

Country Link
US (1) US9824458B2 (zh)
EP (1) EP3353746B1 (zh)
JP (1) JP6595101B2 (zh)
KR (1) KR102006584B1 (zh)
CN (1) CN108027956B (zh)
BR (1) BR112018005770A2 (zh)
WO (1) WO2017052750A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9986225B2 (en) * 2014-02-14 2018-05-29 Autodesk, Inc. Techniques for cut-away stereo content in a stereoscopic display
US10580200B2 (en) 2017-04-07 2020-03-03 Intel Corporation Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp
US11270471B2 (en) 2018-10-10 2022-03-08 Bentley Systems, Incorporated Efficient refinement of tiles of a HLOD tree
WO2020081347A1 (en) * 2018-10-14 2020-04-23 Bentley Systems, Incorporated Conversion of infrastructure model geometry to a tile format
CN111367780B (zh) * 2020-03-30 2024-02-09 芯瞳半导体技术(山东)有限公司 一种gpu的性能测试方法、装置及计算机存储介质
CN111640162B (zh) * 2020-05-24 2024-01-23 中信银行股份有限公司 一种基于交通路网的测试结果展示方法、装置、设备和计算机可读存储介质
GB2590748B (en) * 2020-06-30 2022-02-02 Imagination Tech Ltd Method and graphics processing system for rendering one or more fragments having shader-dependent properties
CN116710965B (zh) * 2020-09-29 2025-08-01 华为技术有限公司 粗粒度深度测试方法以及图形处理器
WO2022110084A1 (zh) * 2020-11-28 2022-06-02 华为技术有限公司 像素处理方法以及图形处理器
US12182023B2 (en) * 2021-06-23 2024-12-31 Intel Corporation Opportunistic late depth testing to prevent stalling for overlapping cache lines

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200632778A (en) * 2005-03-04 2006-09-16 Alpha Imaging Technology Corp Shading engine
WO2008037954A2 (en) * 2006-09-29 2008-04-03 Imagination Technologies Limited Improvements in memory management for systems for generating 3-dimensional computer images
CN101689306A (zh) * 2007-02-16 2010-03-31 高通股份有限公司 有效的二维及三维图形处理
CN102509336A (zh) * 2011-10-24 2012-06-20 克拉玛依红有软件有限责任公司 一种gpu加速的实时立体渲染方法
CN104050705A (zh) * 2013-03-13 2014-09-17 辉达公司 处置光栅操作中的post-z覆盖数据
CN104813367A (zh) * 2012-04-04 2015-07-29 高通股份有限公司 图形处理中的拼补着色

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8860721B2 (en) 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US9076265B2 (en) 2006-06-16 2015-07-07 Ati Technologies Ulc System and method for performing depth testing at top and bottom of graphics pipeline
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
KR101782044B1 (ko) * 2011-02-22 2017-09-26 삼성전자주식회사 그래픽 프로세서 및 조기 가시성 테스트 방법
KR20130123645A (ko) * 2012-05-03 2013-11-13 삼성전자주식회사 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
US8941676B2 (en) 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9214006B2 (en) 2013-06-04 2015-12-15 Arm Limited Hidden surface removal in graphics processing systems
US9536333B2 (en) 2013-10-17 2017-01-03 Arm Limited Method and apparatus for improved processing of graphics primitives
GB201503125D0 (en) * 2015-02-25 2015-04-08 Advanced Risc Mach Ltd Graphics processing systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200632778A (en) * 2005-03-04 2006-09-16 Alpha Imaging Technology Corp Shading engine
WO2008037954A2 (en) * 2006-09-29 2008-04-03 Imagination Technologies Limited Improvements in memory management for systems for generating 3-dimensional computer images
CN101689306A (zh) * 2007-02-16 2010-03-31 高通股份有限公司 有效的二维及三维图形处理
CN102509336A (zh) * 2011-10-24 2012-06-20 克拉玛依红有软件有限责任公司 一种gpu加速的实时立体渲染方法
CN104813367A (zh) * 2012-04-04 2015-07-29 高通股份有限公司 图形处理中的拼补着色
CN104050705A (zh) * 2013-03-13 2014-09-17 辉达公司 处置光栅操作中的post-z覆盖数据

Also Published As

Publication number Publication date
KR20180054814A (ko) 2018-05-24
EP3353746A2 (en) 2018-08-01
BR112018005770A2 (pt) 2018-10-09
JP2018532190A (ja) 2018-11-01
WO2017052750A3 (en) 2017-05-18
EP3353746B1 (en) 2019-05-01
CN108027956A (zh) 2018-05-11
US20170084043A1 (en) 2017-03-23
WO2017052750A2 (en) 2017-03-30
JP6595101B2 (ja) 2019-10-23
US9824458B2 (en) 2017-11-21
KR102006584B1 (ko) 2019-08-01

Similar Documents

Publication Publication Date Title
CN108027956B (zh) 后期深度测试与保守深度测试之间的动态切换
US9679347B2 (en) Shader pipeline with shared data channels
EP3427229B1 (en) Visibility information modification
CN108027955B (zh) 经带宽压缩的图形数据的存储技术
CN109564694B (zh) 用于基于入库的图形处理的顶点着色器
CN108027957A (zh) 用于上下文切换的上下文信息的高效保存和恢复
US9852539B2 (en) Single pass surface splatting
CN107077716B (zh) 用于图形处理的动态管线
CN111406277A (zh) 以微砖为基础的低分辨率深度存储
US10089708B2 (en) Constant multiplication with texture unit of graphics processing unit
CN110892383A (zh) 增量常量负载的延迟批处理

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