CN111406277A - 以微砖为基础的低分辨率深度存储 - Google Patents

以微砖为基础的低分辨率深度存储 Download PDF

Info

Publication number
CN111406277A
CN111406277A CN201880075972.3A CN201880075972A CN111406277A CN 111406277 A CN111406277 A CN 111406277A CN 201880075972 A CN201880075972 A CN 201880075972A CN 111406277 A CN111406277 A CN 111406277A
Authority
CN
China
Prior art keywords
micro
tile
depth
depth values
values
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
CN201880075972.3A
Other languages
English (en)
Other versions
CN111406277B (zh
Inventor
J·威克斯
K·马特拉吉
R·万雷内恩
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 CN111406277A publication Critical patent/CN111406277A/zh
Application granted granted Critical
Publication of CN111406277B publication Critical patent/CN111406277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • 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
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer

Abstract

本发明描述用于使用图形处理单元GPU生成用于微砖的像素的深度值的技术。所述微砖是帧的多个微砖中的一个。所述GPU可将用于所述像素的第一数目的所述深度值存储于所述GPU内部的微砖存储器中。所述微砖存储器配置成存储用于所述帧的所述微砖的图像内容。所述GPU可将存储于所述微砖存储器中的第二数目的所述深度值写入到系统存储器。所述第二数目小于所述第一数目。

Description

以微砖为基础的低分辨率深度存储
根据35 U.S.C.§119的优先权主张
本专利申请案主张2017年12月5日申请的名为“以微砖为基础的低分辨率深度存储(TILE-BASED LOW-RESOLUTION DEPTH STORAGE)”的第15/832,118号非临时申请案的优先权,所述非临时申请案转让给其受让人且特此以引用的方式明确并入本文中。
技术领域
本公开涉及图形处理。
背景技术
计算装置通常利用图形处理单元(graphics processing unit;GPU)来促进对显示器的图形数据的再现,并利用显示处理器来生成驱动显示器的信号。此类计算装置可包含例如计算机工作台、例如所谓智能电话的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制面板。GPU典型地执行图形处理流水线,所述图形处理流水线包含一同操作以执行图形处理命令的多个处理阶段。主机中央处理单元(central processing unit;CPU)可通过向GPU发出一或多个图形处理命令来控制GPU的操作。显示处理器检索由GPU生成的图像内容并进一步处理所述图像内容以生成用以驱动显示器的信号,从而促使显示器呈现图像内容。
发明内容
本公开描述用于存储在图像帧的图像内容的再现期间所生成的深度值的技术。在以微砖为基础的图形处理单元(GPU)架构中,GPU确定例如颜色、不透明度的像素值和用于微砖中的像素的深度值,其中微砖是图像帧的一部分。在称为解析微砖存储器的过程中,GPU将像素值存储于GPU内部的本地微砖存储器中,且在再现微砖之后,将像素值存储到GPU外部的系统存储器。在一些实例中,GPU可将深度值的子集(例如少于全部)从微砖存储器写入到系统存储器,而非写出全部所确定的深度值。以此方式,在将像素值从微砖存储器解析到系统存储器期间,GPU限制所需写出的深度值的量,其可促进高效带宽和存储器利用率,且减少了处理。
在一个实例中,本公开描述一种生成图像内容的方法,所述方法包括使用图形处理单元(GPU)生成用于帧的微砖的像素的深度值;将用于像素的第一数目的深度值存储于GPU内部的微砖存储器中,其中微砖存储器配置成存储用于帧的微砖的图像内容;和将存储于微砖存储器中的第二数目的深度值写入到系统存储器,其中第二数目小于第一数目。
在一个实例中,本公开描述一种用于生成图像内容的装置,所述装置包括系统存储器和包含微砖存储器的图形处理单元(GPU)。GPU配置成生成用于帧的微砖的像素的深度值;将用于像素的第一数目的深度值存储于微砖存储器中,其中微砖存储器配置成存储用于帧的微砖的图像内容;和将存储于微砖存储器中的第二数目的深度值写入到系统存储器,其中第二数目小于第一数目。
在一个实例中,本公开描述一种其上存储有指令的计算机可读存储媒体,所述指令在执行时促使图形处理单元(GPU)生成用于帧的微砖的像素的深度值;将用于像素的第一数目的深度值存储于GPU内部的微砖存储器中,其中微砖存储器配置成存储用于帧的微砖的图像内容;和将存储于微砖存储器中的第二数目的深度值写入到系统存储器,其中第二数目小于第一数目。
在一个实例中,本公开描述一种用于生成图像内容的装置,所述装置包括系统存储器和包含微砖存储器的图形处理单元(GPU)。GPU进一步包括:用于生成用于帧的微砖的像素的深度值的装置;用于将用于像素的第一数目的深度值存储于微砖存储器中的装置,其中微砖存储器配置成存储用于帧的微砖的图像内容;和用于将存储于微砖存储器中的第二数目的深度值写入到系统存储器的装置,其中第二数目小于第一数目。
在附图和以下描述中阐述本公开的一或多个实例的细节。本公开的其它特征、目标和优势将从描述和图式以及从权利要求书显而易见。
附图说明
图1是说明可用以实施本公开的技术的一实例计算装置的框图。
图2是进一步详细说明图1的计算装置的CPU、GPU和存储器的框图。
图3A和3B是说明经过评估以用于存储深度值的像素的概念图。
图4是说明存储深度值的一实例方法的流程图。
具体实施方式
在例如作为两个非限制性实例的虚拟现实(virtual reality;VR)和/或扩增实境(augmented reality;AR)系统的一些图形再现系统中,图像帧的像素的深度值可适用于用以对图像帧的图像内容进行合成的合成器(例如显示处理器)。因此,图形处理单元(GPU)生成用于像素的颜色值、不透明度(通常标记为α)值和深度值作为对图像帧的再现的部分。在一些技术中,GPU将深度值的全部内容存储于与GPU分离的系统存储器中,其可能费带宽且费时间。
本公开描述用以减少存储到系统存储器的深度值的数目的实例技术。所述实例技术参照以微砖为基础的GPU架构来描述。在以微砖为基础的GPU架构中,帧包含多个框组(或微砖)。在装仓遍次期间,GPU确定哪些绘制在每一微砖中可见(例如,例如帧的基元的哪一图像内容属于哪一微砖),且确定一些额外基元可见度信息。在再现遍次期间,GPU对用于微砖的像素的图像内容进行再现(例如生成颜色、不透明度和深度信息),且在逐微砖基础上重复这一过程。
对于微砖,在将微砖存储器写出到系统存储器之前(例如在解析微砖存储器之前),GPU将颜色值、不透明度值和深度值存储于GPU的微砖存储器中。微砖存储器在GPU内部,且系统存储器在GPU外部。在一或多个实例中,GPU可写出微砖中的像素的深度值的仅一部分(例如少于全部),而非写出微砖中的像素的全部深度值。举例来说,用于每一像素的深度值对于例如VR中的时间扭曲(TimeWarp)操作的后处理操作可能并非必要。相反,可能仅需要深度值的一小部分(例如少于10%,且甚至低到1%)来达成相对高质量的后处理。举例来说,GPU即便使用深度值的仅一小部分也可达成时间扭曲操作的所要效果。
作为说明,假设对于大小是N乘M的微砖,GPU生成N乘M个像素值,且因此N乘M个深度值。在一些实例中,例如低分辨率深度缓冲器,或所谓低分辨率Z缓冲器或LRZ缓冲器,GPU可生成N/X乘M/X个深度值,其中X是大于一的正值。然而,可能仅需要ND乘MD个深度值,其中ND在不使用LRZ缓冲器的实例中小于N,且在使用LRZ缓冲器的实例中是N/X,且MD在不使用LRZ缓冲器的实例中小于M,且在使用LRZ缓冲器的实例中是M/X。
在本公开中所描述的实例技术中,GPU可配置成将ND乘MD个深度值(而非N乘M个)或N/X乘M/X个深度值写出到系统存储器,进而节省带宽和时间且具有减少的处理。举例来说,微砖存储器可存储N乘M个和/或N/X乘M/X个深度值,但作为将深度值从微砖存储器写出到系统存储器的部分,GPU可仅写出ND乘MD个深度值。GPU可在对微砖的图像内容的再现之后且在再现下一微砖的图像内容之前执行此类操作。换句话说,GPU可在对微砖的图像内容的再现之后在逐微砖基础上执行此类操作。
此处GPU可以各种方式确定将哪些深度值写入到系统存储器。作为一个实例,GPU可写出N个深度值的每第10个深度值,并写出M个深度值的每第10个深度值(例如写出每第100个深度值)以将所写深度值减小100×。如果GPU写出N个深度值的每第8个深度值和M个深度值的每第5个深度值,那么所写深度值可存在40×的减小。作为另一实例,显影器可对将写出哪些深度值进行限定。
此处GPU可以各种方式写出ND乘MD个深度值。作为一个实例,GPU可执行检索N乘M个深度值作为来自微砖存储器的纹理映射的着色器(例如片段着色器或解析着色器的一实例)。着色器配置成舍弃(N-ND)乘(M-MD)个深度值,并写出ND乘MD个深度值。然而,在这一实例中,着色器需要对N乘M个像素中的每一个执行N乘M次。举例来说,在此实例中,纹理映射可限定为具有大小N乘M。因此,着色器在大小是N乘M的纹理映射中的每一纹素上执行。纹素是用以指代N乘M纹理映射中的样本(例如纹理元素)的通用术语。在这一实例中,纹素是深度样本。
举例来说,深度样本指代N乘M纹理映射中的样本。每一深度样本与指示深度样本的深度的深度值相关联。另外,每一深度样本与微砖中的像素相关联。
在一些实例中,着色器处理器可执行配置成仅对需要保留的深度样本进行操作的着色器。举例来说,在微砖存储器中的特定位置处,着色器可针对待保留的深度样本中的每一个限定大小是1乘1的纹理映射,以使得GPU写出ND乘MD个深度值。着色器可执行所述纹素(例如深度样本)并写出所述纹素(例如深度样本)作为深度值。在这一实例中,着色器可仅执行ND乘MD次。
作为一些额外实例,着色器可限定具有不同大小(例如A乘B,其中A乘B小于N乘M)的多个纹理映射。着色器可执行以检索A乘B个值。着色器可对所述值取平均值,确定具有最高值的值,或以某一其它方式执行筛选以确定用于写入到系统存储器的最终深度值。
在一些实例中,为执行这一着色器,在用以再现微砖的图像内容的全部其它绘制调用之后,显影器可包含新的绘制调用。这一绘制调用可利用着色器,所述着色器包含用以提取并读取来自微砖存储器的深度值并写出所确定的深度值的命令确定。显影器也可将用以写出完整深度信息的命令舍弃。在一些实例中,编译程序或图形驱动器可在本申请案的源码(例如经由图形驱动器)中或目标码(例如经由编译程序)中包含绘制调用,而非显影器包含此类绘制调用。
用以提取并读取深度值的命令可以是当前在现有API中可用的命令。因此,可能并不需要对现有API进行修改来执行本公开中所描述的实例技术。换句话说,可使用现有API中的命令来执行实例技术以减少需要存储的深度值的量。
图1是说明可用以实施本公开的技术的一实例计算装置2的框图。计算装置2可包括:摄影机、计算机(例如个人计算机、桌面计算机、膝上型计算机、平板计算机和/或计算机工作站)、视频游戏平台或控制面板、例如无线通信装置(例如移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)的移动装置、固定电话、因特网电话、例如便携式视频游戏装置或个人数字助理(personal digital assistant;PDA)的手持式装置、个人音乐播放器、视频播放器、显示装置、电视、机顶盒、广播接收器、服务器、中间网络装置、主计算机或处理和/或显示图形数据的任一其它类型的装置。
如图1的实例中所说明,计算装置2包含用户输入接口4、CPU 6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、GPU 12的本地存储器14、显示处理器16、显示器18、位姿监视器电路19和总线20。用户输入接口4、CPU 6、存储器控制器8、GPU 12和显示处理器16可使用总线20彼此通信。总线20可以是多种总线结构中的任一种,例如第三代总线(例如超传输(HyperTransport)总线或无线带宽(InfiniBand)总线)、第二代总线(例如高级图形端口总线、周边组件互连(Peripheral Component Interconnect;PCI)快速总线或高级可扩展接口(Advanced eXtensible Interface;AXI)总线)或另一类型的总线或装置互连件。应注意,图1中所示的不同组件之间的总线和通信接口的特定配置仅为示范性的,且计算装置的其它配置和/或具有相同或不同组件的其它图形处理系统可用以实施本公开的技术。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可向计算装置2提供输入以促使CPU 6执行一或多种软件应用程序。CPU 6上所执行的软件应用程序可包含例如操作系统、字处理器应用程序、电子邮件应用程序、总分析表应用程序、媒体播放器应用程序、媒体编辑应用程序、视频游戏应用程序、图形用户接口应用程序、电话会议应用程序或另一种程序。用户可经由一或多个输入装置(未展示)向计算装置2提供输入,所述输入装置例如键盘、鼠标、麦克风、触摸板或经由用户输入接口4耦合到计算装置2的另一输入装置。
CPU 6上所执行的软件应用程序可包含指示CPU 6促使对显示器18的图形数据的再现的一或多个图形再现指令。在一些实例中,软件指令可符合图形应用程序编程接口(application programming interface;API),例如开放图形程序馆
Figure BDA0002506206970000051
API、开放图形程序馆嵌入式系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGLAPI或任何其它公用或专用标准图形API。为处理图形再现指令,CPU 6可向GPU 12发出一或多个图形再现命令以促使GPU 12执行对图形数据的再现的一些或全部。在一些实例中,待再现的图形数据可包含例如点、线、三角形、四边形、三角形带等的图形基元的列表。
存储器控制器8促进将数据转移进入到和离开系统存储器10。举例来说,存储器控制器8可接收存储器读取和写入命令,且对关于存储器10的此类命令进行服务以便提供用于计算装置2中的组件的存储器服务。将存储器控制器8以通信方式耦合到系统存储器10。尽管在图1的实例计算装置2中将存储器控制器8说明为与CPU 6和系统存储器10两者分离的处理模块,但在其它实例中,可将存储器控制器8的功能性中的一些或全部实施于CPU 6和系统存储器10中的一个或两个上。
系统存储器10可存储可由CPU 6存取以用于执行的程序模块和/或指令和/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用程序和与所述应用程序相关联的图形数据。系统存储器10可额外地存储供计算装置2的其它组件使用和/或由所述计算装置的其它组件所生成的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器,且可存储待由GPU 12操作的数据以及产生于通过GPU 12执行的操作的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或类似物的任何组合。另外,系统存储器10可存储命令流以供GPU 12处理。系统存储器10可包含一或多种易失性或非易失性存储器或存储装置,例如随机存取存储器(randomaccess memory;RAM)、静态RAM(static RAM;SRAM)、动态RAM(dynamic RAM;DRAM)、只读存储器(read-only memory;ROM)、可擦除可编程ROM(erasable programmable ROM;EPROM)、电可擦除可编程ROM(electrically erasable programmable ROM;EEPROM)、闪存、磁性数据媒体或光学存储媒体。
GPU 12可配置成执行图形操作从而向显示器18再现一或多个图形基元。因此,当于CPU 6上执行的软件应用程序中的一个需要图形处理时,CPU 6可向GPU 12提供图形命令和图形数据以用于向显示器18再现。图形命令可包含例如绘制命令(例如绘制调用)、GPU状态程序设计命令、存储器转移命令、通用计算命令、核心执行命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到存储器10而将命令和图形数据提供到GPU 12,所述存储器可由GPU 12存取。在一些实例中,GPU 12可进一步配置成针对在CPU 6上执行的应用程序执行通用计算。
在一些情况下,相较于CPU 6,GPU 12可构建有提供对向量运算更有效的处理的高度并行结构。举例来说,GPU 12可包含配置成按并行方式对多个顶点或像素进行操作的多个处理组件。在一些情况下,相较于使用CPU 6直接将场景绘制到显示器18,GPU 12的高度并行性质可允许GPU 12更快速地将图形图像(例如GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。另外,相较于CPU 6,GPU 12的高度并行性质可允许GPU 12更快速地对用于通用计算应用程序的某些类型的向量和矩阵运算进行处理。
在一些情况下,GPU 12可集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形适配器上,所述图形适配器安装于计算装置2的母板中的端口中或可以其它方式并入配置成与计算装置2互操作的周边装置内。在其它情况下,GPU 12可定位于与CPU 6相同的微芯片上,从而形成系统单芯片(system on a chip;SoC)。GPU 12可包含一或多个处理器,例如一或多个微处理器、特殊应用集成电路(application specific integratedcircuit;ASIC)、场可编程门阵列(field programmable gate array;FPGA)、数字信号处理器(digital signal processor;DSP),或其它等效集成电路或离散逻辑电路。
GPU 12可直接耦合到GPU本地存储器14。因此,GPU 12可在不必使用总线20的情况下从GPU本地存储器14读取数据以及将数据写入到所述GPU本地存储器。换句话说,GPU 12可使用本地存储器而非芯片外存储器在本地处理数据。这通过消除GPU 12经由总线20读取和写入数据的需要来允许GPU 12以更高效的方式操作,所述经由总线的读取和写入可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独高速缓存,但代替地经由总线20利用系统存储器10。GPU本地存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据媒体或光学存储媒体。
CPU 6和/或GPU 12可将再现图像数据存储于分配在系统存储器10内的帧缓冲器中。显示处理器16可从帧缓冲器检索数据且将显示器18配置成显示由再现图像数据所表示的图像。在一些实例中,显示处理器16可包含配置成将从帧缓冲器检索的数字值转换为显示器18可消耗的模拟信号的数字到模拟转换器(digital-to-analog converter;DAC)。在其它实例中,显示处理器16可直接将数字值传递到显示器18以用于处理。显示器18可包含:监视器、电视、投影装置、液晶显示器(liquid crystal display;LCD)、等离子体显示板、发光二极管(light emitting diode;LED)阵列、阴极射线管(cathode ray tube;CRT)显示器、电子纸、表面传导电子发射显示器(surface-conduction electron-emitted display;SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。
显示器18可集成于计算装置2内。举例来说,显示器18可以是移动电话手持机或平板计算机的屏幕。替代地,显示器18可以是经由有线或无线通信链路耦合到计算装置2的独立装置。举例来说,显示器18可以是经由电缆或无线链路连接到个人计算机的计算机监视器或平板显示器。
如上文所描述,GPU 12生成用于最终显示的图像内容。图像内容的实例包含图像帧的像素的像素值。像素值包含颜色值、深度值和/或不透明度值。颜色值可包含红色分量值、绿色分量值和蓝色分量值(例如RGB值)。
深度值指示像素在图像帧中的相对深度。举例来说,可在图像帧中为每一像素指定(x,y,z)坐标。x、y坐标值可指示像素在图像帧中的位置,且z坐标值可指示像素在图像帧中的深度。不透明度值指示像素不透明的程度,以及是否一像素遮挡另一像素和遮挡的程度。举例来说,完全不透明且相较于另一像素具有较小z坐标值的像素可完全遮挡另一像素。然而,部分不透明且相较于另一像素具有较小z坐标值的像素可能并不完全遮挡另一像素。在此实例中,两个像素的颜色值可掺混在一起以生成用于显示器的最终像素值,其中所述掺混是基于各别不透明度值。
显示于显示器18上的最终图像帧为2D图像。然而,使像素具有深度值可适用于各种应用程序。作为一个实例,深度值可适用于虚拟现实(VR)或扩增实境(AR)应用程序。
在例如游戏应用程序的一些VR应用程序中,用户将计算装置2附接到其头部(例如计算装置2为头戴式显示器(head mounted display;HMD)装置)并观看显示器18上的图像内容。因为计算装置2确定用户相对于正显示的图像内容的位置和观看角度,所以用户可透过图像内容“移动”。作为一实例,显示器18可呈现走廊的图像内容,其中沿走廊有房间且走廊中有对象。用户感知到如同其(he/she)步行穿过走廊并进入房间或朝四周(例如后方、左侧或右侧)观看走廊中的对象一般。在这些实例中,用于像素的深度值可适用于确定需要再现什么部分以使得用户不会体验到遮挡区(例如空白空间)。
在一些AR应用程序中,虚拟对象连同现实世界对象一起呈现。用户可与虚拟对象交互或以其它方式在现实世界空间中操控虚拟对象。在这些实例中,使像素具有深度值也可适用于确定需要再现和/或显示的图像内容。
深度值可适用于使用3D空间的应用程序。VR和AR应用程序是使用3D空间的应用程序的两个实例,且所述技术不限于VR和AR应用程序。更一般来说,本公开中所描述的实例技术可适用于使用深度值的应用程序,无论所述应用程序是否供用于3D空间中。为易于描述,参照VR和AR应用程序来描述实例,但所述技术并不如此受限制。
在VR应用程序中,存在处理的眼部缓冲器轮次和处理的扭曲轮次。在眼部缓冲器轮次中,GPU 12基于如通过位置电路(未说明)所确定的用户正在何处观看图像内容(例如基于头部和/或眼部位置)来再现图像内容。另外,在用户做出头部或眼部位置的任何突然改变的情况下,GPU 12可再现超出用户当前可观看图像内容的图像内容,以使得存在可供用于用户观看的图像内容。
在扭曲轮次中,GPU 12可利用在眼部缓冲器轮次期间再现的图像内容,并在眼部缓冲器轮次之后,在用户移动其(他/她)头部的情况下基于当前头部位置使图像内容扭曲。在此情况下,如果存在头部位置移动,那么GPU 12可使用在眼部缓冲器轮次期间再现的图像内容以用于扭曲,以使得图像内容目前可用。举例来说,在四自由度(four degrees offreedom;4DOF)异步时间扭曲(例如扭曲)中,GPU 12可使用深度值基于平移头部移动(例如在接收到用于眼部缓冲器轮次的图像信息并再现图像内容以用于显示之后的时间内的头部移动)来改善扭曲。
作为眼部缓冲器轮次的部分,GPU 12可向系统存储器10的眼部缓冲器写入再现像素的像素值。举例来说,GPU 12可写入颜色值、不透明度值和深度值。然而,就功率和性能而言,对深度值的存储可为昂贵的。举例来说,GPU 12可典型地利用用于存储深度值的移动VR应用程序中的眼部缓冲器帧时间(例如在眼部缓冲器轮次期间写入像素值所需的时间)的大约30%到40%。
在一些实例中,在存储深度值之前,GPU 12可执行压缩和/或下采样(例如多重采样去锯齿(multisample anti-aliasing;MSAA)下采样)。压缩和/或下采样可以是一种实例方式,GPU 12可以所述方式减少存储的深度值的量。在一些实例中,除压缩和/或下采样以外或替代压缩和/或下采样,GPU 12可执行实例技术以进一步减少存储的深度值的量。然而,无需在每一实例中执行用以进一步减少存储的深度值的量的技术。在一些实例中,GPU12可并不配置成执行压缩和/或下采样。
此外,对深度值的读取可能导致延迟扭曲操作。举例来说,因为在眼部缓冲器轮次期间写入深度值,所以GPU 12可利用在扭曲轮次期间读回深度值的时间和功率。此外,因为系统存储器10可存储全部深度值,所以系统存储器10中的存储器空间可能并未有效利用。
在一些实例中,并非全部深度值均用于再现对图像质量具有受限效果(例如即使并不使用全部深度值,图像质量也可处于所要水平下)的图像内容。在一些情况下,可使用少到1%的深度值。
本公开描述一种灵活方式,GPU 12可以所述方式仅存储有限数目的深度值,以减少GPU 12需要写入到系统存储器10且随后需要从系统存储器10读取的信息的量。实例技术可以是灵活的以使得显影器可选择性确定应写入多少深度值。如此,对于使用相对高的量的深度值的应用程序,或对于使用相对低的量的深度值的应用程序,显影器可确保使用实例技术来写入正确数目的深度值。
因此,在将深度值用作再现的部分的图形处理技术中,因为所使用的时间和处理,所以可能在存储深度值方面存在问题。本公开描述可解决图形处理的深度值存储问题的实例技术。以此方式,可增强GPU 12的操作,因为GPU 12执行其操作需要较少时间和性能。在一或多个实例中,为限制需要存储的深度值的量,GPU 12可充分利用图形处理流水线操作的部分以使得可使用GPU 12的现成实例来执行实例技术。举例来说,实例技术可通过广泛多种不同类型的GPU 12来执行,而无需对GPU 12的底层结构进行修改。
如更详细地描述,在根据以微砖为基础的架构对GPU 12进行配置的实例中,在微砖的再现之间的操作时,GPU 12可存储有限数目的深度值。在以微砖为基础的架构中,图像帧分为多个微砖(例如通过CPU 6或GPU 12)。GPU 12随后在逐微砖基础上进行操作,从而对每一微砖执行两个遍次以确定微砖的图像内容。
第一遍次称为装仓遍次,其中GPU 12确定哪些绘制属于哪一框组(也称作微砖)且哪些绘制可见(例如生成可见度信息)。框组或微砖为图像帧的部分的实例。在第二遍次(称为再现遍次)中,GPU 12依序基于对哪些绘制属于哪一微砖和绘制的可见度的确定来再现每一部分(例如微砖或框组)。
此类双重遍次图形处理架构(有时称为以流式输出为基础的装仓架构)可适用于各种原因。作为一个实例,例如域着色器、曲面细分和/或几何着色器的额外处理阶段可添加到GPU 12,且由于时间分离几何和点阵化处理而存在有效装仓重迭和再现重迭(例如GPU12可再现一个图像表面同时对下一表面执行装仓)。
作为再现遍次的部分,GPU 12写入用于在GPU 12本地的微砖存储器(例如微砖存储器为本地存储器14的部分)的基元的像素值。在称为解析微砖存储器的过程中,GPU 12可随后将微砖的像素值写入到系统存储器10。微砖存储器可以是在GPU 12确定所述微砖的全部像素值时暂时存储微砖的像素值的存储空间。一旦GPU 12确定微砖的全部像素的像素值,GPU 12便通过将像素值写入到系统存储器10来解析微砖存储器。GPU 12随后在逐微砖基础上重复这些操作。
举例来说,对于第一微砖,GPU 12可将所述微砖的像素的像素值写入到微砖存储器。GPU 12可随后将像素值从微砖存储器写入到系统存储器10。随后,GPU 12可将第二微砖的像素的像素值写入到微砖存储器,且随后将像素值从微砖存储器写入到系统存储器10,以此类推。
在一或多个实例中,GPU 12可写入用于来自微砖存储器的有限数目的深度样本的深度值,而非等待将来自微砖存储器的深度样本(例如与像素中的每一个相关联的深度值)完全解析的命令。举例来说,GPU 12可将用于像素的第一数目的深度值存储于微砖存储器中,但GPU 12可将来自微砖存储器的第二数目的深度值写入到系统存储器10。在此实例中,第二数目小于第一数目。
作为一实例,假设在微砖中存在1000个像素。GPU 12可将微砖中的1000个像素的深度值存储到微砖存储器。在这一实例中,第一数目是1000。GPU 12可向系统存储器10写入10个像素的深度值。在这一实例中,第二数目是10。GPU 12可能并不需要存储微砖存储器中的全部1000个像素的深度值,且GPU 12可将多于或少于10个深度值写入到系统存储器10。
如更详细地所描述,GPU 12可执行称为深度值绘制调用的绘制调用以有助于避免与其它绘制调用混淆。响应于执行深度值绘制调用,GPU 12可将微砖的有限数目的像素(例如少于全部像素)的深度值从微砖存储器写入到系统存储器10。换句话说,GPU 12可响应于执行深度值绘制调用而将存储于微砖存储器中的第二数目的深度值写入到系统存储器10。在这一实例中,微砖存储器可存储第一数目的深度值,且第二数目小于第一数目。
作为一个实例,显影器在一系列绘制调用之后可包含深度值绘制调用,其中所述一系列绘制调用生成正在处理的当前微砖的图像内容。在一系列绘制调用之后的这一深度值绘制调用可以是在生成微砖的图像内容的全部其它绘制调用之后的最末绘制调用。然而,技术不限于作为在生成微砖的图像内容的全部其它绘制调用之后的最末绘制调用的深度值绘制调用。此外,使用深度值绘制调用来促使GPU 12将有限数目的像素的深度值或微砖的深度样本从微砖存储器输出到系统存储器10为一种实例方式,其中GPU 12限制写入到系统存储器10的深度值的量。限制从微砖存储器写入到系统存储器10的深度值的量的其它可能的方式是可能的。
绘制调用是包含于在CPU 6上执行的应用程序中的指令,所述CPU生成GPU 12再现的图像内容。绘制调用指令包含指示GPU 12关于纹理、状态、待执行的着色器程序、再现对象、缓冲器等的全部信息。在一些实例中,在CPU 6上所执行的应用程序包含促使GPU 12再现所述对象的用于每一对象的一组绘制调用。如此,通过执行多个绘制调用组,GPU 12可再现微砖的全部对象,且生成微砖中的像素中的每一个的像素值。
深度值绘制调用与其它绘制调用的不同之处可在于,在一或多个实例中,深度值绘制调用不用于再现图像内容。相反,深度值绘制调用识别着色器程序,当GPU 12执行着色器程序时,GPU 12将微砖的所选像素(例如所选深度样本)的深度值写入到系统存储器10。为易于参考,将促使GPU 12写入微砖的所选像素的深度值的着色器程序称为微砖深度解析着色器,且因为其对像素操作,因此可以是片段着色器的一实例。以此方式,出于将受限深度值(例如受限深度样本的深度值)选择性写入到系统存储器10的目的,GPU 12可充分利用对着色器程序(例如微砖深度解析着色器)的使用而不对GPU 12的底层结构进行任何改变。下文更详细地描述微砖深度解析着色器的实例操作。
大体而言,在图1中,GPU 12可生成微砖的像素的深度值,其中所述微砖是帧的多个微砖中的一个。GPU 12可将像素的深度值存储于配置成存储帧的微砖的图像内容的本地存储器14的微砖存储器中。GPU 12可执行着色器(例如微砖深度解析着色器)以将存储于微砖存储器中的深度值的子集(例如有限数目的像素的实际深度值)写出到系统存储器10。在一些实例中,对深度值的压缩是可能的,但即使此类压缩也可在深度值的子集上进行。如上文所描述,GPU 12可响应于绘制调用(例如深度值绘制调用)而执行微砖深度解析着色器。可在用以再现微砖的图像内容的绘制调用之后包含深度值绘制调用。
GPU 12可在逐微砖基础上重复这些操作。举例来说,在微砖中的每一个的依序再现遍次中,GPU 12可在微砖存储器中存储多个微砖中的每一个的再现图像内容。GPU 12也可在微砖中的每一个的每一依序再现遍次中执行着色器(例如微砖深度解析着色器)以将存储于微砖存储器中的深度值的各别子集依序写出到系统存储器10。
如上文所描述,GPU 12可将像素的第一数目的深度值存储于微砖存储器中,且将存储于微砖存储器中的第二较少数目的深度值写入到系统存储器10。除深度值以外,微砖存储器也可存储微砖的像素的颜色值或不透明度值。举例来说,微砖存储器可存储微砖的像素的第三数目的颜色值或不透明度值。第三数目与第一数目可相同,但不必在全部实例中。第三数目大于第二数目。GPU 12可将微砖的像素的第三数目的颜色值或不透明度值写入到系统存储器10。以此方式,在一些实例中,GPU 12可存储像素的子集的深度值,但可将像素的全部或大于所述子集的颜色值或不透明度值存储于系统存储器10中。在本公开中,颜色值或不透明度值包含仅颜色值、仅不透明度值或颜色值和不透明度值两者。
图2是进一步详细说明图1的计算装置2的CPU 6、GPU 12和存储器10的框图。如图2中所示,CPU 6以通信方式耦合到GPU 12和存储器10,且GPU 12以通信方式耦合到CPU 6和存储器10。在一些实例中,GPU 12可与CPU 6一起集成到母板上。在额外实例中,GPU 12可实施于安装在包含CPU 6的母板的端口中的图形适配器上。在其它实例中,GPU 12可并入于配置成与CPU 6互操作的周边装置内。在额外实例中,GPU 12可定位于与CPU 6相同的微芯片上,例如形成系统单芯片(SoC)的部分。
如图2中所示,CPU 6配置成执行应用程序38、图形应用程序编程接口(API)40、GPU驱动器42和操作系统44。在图2的实例中,GPU 12包含控制器46、着色器核心48和一或多个固定功能单元50。为简单起见,本地存储器14也说明为GPU 12的一部分但也可在外部。另外,如所说明,本地存储器14包含微砖存储器52。
软件应用程序38可包含促使图形内容显示的一或多个指令或促使非图形任务(例如通用计算任务)在GPU 12上执行的一或多个指令中的至少一些。软件应用程序38可向图形API 40发出指令。图形API 40可以是将从软件应用程序38接收到的指令转换为可由GPU驱动器42消耗的格式的运行时间服务。在一些实例中,图形API 40和GPU驱动器42可以是同一软件服务的部分。
GPU驱动器42经由图形API 40从软件应用程序38接收指令,并控制GPU 12的操作以服务指令。举例来说,GPU驱动器42可制定一或多个命令流,将所述命令流放置到存储器10中,且指示GPU 12执行命令流。GPU驱动器42可将命令流放置到存储器10中且经由操作系统44(例如经由一或多个系统调用)与GPU 12通信。
控制器46配置成检索存储于命令流中的命令,并调度命令以用于在着色器核心48和一或多个固定功能单元50上执行。控制器46可调度来自命令流的命令以用于在一或多个固定功能单元50或着色器核心48和一或多个固定功能单元50的子集上执行。控制器46可以是GPU 12的硬件,可以是执行于GPU 12上的软件或固件或两者的组合。
着色器核心48包含可编程电路(例如在其上执行软件的处理核心)。一或多个固定功能单元50包含配置成按最小功能灵活性执行受限操作的固定功能电路。着色器核心48和一或多个固定功能单元50共同形成配置成执行图形处理的图形流水线。
着色器核心48可配置成执行从CPU 6下载到GPU 12上的一或多个着色器程序。在一些实例中,着色器程序可以是以高级着色语言(例如OpenGL着色语言(OpenGL ShadingLanguage;GLSL)、高级着色语言(High Level Shading Language;HLSL)、用于图形的C(Cfor Graphics;Cg)着色语言等)所编写的程序的编译版本。在一些实例中,着色器核心48可包含配置成并行操作的多个处理单元(例如SIMD流水线)。着色器核心48可具有存储着色器程序指令的程序存储器和指示程序存储器中的当前指令正在执行或下一指令待提取的执行状态寄存器(例如程序计数器寄存器)。在着色器核心48上执行的着色器程序的实例包含(例如)顶点着色器、像素着色器(也称为片段着色器)、几何形状着色器、壳着色器、域着色器、计算着色器和/或统一着色器。如更详细地描述,着色器核心48也可执行微砖深度解析着色器以将深度值的子集从微砖存储器52写入到系统存储器10。
固定功能单元50可包含作为用以执行某些功能的硬布线的硬件。虽然固定功能硬件可经由一或多个控制信号来配置(例如)以执行不同功能,但固定功能硬件典型地不包含能够接收用户编译的程序的程序存储器。在一些实例中,一或多个固定功能单元50可包含(例如)执行栅格操作(例如深度测试、剪刀测试、α掺合等)的处理单元。
CPU 6的GPU驱动器42可配置成将命令流写入到存储器10,且GPU 12的控制器46可配置成从存储器10读取命令流中的一或多个命令。在一些实例中,命令流中的一个或两个可作为环形缓冲器存储于存储器10中。环形缓冲器可以是具有圆形寻址方案的缓冲器,其中CPU 6和GPU 12维持与数据到环形缓冲器的写入和数据从环形缓冲器的读取相关联的同步状态变量。举例来说,如果第一命令流是环形缓冲器,那么CPU 6和GPU 12中的每一个可将指示待写入到的下一地址的写入指针存储于环形缓冲器中,且将指示待读取的下一地址的读取指针存储于环形缓冲器中。
当CPU 6将新的命令写入到环形缓冲器时,CPU 6可更新CPU 6中的写入指针并指示GPU 12更新GPU 12中的写入指针。类似地,当GPU 12从环形缓冲器读取新的命令时,GPU12可更新GPU 12中的读取指针并指示CPU 6更新CPU 6中的读取指针。其它同步机制是可能的。当读取和/或写入指针到达在分配用于环形缓冲器的地址范围内的最高地址时,读取和/或写入指针可绕回到最低地址以实施圆形寻址方案。
现将参照图2来描述实例GPU驱动器42和实例GPU控制器46的实例操作。GPU驱动器42从软件应用程序38接收指定待由GPU 12执行的图形操作和/或通用计算操作的一或多个指令。GPU驱动器42将输出命令流放置到可由GPU控制器46存取的存储器10中。GPU驱动器42通知GPU控制器46对应于软件应用程序38的命令流可供用于处理。举例来说,GPU驱动器42可将指示命令流准备好执行的一或多个值写入到GPU寄存器(例如由GPU 12轮询的GPU硬件寄存器和/或由GPU 12轮询的GPU存储器映射寄存器)。
在命令流准备好执行的通知后,GPU 12的控制器46可确定资源当前是否可用于GPU 12上以开始执行命令流。如果资源是可用的,那么控制器46开始调度命令流中的命令。
作为图形处理的部分,CPU 6可将某些图形处理任务分流到GPU 12。举例来说,应用程序38可生成针对经过互连以形成图形对象的基元的多个顶点的属性的属性数据。应用程序38可将属性数据存储于存储器10中的顶点缓冲器中。GPU驱动器42可指示控制器46检索用于处理以生成用于显示的图形数据的顶点的属性的属性数据。
如上文所描述,GPU 12可配置成在两种遍次中生成图像内容:装仓遍次和再现遍次。虽然参照两种遍次来描述实例技术,但所述实例技术并不如此受限制。
在装仓遍次中,GPU驱动器42和/或控制器46可限定微砖(也称为框组)的大小,其中每一微砖具有大小N×M(例如N×M数目的像素)。微砖不必全部是相同大小,且N与M在一些实例中可相等。
控制器46可随后促使着色器核心48和固定功能单元50执行各别操作,以确定哪些基元属于哪一微砖中以及哪些顶点可见。在再现遍次中,控制器46可促使着色器核心48和固定功能单元50在每微砖基础上执行各别操作以在逐微砖基础上再现图像内容。再现遍次的输出可以是微砖的像素的像素值,包含微砖的像素的颜色值、不透明度值和深度值。微砖存储器52可将像素值存储为微砖的图像内容,且GPU 12将所得图像内容从微砖存储器52存储到系统存储器10以用于检索和显示。GPU 12可随后在逐微砖处理中使用微砖存储器52来存储下一微砖的像素值。
如上文所描述,因为并非全部深度值均可以是用于生成显示的最终图像内容所必需,所以GPU 12可配置成选择性输出存储于微砖存储器52中的深度值的子集(例如深度样本或像素的子集的深度值)。作为一实例,微砖存储器52可存储像素的第一数目的深度值,且GPU 12可配置成将存储于微砖存储器52中的第二数目的深度值写入到系统存储器10。在一些实例中,GPU 12可将存储于微砖存储器52中的像素的颜色值或不透明度值写入到系统存储器10,但仅将深度值的子集写入到系统存储器10。
举例来说,GPU 12可再现图像内容作为眼部缓冲器轮次的部分,且GPU 12可随后使用图像内容,在眼部缓冲器轮次期间再现以用于作为扭曲轮次的部分的扭曲。眼部缓冲器轮次的部分所确定的深度值可适用于执行作为扭曲轮次的部分的扭曲。GPU 12可使用深度值作为扭曲轮次的部分来确定再现哪些像素以及如何再现所述像素。
GPU 12可写入深度值的子集的一种实例方式是使用执行于着色器核心48上的微砖深度解析着色器。微砖深度解析着色器可配置成选择性输出存储于微砖存储器52中的深度值。举例来说,微砖深度解析着色器可读入微砖存储器52的深度值作为“纹理映射”。纹理映射一般是映射到网格模型上以形成3D对象的图像内容(例如位映射)。在一些实例中,虽然存储于微砖存储器52中的深度值被读取为纹理映射,但深度值并非是映射到网格模型上以形成3D对象的实际图像内容。相反地,将深度值视为纹理映射以允许GPU 12利用当前可用的处理技术,以使得仅将来自微砖存储器52的深度值的子集写入到系统存储器10。
举例来说,经由微砖深度解析着色器的执行,着色器核心48可将深度值读取为对微砖存储器52具有单个纹理提取而非对微砖存储器52具有多个提取的纹理映射。举例来说,可将纹理映射视为存储多个深度样本,其中每一深度样本与微砖中的像素和像素的深度值相关联。用以提取具有单个提取的深度值的一个实例指令是GL_ARM_shader_framebuffer_fetch_depth_stencil,其可在OpenGL API中找到。在这一实例中,微砖深度解析着色器可包含gl_LastFragDepthARM命令以从微砖存储器52检索深度值。可存在其它实例指令(例如在不同API或实施方案特定命令中),经由微砖深度解析着色器的执行,着色器核心48可利用所述指令从微砖存储器52检索深度值。以此方式,为写入深度值的子集(例如第二数目的深度值,其中微砖存储器52存储第一数目的深度值),GPU 12可读取第二数目的深度值作为具有单个纹理提取的纹理映射并基于所读取深度值写入第二数目的深度值。
在着色器核心48经由微砖深度解析着色器的执行而接收深度值之后,经由微砖深度解析着色器的执行,着色器核心48可将深度值的子集输出到系统存储器10。举例来说,假设微砖的大小是N乘M,其中仅需要将ND乘MD个深度值从微砖存储器52写入到系统存储器10。在这一实例中,微砖存储器52可存储N乘M数目的深度值(例如第一数目的深度值等于N*M),且可写入ND乘MD数目的深度值(例如第二数目的深度值等于ND*MD)。
作为一个实例,微砖深度解析着色器可执行微砖的每一像素(例如N乘M纹理映射中的每一深度样本),但仅输出像素的子集的深度值。在这一实例中,应用程序38或控制器46可限定N乘M四边形,所述四边形限定微砖深度解析着色器可能需要读取哪些像素。在一些实例中,微砖深度解析着色器可将四边形大小限定为N乘M。通过单个纹理提取,微砖深度解析着色器可促使着色器核心48从微砖存储器52读取深度值。微砖深度解析着色器可配置成将N乘M个深度样本的仅ND乘MD个深度样本的深度值写入到系统存储器10。举例来说,微砖深度解析着色器可配置成舍弃(N-ND)乘(M-MD)个深度样本的深度值。
对于这一实例,因为微砖深度解析着色器执行N乘M个深度样本中的每一个,且作为执行的部分而写入仅ND乘MD个深度样本的深度值,所以总像素工作负荷是N乘M。因此,用以写入深度值的总带宽是(ND*MD)*bytes_per_depth_sample。作为一实例,如果ND等于N/10,且MD等于M/10,那么在这一实例中,与写出全部深度值的情况相比较,可能不存在像素工作负荷的任何减少;然而,存在带宽的100×减小。
在以上实例中,微砖深度解析着色器可对每一像素(例如对每一深度样本)执行N乘M次;然而,实例技术不如此受限制。在一些实例中,替代使用一个N乘M大小的四边形来限定微砖深度解析着色器应在哪些像素上操作,应用程序38或控制器46可限定多个点或较小四边形。举例来说,应用程序38或控制器46可限定ND乘MD个较小四方形。举例来说,应用程序38或控制器46可限定多个四边形,其中每一四边形是像素或像素的较小集合的大小。在四边形是像素的大小的实例中,应用程序38或控制器46所限定的四边形的数目等于ND乘MD。如上所述,在一些实例中,微砖深度解析着色器可限定ND乘MD大小的四边形。
在四边形的大小是单个像素的实例中,微砖深度解析着色器可执行仅ND乘MD次(例如对ND乘MD数目的深度样本中的每一个执行一次)。以此方式,隐含地不保留除ND乘MD个深度样本的深度值以外的深度值。举例来说,微砖深度解析着色器可仅在对应于ND乘MD个深度样本的深度样本上执行,且将其深度值存储于系统存储器10中。在这一实例中,总像素工作负荷可以是ND乘MD,而非N乘M。总带宽可以是ND*MD*bytes_per_depth样本。作为一实例,如果ND等于N/10,且MD等于M/10,那么在这一实例中,与写出全部深度值的情况相比较,可存在像素工作负荷的100×的减少。也可存在带宽的100×减小。
在以上实例中,微砖深度解析着色器被描述为将ND乘MD个深度值输出到系统存储器10。然而,在一些实例中,微砖深度解析着色器可在写入到系统存储器10之前对深度值执行额外操作。作为一个实例,微砖深度解析着色器可读入N乘M个深度值的A乘B个深度值,并对A乘B个深度值取平均值或确定A乘B个深度值的最大深度值以生成ND乘MD个深度值。对A乘B个深度值取平均值或确定A乘B个深度值的最大深度值是实例筛选技术。微砖深度解析着色器可执行除取平均值或确定最大值以外的筛选技术或筛选技术的组合。微砖深度解析着色器可随后输出ND乘MD个深度值。
此处GPU 12可以各种方式执行微砖深度解析着色器。作为一个实例,显影器可在用以再现OpenGL的帧缓冲器对象(framebuffer object;FBO)或DirectX的帧靶向模型的图像内容的应用程序38中包含多个绘制调用。在给定FBO或帧靶向模型的绘制调用之后,显影器可包含使用微砖深度解析着色器的深度值绘制调用。
在一些实例中,微砖深度解析着色器将读取深度值,且不必将深度值写入到微砖存储器52而是写入到系统存储器10。因此,在一些实例中,用以调用微砖深度解析着色器的执行的绘制调用可禁用将深度值写入到微砖存储器52。另外,测试深度值以确定像素的遮挡可并非必要,且因此绘制调用可禁用深度测试。
在一些实例中,编译应用程序38的编译程序可包含深度值绘制调用,而非显影器包含深度值绘制调用。作为另一实例,GPU驱动器42可将深度值绘制调用包含于应用程序38中。将深度值绘制调用包含于应用程序38中的其它方式是有可能的。
也可存在各种方式来确定写入到系统存储器10的N乘M个深度值的ND乘MD个深度值。作为一个实例,微砖深度解析着色器可配置成检索水平地存储于微砖存储器52中的每第X个深度值和垂直地存储于微砖存储器52中的每第Y个深度值。在此实例中,ND等于N/X,且MD等于M/Y。
作为另一实例,显影器可对将读取哪些深度值进行限定。作为另一实例,应用程序38可配置成对将读取哪些深度值进行限定。
微砖深度解析着色器可将深度值从微砖存储器52写入到具有无序存取视图(unordered access view;UAV)的系统存储器10。UAV可允许对多个线程的系统存储器10的读取/写入存取(例如微砖深度解析着色器的指令的实例)而不产生存储器冲突。举例来说,因为GPU 12提供多线程和高水平的并行处理,所以微砖深度解析着色器的多个实例可并行执行,其中微砖深度解析着色器的每一实例操作于不同像素的深度值上。
由于微砖深度解析着色器的不同实例的并行执行,因而微砖深度解析着色器的两个或更多个实例可能需要在重迭时间处对系统存储器10进行存取。UAV允许微砖深度解析着色器的两个或更多个实例对系统存储器10进行存取而不导致存储器冲突。
虽然UAV可允许存储器存取而无存储器冲突,但可能存在关于当存储于系统存储器10中时,哪一深度值与哪一像素相关联的信息的缺失。因此,控制器46可跟踪哪些深度值与微砖的哪些像素相关联来确定待基于微砖深度值着色器所执行的像素写入UAV中的何处。
举例来说,如上文所描述,深度值可用于作为扭曲轮次的部分的扭曲图像内容。因此,控制器46可能需要确定特定深度值与图像帧的哪一部分相关联。举例来说,如果将保留1%的深度值(例如1%的深度样本的深度值),那么控制器46可能需要跟踪图像帧中1%的深度样本的深度值中的每一个与其相关联的位置。作为说明,假设图像帧的大小是1000×1000像素。在这一实例中,GPU 12可将深度值保留为1000×1000像素中的10,000。因此,第一深度值可与像素(10,10)相关联,第二深度值可与像素(20,10)相关联,且第100深度值可与像素(1000,10)相关联,且随后第101深度值可与像素(10,20)相关联,第102深度值可与像素(20,20)相关联,以此类推。
在这一实例中,控制器46可存储指示以下的信息:第一深度值针对像素(10,10),第二深度值针对像素(20,10),以此类推。将进行的一种实例方式是通过将位置(10,10)处的像素(10,10)的深度值存储于系统存储器10中,将位置(20,10)处的像素(20,10)的深度值存储于系统存储器10中,以此类推。使深度值与特定像素相关联的其它实例方式是有可能的。
随后,在扭曲轮次期间,控制器46可利用指示深度值与哪一像素相关联的信息。举例来说,为确定800×700周围的位置中的深度,控制器46可利用可供用于系统存储器10中来存储深度值的ND×MD空间中的80×70深度样本处的深度值。
在一或多个实例中,微砖深度值着色器可配置成执行将深度值从微砖存储器52解析到系统存储器10的操作。举例来说,微砖深度值着色器可将深度值的子集从微砖存储器52写入到系统存储器10。因此,可能不必将深度值中的全部从微砖存储器52解析到系统存储器10。
举例来说,在OpenGL中,通过默认,当再现FBO结束时,始终保留深度值的完整集合(例如存在深度值的完整解析)。显影器、编译程序或GPU驱动器42可包含用以使深度值失效或舍弃深度值以使得GPU 12无需将其存储于系统存储器10中的指令。因为微砖深度解析着色器已保留所需深度值,所以可使所述深度值失效或舍弃所述深度值。作为一实例,显影器可将glInvalidateFramebuffer()/glDiscardFramebufferEXT()包含于GL_DEPTH_ATTACHMENT指令上以使深度值失效或舍弃深度值。
图2说明一或多个实例,其中在装仓遍次期间,控制器46、着色器核心48和固定功能单元50可确定哪些基元属于帧的多个微砖的哪些微砖。随后,在再现遍次期间,着色器核心48和固定功能单元50可生成微砖的一或多个像素的深度值,所述微砖于装仓遍次期间确定属于正针对其生成深度值的微砖。举例来说,着色器核心48和固定功能单元50可以逐微砖基础来确定像素的像素值,且在特定微砖的再现遍次期间执行此类确定。
着色器核心48和/或固定功能单元50可将像素的深度值存储于GPU 12内部的微砖存储器52中。如所描述,微砖存储器52可配置成存储帧的微砖的图像内容。作为一个实例,执行于着色器核心48上的像素(或片段着色器)可将微砖中的像素的深度值输出到微砖存储器52,但包含固定功能单元50中的一或多个的其它组件可将微砖中的像素的深度值输出到微砖存储器52。
用以生成像素的深度值并将其存储于微砖存储器52中的实例操作可基于包含于应用程序38中的绘制调用来执行,着色器核心48和固定功能单元50执行所述应用程序。在一些实例中,应用程序38于用以再现微砖的图像内容的至少部分的绘制调用之后(例如在用以再现OpenGL的帧缓冲器对象(FBO)或DirectX的帧靶向模型的图像内容的应用程序38中的多个绘制调用之后)可包含深度值绘制调用。
着色器核心48可执行微砖深度解析着色器作为深度值绘制调用的部分,从而将存储于微砖存储器52中的深度值的子集写入到系统存储器10(例如深度值的子集的实际深度值或从深度值的子集的实际深度值压缩的压缩深度值)。作为一个实例,经由微砖深度解析着色器的执行,着色器核心48可从微砖存储器52将深度值读取为对微砖存储器52具有单个纹理提取的纹理映射。在一些实例中,经由微砖深度解析着色器的执行,着色器核心48可从微砖存储器52读取微砖的全部深度值,且将深度值的子集选择性写入到系统存储器10。在一些实例中,经由微砖深度解析着色器的执行,着色器核心48可从微砖存储器52读取微砖的深度值的子集,且将深度值的子集写入到系统存储器10。以此方式,GPU 12根据存储于微砖存储器中的深度值仅将深度值的子集写入到系统存储器10。
GPU 12可在逐微砖基础上重复此类操作。举例来说,着色器核心48和/或固定功能单元50可在微砖中的每一个的依序再现遍次中存储多个微砖中的每一个的再现图像内容。着色器核心48可在微砖中的每一个的每一依序再现遍次中执行微砖深度解析着色器以将存储于微砖存储器52中的深度值(例如微砖中的每一个的深度值)的各别子集依序写入到系统存储器10。
带宽的减小和所存储的深度值的量的减少对带宽使用率和存储器存储使用率可以是有益的。一些技术可将全部深度值从微砖存储器52写入到系统存储器10。随后,为减少正在使用的存储器存储的量,这些其它技术可将深度值采样为纹理映射,经由计算机着色器再现ND乘MD个像素并将ND乘MD个像素解析到系统存储器10。虽然此类技术可减少系统存储器10中所使用的存储空间的量,但总带宽可等于N*M+2*ND*MD*bytes_per_pixel+高速缓存无效率(例如由于部分读取且依赖于下采样的量)。从而,虽然这些技术可减少系统存储器10中所使用的存储空间的量,但带宽可远大于使用ND*MD*bytes_per_pixel(或bytes_per_depth样本)的实例技术。
在总带宽被限定为N*M+2*ND*MD*bytes_per_pixel+高速缓存无效率的一些技术中,因为全部深度值均被读回,所以总带宽可基于全部深度值(例如N*M)。另外,对所保留的深度值的读取是ND*MD*bytes_per_pixel。然而,在此情况下,也存在对深度值的写回,且因此,总带宽也包含N*M和2*ND*MD*bytes_per_pixel两者(例如N*M+2*ND*MD*bytes_per_pixel)。此外,如上所指出,因为存在部分读取和对下采样的依赖性,所以存在高速缓存无效率。因此,一些其它技术中的总带宽是N*M+2*ND*MD*bytes_per_pixel+高速缓存无效率。
图3A和3B是说明经过评估以用于存储深度值的像素的概念图。图3A和3B说明具有大小H乘E的微砖的一实例。举例来说,微砖包含像素54A,A到像素54H,E。
在图3A的实例中,微砖深度解析着色器(着色器核心48)可执行像素54A,A到像素54H,E中的每一个的微砖深度解析着色器的一个实例。举例来说,微砖深度解析着色器可接收H乘E的值作为输入,所述值限定一空间,微砖深度解析着色器根据所述空间从微砖存储器52将深度值读取为纹理映射。
控制器46和/或应用程序38可限定四边形56,且将四边形56的信息(例如大小)提供到微砖深度解析着色器。如由四边形56所限定,微砖深度解析着色器可随后在单次纹理映射提取中从微砖存储器52提取深度值,且执行深度值中的每一个。微砖深度解析着色器可配置成舍弃除选定少数所识别深度值以外的全部深度值。举例来说,微砖深度解析着色器可配置成舍弃除像素54A,A、像素54H,A、像素54E,C、像素54A,E和像素54H,E的那些深度值以外的全部深度值。微砖深度解析着色器可将像素54A,A、像素54H,A、像素54E,C、像素54A,E和像素54H,E的深度值存储于系统存储器10中。
在图3B中所说明的实例中,替代针对每一像素执行微砖深度解析着色器,着色器核心48可针对选定数目的像素执行微砖深度解析着色器的实例。举例来说,控制器46和/或应用程序38可限定各自涵盖微砖中的一个像素的多个四边形56A到四边形56E(统称为四边形56)。控制器46和/或应用程序38可基于待保留的深度值来限定四边形56。在这一实例中,存在五个四边形56。因此,着色器核心48可执行微砖深度解析着色器的五个实例,而非针对像素54A,A到像素54H,E中的每一个执行一个实例。着色器核心48可将像素54A,A、像素54H,A、像素54E,C、像素54A,E和像素54H,E的深度值存储于系统存储器10中。
图4是说明存储深度值的一实例方法的流程图。作为一个实例,GPU 12可生成用于微砖的像素的深度值,其中所述微砖是帧的多个微砖中的一个(60)。举例来说,在装仓遍次期间,GPU 12可确定哪些基元属于多个微砖中的哪些微砖。在再现遍次期间,GPU 12可生成微砖的基元的像素的深度值,所述微砖在装仓遍次期间确定属于正针对其生成深度值的微砖。
GPU 12可将像素的第一数目的深度值存储于GPU 12内部的微砖存储器52中(62)。微砖存储器52可配置成存储帧的微砖的图像内容。举例来说,着色器核心48和/或固定功能单元50可形成图形流水线,且图形流水线的操作的输出可以是像素值,例如颜色值、不透明度值和深度值。GPU 12的着色器核心48和/或固定功能单元50可存储像素值,包含再现到GPU 12内部的微砖存储器52(例如不需要图1的总线20来存取微砖存储器52)的微砖的深度值。
GPU 12可将存储于所述微砖存储器52中的第二数目的深度值写入到系统存储器10(64)。第二数目少于第一数目。作为一个实例,为写入第二数目的深度值,GPU 12可执行GPU 12上的着色器(例如微砖深度解析着色器)以将存储于微砖存储器52中的第二数目的深度值写入到系统存储器10(64)。GPU 12可响应于在用以再现微砖的图像内容中的至少部分的绘制调用之后所包含的绘制调用而写入第二数目的深度值。作为一个实例,着色器核心48可响应于在用以再现微砖的图像内容中的至少部分的绘制调用之后所包含的绘制调用(例如深度值绘制调用)而执行微砖深度解析着色器。
在一些实例中,GPU 12可将第二数目的深度值读取为具有单个纹理提取的纹理映射,并基于所读取深度值写入第二数目的深度值。举例来说,在执行微砖深度解析着色器时,着色器核心48可将深度值读取为对微砖存储器52具有单个纹理提取的纹理映射。以此方式,GPU 12可根据存储于微砖存储器52中的深度值(例如第一数目的深度值)仅将深度值的子集(例如第二数目的深度值)写入到系统存储器10。
如上文所描述,实例技术可适用于扭曲图像内容。举例来说,作为扭曲的部分,GPU12可从系统存储器10读取在眼部缓冲器轮次期间所存储的微砖的像素的颜色值和不透明度值。另外,GPU 12可读取在根据本公开中所描述的实例技术的眼部缓冲器轮次期间所存储的微砖的深度值的子集(例如第二数目的深度值)。GPU 12可随后基于微砖的像素的所读取深度值和所读取颜色值和不透明度值而使微砖的图像内容扭曲。实例扭曲技术包含时间扭曲,其中头部位置用以对图像内容(例如微砖的像素的颜色值)进行纹理映射。
此外,在一些实例中,虽然GPU 12可存储像素的深度值的子集,但GPU 12可存储像素中的更多个的颜色值或不透明度值。举例来说,如果微砖存储器52存储微砖的像素的第一数目的深度值,那么微砖存储器52可存储像素的第三数目的颜色值或不透明度值。第三数目可与第一数目相同,但所述技术不如此受限制。GPU 12可写入微砖的像素的第三数目的颜色值或不透明度值,其中第三数目大于第二数目。举例来说,GPU 12可使用存储器解析命令将颜色值或不透明度值从微砖存储器52解析到系统存储器10。然而,因为GPU 12可能已写出第二数目的深度值(例如通过微砖深度解析着色器的执行),所以这些存储器解析命令可不包含用以解析深度值的命令。
本公开中所描述的技术可至少部分地实施于硬件、软件、固件或其任何组合中。举例来说,所描述的技术的各种方面可实施于一或多个处理器中,包含一或多个微处理器、数字信号处理器(DSP)、特殊应用集成电路(ASIC)、场可编程门阵列(FPGA),或任何其它等效积体或离散逻辑电路,以及此类组件的任何组合。术语“处理器”或“处理电路”一般可指代前述逻辑电路中的任一个,单独或与其它逻辑电路组合,或任何其它等效电路,例如执行处理的离散式硬件。
此类硬件、软件和固件可实施于相同装置内或分离装置内以支持本公开中所描述的各种操作和功能。另外,可将所描述单元、模块或组件中的任一个一起实施或单独实施为离散但可互操作的逻辑装置。将不同特征作为模块或单元的描述打算突出不同功能性方面,且不必暗示此类模块或单元必须由分离硬件或软件组件来实现。相反,与一或多个模块或单元相关联的功能性可由分离硬件、固件和/或软件组件来执行或集成于常见或分离硬件或软件组件内。
本公开中所描述的技术也可存储、实施或编码于计算机可读媒体中,例如存储指令的计算机可读存储媒体。嵌入或编码于计算机可读媒体中的指令可促使一或多个处理器执行本文中所描述的技术,例如当所述指令由一或多个处理器执行时。计算机可读存储媒体可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、以电子方式可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、卡式磁带、磁性媒体、光学媒体或其它有形的计算机可读存储媒体。
已描述各种方面和实例。然而,可在不脱离以下权利要求书的范围的情况下对本公开的结构或技术做出修改。

Claims (28)

1.一种生成图像内容的方法,所述方法包括:
使用图形处理单元GPU生成用于帧的微砖的像素的深度值;
将用于所述像素的第一数目的所述深度值存储于所述GPU内部的微砖存储器中,其中所述微砖存储器配置成存储用于所述帧的所述微砖的图像内容;和
将存储于所述微砖存储器中的第二数目的所述深度值写入到系统存储器,其中所述第二数目小于所述第一数目。
2.根据权利要求1所述的方法,其中写入所述第二数目的所述深度值包括对所述GPU执行着色器以将存储于所述微砖存储器中的所述第二数目的所述深度值写入到所述系统存储器。
3.根据权利要求1所述的方法,其中写入所述第二数目的所述深度值包括响应于在用以再现所述微砖的所述图像内容中的至少一部分的绘制调用之后所包含的绘制调用而写入所述第二数目的所述深度值。
4.根据权利要求1所述的方法,其进一步包括:
将所述第二数目的所述深度值读取为对所述微砖存储器具有单个纹理提取的纹理映射,
其中写入所述第二数目的所述深度值包括基于所述所读取深度值来写入所述第二数目的所述深度值。
5.根据权利要求1所述的方法,其进一步包括:
生成用于所述微砖的所述像素的颜色值或不透明度值;
存储用于所述微砖的所述像素的第三数目的所述颜色值或所述不透明度值,其中所述第三数目大于所述第二数目;和
写入用于所述微砖的所述像素的所述第三数目的所述颜色值或所述不透明度值。
6.根据权利要求1所述的方法,其中所述微砖是所述帧的多个微砖中的一个,所述方法进一步包括:
在装仓遍次期间,确定哪些基元属于所述多个微砖中的哪些微砖,
其中生成所述深度值包括在再现遍次期间生成用于所述微砖的所述基元的像素的所述深度值,所述基元在所述装仓遍次期间确定属于正针对其生成所述深度值的所述微砖。
7.根据权利要求1所述的方法,其进一步包括:
读取用于所述微砖的所述像素的颜色值和不透明度值;
读取所述微砖的所述第二数目的所述深度值;和
基于用于所述微砖的所述像素的所述所读取深度值和所述所读取颜色值和所述不透明度值而使所述微砖的所述图像内容扭曲。
8.一种用于生成图像内容的装置,所述装置包括:
系统存储器;和
图形处理单元GPU,其包含微砖存储器,所述GPU配置成:
生成用于帧的微砖的像素的深度值;
将用于所述像素的第一数目的所述深度值存储于所述微砖存储器中,其中所述微砖存储器配置成存储用于所述帧的所述微砖的图像内容;和
将存储于所述微砖存储器中的第二数目的深度值写入到所述系统存储器,其中所述第二数目小于所述第一数目。
9.根据权利要求8所述的装置,其中为写入所述第二数目的所述深度值,所述GPU配置成执行着色器以将存储于所述微砖存储器中的所述第二数目的所述深度值写入到所述系统存储器。
10.根据权利要求8所述的装置,其中为写入所述第二数目的深度值,所述GPU配置成响应于在用以再现所述微砖的所述图像内容中的至少一部分的绘制调用之后所包含的绘制调用而写入所述第二数目的深度值。
11.根据权利要求8所述的装置,其中所述GPU配置成:
将所述第二数目的深度值读取为对所述微砖存储器具有单个纹理提取的纹理映射,
其中写入所述第二数目的深度值包括基于所述所读取深度值来写入所述第二数目的深度值。
12.根据权利要求8所述的装置,其中所述GPU配置成:
生成用于所述微砖的所述像素的颜色值或不透明度值;
存储用于所述微砖的所述像素的第三数目的所述颜色值或所述不透明度值,其中所述第三数目大于所述第二数目;和
写入用于所述微砖的所述像素的所述第三数目的所述颜色值或所述不透明度值。
13.根据权利要求8所述的装置,其中所述微砖是所述帧的多个微砖中的一个,其中所述GPU配置成:
在装仓遍次期间,确定哪些基元属于所述多个微砖中的哪些微砖,
其中为生成所述深度值,所述GPU配置成在再现遍次期间生成用于所述微砖的所述基元的像素的所述深度值,所述基元在所述装仓遍次期间确定属于正针对其生成所述深度值的所述微砖。
14.根据权利要求8所述的装置,其中所述GPU配置成:
读取用于所述微砖的所述像素的颜色值和不透明度值;
读取所述微砖的所述第二数目的深度值;和
基于用于所述微砖的所述像素的所述所读取深度值和所述所读取颜色值和所述不透明度值而使所述微砖的所述图像内容扭曲。
15.一种存储指令的计算机可读存储媒体,所述指令在执行时促使图形处理单元GPU:
生成用于帧的微砖的像素的深度值;
将用于所述像素的第一数目的所述深度值存储于所述GPU内部的微砖存储器中,其中所述微砖存储器配置成存储用于所述帧的所述微砖的图像内容;和
将存储于所述微砖存储器中的第二数目的所述深度值写入到系统存储器,其中所述第二数目小于所述第一数目。
16.根据权利要求15所述的计算机可读存储媒体,其中促使所述GPU写入所述第二数目的所述深度值的所述指令包括促使所述GPU执行着色器以将存储于所述微砖存储器中的所述第二数目的所述深度值写入到所述系统存储器的指令。
17.根据权利要求15所述的计算机可读存储媒体,其中促使所述GPU写入所述第二数目的所述深度值的所述指令包括促使所述GPU响应于在用以再现用于所述微砖的所述图像内容中的至少一部分的绘制调用之后所包含的绘制调用而写入所述第二数目的所述深度值的指令。
18.根据权利要求15所述的计算机可读存储媒体,其进一步包括指令,所述指令促使所述GPU:
将所述第二数目的所述深度值读取为对所述微砖存储器具有单个纹理提取的纹理映射,且
其中促使所述一或多个GPU写入所述第二数目的所述深度值的所述指令包括促使所述GPU基于所述所读取深度值而写入所述第二数目的所述深度值的指令。
19.根据权利要求15所述的计算机可读存储媒体,其进一步包括指令,所述指令促使所述GPU:
生成用于所述微砖的所述像素的颜色值或不透明度值;
存储用于所述微砖的所述像素的第三数目的所述颜色值或所述不透明度值,其中所述第三数目大于所述第二数目;和
写入用于所述微砖的所述像素的所述第三数目的所述颜色值或所述不透明度值。
20.根据权利要求15所述的计算机可读存储媒体,其中所述微砖是所述帧的多个微砖中的一个,所述存储媒体进一步包括指令,所述指令促使所述GPU:
在装仓遍次期间,确定哪些基元属于所述多个微砖中的哪些微砖,
其中促使所述GPU生成所述深度值的所述指令包括促使所述GPU在再现遍次期间生成用于所述微砖的所述基元的像素的所述深度值的指令,所述基元在所述装仓遍次期间确定属于正针对其生成所述深度值的所述微砖。
21.根据权利要求15所述的计算机可读存储媒体,其进一步包括指令,所述指令促使所述GPU:
读取用于所述微砖的所述像素的颜色值和不透明度值;
读取所述微砖的所述第二数目的所述深度值;和
基于用于所述微砖的所述像素的所述所读取深度值和所述所读取颜色值和所述不透明度值而使所述微砖的所述图像内容扭曲。
22.一种用于生成图像内容的装置,所述装置包括:
系统存储器;和
图形处理单元GPU,其包含微砖存储器,其中所述GPU进一步包括:
用于生成用于帧的微砖的像素的深度值的装置;
用于将用于所述像素的第一数目的所述深度值存储于所述微砖存储器中的装置,其中所述微砖存储器配置成存储用于所述帧的所述微砖的图像内容;和
用于将存储于所述微砖存储器中的第二数目的所述深度值写入到系统存储器的装置,其中所述第二数目小于所述第一数目。
23.根据权利要求22所述的装置,其中用于写入所述第二数目的所述深度值的所述装置包括用于对所述GPU执行着色器以将存储于所述微砖存储器中的所述第二数目的所述深度值写入到所述系统存储器的装置。
24.根据权利要求22所述的装置,其中用于写入所述第二数目的所述深度值的所述装置包括用于响应于在用以再现用于所述微砖的所述图像内容中的至少一部分的绘制调用之后所包含的绘制调用而写入所述第二数目的所述深度值的装置。
25.根据权利要求22所述的装置,其进一步包括:
用于将所述第二数目的所述深度值读取为对所述微砖存储器具有单个纹理提取的纹理映射的装置,
其中用于写入所述第二数目的所述深度值的所述装置包括用于基于所述所读取深度值来写入所述第二数目的所述深度值的装置。
26.根据权利要求22所述的装置,其进一步包括:
用于生成用于所述微砖的所述像素的颜色值或不透明度值的装置;
用于存储用于所述微砖的所述像素的第三数目的所述颜色值或所述不透明度值的装置,其中所述第三数目大于所述第二数目;和
用于写入用于所述微砖的所述像素的所述第三数目的所述颜色值或所述不透明度值的装置。
27.根据权利要求22所述的装置,其中所述微砖是所述帧的多个微砖中的一个,所述装置进一步包括:
用于在装仓遍次期间确定哪些基元属于所述多个微砖中的哪些微砖的装置,
其中用于生成所述深度值的所述装置包括用于在再现遍次期间生成用于所述微砖的所述基元的像素的所述深度值的装置,所述基元在所述装仓遍次期间确定属于正针对其生成所述深度值的所述微砖。
28.根据权利要求22所述的装置,其进一步包括:
用于读取用于所述微砖的所述像素的颜色值和不透明度值的装置;
用于读取所述微砖的所述第二数目的所述深度值的装置;和
用于基于用于所述微砖的所述像素的所述所读取深度值和所述所读取颜色值和所述不透明度值而使所述微砖的所述图像内容扭曲的装置。
CN201880075972.3A 2017-12-05 2018-11-28 以图块为基础的低分辨率深度存储 Active CN111406277B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/832,118 2017-12-05
US15/832,118 US10580151B2 (en) 2017-12-05 2017-12-05 Tile-based low-resolution depth storage
PCT/US2018/062881 WO2019112859A1 (en) 2017-12-05 2018-11-28 Tile-based low-resolution depth storage

Publications (2)

Publication Number Publication Date
CN111406277A true CN111406277A (zh) 2020-07-10
CN111406277B CN111406277B (zh) 2022-06-14

Family

ID=64665415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880075972.3A Active CN111406277B (zh) 2017-12-05 2018-11-28 以图块为基础的低分辨率深度存储

Country Status (5)

Country Link
US (1) US10580151B2 (zh)
EP (1) EP3721416A1 (zh)
CN (1) CN111406277B (zh)
TW (1) TWI786233B (zh)
WO (1) WO2019112859A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222397B2 (en) 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
US10885607B2 (en) * 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
US10818067B1 (en) * 2019-05-31 2020-10-27 Texas Instruments Incorporated GPU assist using DSP pre-processor system and method
US11176734B1 (en) * 2020-10-06 2021-11-16 Qualcomm Incorporated GPU hardware-based depth buffer direction tracking
US11893654B2 (en) * 2021-07-12 2024-02-06 Qualcomm Incorporated Optimization of depth and shadow pass rendering in tile based architectures

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103238169A (zh) * 2010-08-24 2013-08-07 高通股份有限公司 显示器上的像素再现
US20140032767A1 (en) * 2002-12-12 2014-01-30 Vmware, Inc. Virtual machine migration
CN103946789A (zh) * 2011-05-16 2014-07-23 高通股份有限公司 图形处理单元中的再现模式选择
CN105493151A (zh) * 2013-08-28 2016-04-13 高通股份有限公司 图形处理中的像素化求和长度
CN107209923A (zh) * 2015-02-10 2017-09-26 高通股份有限公司 图形处理中的混合渲染

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4327180B2 (ja) * 2006-07-24 2009-09-09 株式会社東芝 表示装置
GB2449398B (en) * 2006-09-29 2009-02-11 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
KR102109130B1 (ko) 2013-08-12 2020-05-08 삼성전자주식회사 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
US9552633B2 (en) * 2014-03-07 2017-01-24 Qualcomm Incorporated Depth aware enhancement for stereo video
US9652882B2 (en) * 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
GB2524121B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
US9978171B2 (en) * 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US10341632B2 (en) 2015-04-15 2019-07-02 Google Llc. Spatial random access enabled video system with a three-dimensional viewing volume
US10621690B2 (en) 2015-09-17 2020-04-14 Qualcomm Incorporated Storing bandwidth-compressed graphics data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140032767A1 (en) * 2002-12-12 2014-01-30 Vmware, Inc. Virtual machine migration
CN103238169A (zh) * 2010-08-24 2013-08-07 高通股份有限公司 显示器上的像素再现
CN103946789A (zh) * 2011-05-16 2014-07-23 高通股份有限公司 图形处理单元中的再现模式选择
CN105493151A (zh) * 2013-08-28 2016-04-13 高通股份有限公司 图形处理中的像素化求和长度
CN107209923A (zh) * 2015-02-10 2017-09-26 高通股份有限公司 图形处理中的混合渲染

Also Published As

Publication number Publication date
TW201926239A (zh) 2019-07-01
CN111406277B (zh) 2022-06-14
WO2019112859A1 (en) 2019-06-13
EP3721416A1 (en) 2020-10-14
US10580151B2 (en) 2020-03-03
US20190172213A1 (en) 2019-06-06
TWI786233B (zh) 2022-12-11

Similar Documents

Publication Publication Date Title
CN110663065B (zh) 用于中央凹形渲染的存储
US10991127B2 (en) Index buffer block compression
CN110036413B (zh) 平铺架构中的注视点渲染
CN111406277B (zh) 以图块为基础的低分辨率深度存储
US20170293995A1 (en) Per-vertex variable rate shading
EP3489907B1 (en) Shader program execution techniques for use in graphics processing
EP3350766B1 (en) Storing bandwidth-compressed graphics data
CN109564694B (zh) 用于基于入库的图形处理的顶点着色器
US10078883B2 (en) Writing graphics data from local memory to system memory
CN107392836B (zh) 使用图形处理管线实现的立体多投影
US9646359B2 (en) Indefinite texture filter size for graphics processing
CN118043850A (zh) Meshlet着色图集

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