视频处理机制的制作方法

文档序号:20040038发布日期:2020-02-28 11:47阅读:162来源:国知局
视频处理机制的制作方法

相关申请

本申请涉及由jillboyce于2018年7月31日提交的名称为“reducedrenderingofsix-degreeoffreedomvideo(减少六自由度视频的渲染)”的共同转让的美国专利申请序列号16/050,153,所述美国专利申请的全部内容通过引用结合于此。

本发明总体上涉及视频处理,并且更具体地涉及经由图形处理单元进行的视频处理。



背景技术:

六自由度(6dof)视频是新兴的沉浸式视频用例,其为观看者提供沉浸式媒体体验,在其中,所述观看者控制场景的视点。更简单的三自由度(3dof)视频(例如360度或全景视频)允许观看者从固定位置改变围绕x、y和z轴的取向(描述为偏航、俯仰和滚动)。6dof视频使得观看者能够通过沿x、y和z轴的平移移动来改变位置。

可以使用点云来表示6dof视频。然而,点云数据的渲染在计算上是昂贵的,使得以高帧速率渲染包含大量点的点云视频变得困难。此外,点云数据速率很大,需要较大的容量用于存储或传输。

附图说明

为了能够详细理解本发明的上述特征,通过参考实施例可以对上文简述的本发明有更具体的说明,附图中展示了这些实施例中的一些。然而应当指出的是,附图仅仅展示了本发明的典型实施例,并且因此不应被认为是对本发明的范围的限制,因为本发明可以允许其他等效的实施例。

图1是根据实施例的处理系统的框图;

图2是根据实施例的处理器的框图;

图3是根据实施例的图形处理器的框图;

图4是根据一些实施例的图形处理器的图形处理引擎的框图;

图5是由附加实施例提供的图形处理器的框图;

图6a和6b展示了线程执行逻辑,所述线程执行逻辑包括在一些实施例中采用的处理元件阵列;

图7是展示了根据一些实施例的图形处理器指令格式的框图;

图8是根据另一个实施例的图形处理器的框图;

图9a和图9b展示了根据一些实施例的图形处理器命令格式和命令序列;

图10展示了根据一些实施例的数据处理系统的示例性图形软件架构;

图11a和图11b是框图,展示了根据实施例的ip核开发系统;

图12是框图,展示了根据实施例的示例性芯片上系统集成电路;

图13a和图13b是框图,展示了附加示例性图形处理器;

图14a和图14b是框图,展示了根据实施例的芯片上系统集成电路的附加示例性图形处理器;

图15a展示了多种形式的沉浸式视频;

图15b展示了用于沉浸式视频的图像投影和纹理平面。

图16展示了客户端-服务器系统,通过所述系统,可以由服务器基础设施生成沉浸式视频内容并对其进行编码,以便传输到一个或多个客户端设备;

图17a至图17b展示了用于对3dof+(3dofplus)内容进行编码和解码的系统;

图18a至图18b展示了用于使用纹理几何数据对6dof内容进行编码和解码的系统;

图19a至图19b展示了用于经由点云数据对6dof内容进行编码和解码的系统;

图20展示了根据实施例的采用表面视频处理机制的计算设备;

图21展示了视频处理机制的一个实施例;

图22是流程图,展示了用于执行用于运动预测的补片对准的过程的一个实施例;

图23a和图23b展示了运动向量帧的实施例;

图24是流程图,展示了用于执行补片边界外推的过程的一个实施例;

图25展示了被移位的对象;

图26是流程图,展示了用于去除点云破裂的过程的一个实施例;

图27a展示了应用于经解压缩对象的网格的一个实施例;并且

图27b展示了已经应用网格之后的经解压缩对象的一个实施例。

具体实施方式

在以下描述中,阐述了大量的具体细节以提供对本发明的更加透彻的解释。然而,对于本领域技术人员而言,可以在不具有这些具体细节中的一个或多个的情况下实践本发明将是明显的。在其他实例中,并未示出公知的结构,以便避免模糊本发明。

系统概述

图1是根据实施例的处理系统100的框图。在各实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被并入用于在移动设备、手持式设备或嵌入式设备内使用的芯片上系统(soc)集成电路内的处理平台。

在一个实施例中,系统100可以包括基于服务器的游戏平台、游戏控制台,或被并入基于服务器的游戏平台、游戏控制台内,该游戏控制台包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。处理系统100还可以包括可穿戴设备、与可穿戴设备耦合、或者集成在可穿戴设备中,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备。在一些实施例中,处理系统100是电视或机顶盒设备,该电视或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。

在一些实施例中,一个或多个处理器102各自包括用于处理指令的一个或多个处理器核107,这些指令在被执行时执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每个处理器核被配置成用于处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(cisc)、精简指令集计算(risc)、或经由超长指令字(vliw)的计算。多个处理器核107可各自处理不同的指令集109,该指令集109可包括用于促进对其他指令集进行仿真的指令。处理器核107还可包括其他处理设备,诸如,数字信号处理器(dsp)。

在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多个层级的内部高速缓存。在一些实施例中,在处理器102的各部件之间共享高速缓存存储器。在一些实施例中,处理器102还使用外部高速缓存(例如,第3级(l3)高速缓存或末级高速缓存(llc))(未示出),可使用已知的高速缓存一致性技术在处理器核107之间共享外部高速缓存。另外,寄存器堆106被包括在处理器102中,该处理器102可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可特定于处理器102的设计。

在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与系统100中的其他部件之间传输诸如地址、数据、或控制信号之类的通信信号。在一个实施例中,接口总线110可以是处理器总线,诸如,直接媒体接口(dmi)总线的版本。然而,处理器总线不限于dmi总线,并且可包括一个或多个外围部件互连总线(例如,pci、pci快速)、存储器总线或其他类型的接口总线。在一个实施例中,(多个)处理器102包括集成存储器控制器160和平台控制器中枢130。存储器控制器116促进存储器设备与系统100的其他部件之间的通信,而平台控制器中枢(pch)130提供经由本地i/o总线至i/o设备的连接。

存储器设备120可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某种其他存储器设备。在一个实施例中,存储器设备120可以作为系统100的系统存储器来进行操作,以存储数据122和指令121,以供在一个或多个处理器102执行应用或进程时使用。存储器控制器116还与任选的外部图形处理器112耦合,该任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。在一些实施例中,显示设备111可以连接至(多个)处理器102。显示设备111可以是以下各项中的一项或多项:内部显示设备,如在移动电子设备或膝上型设备中;或经由显示接口(例如,显示端口(displayport)等)附接的外部显示设备。在一个实施例中,显示设备111可以是头戴式显示器(hmd),诸如用于在虚拟现实(vr)应用或增强现实(ar)应用中使用的立体显示设备。

在一些实施例中,平台控制器中枢130启用外围设备以经由高速i/o总线连接到存储器设备120和处理器102。i/o外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发机126、触摸传感器125、数据存储设备124(例如,硬盘驱动器、闪存等)。数据存储设备124可以经由存储接口(例如,sata)或经由诸如外围部件互连总线(例如,pci、pci快速)之类的外围总线来进行连接。触摸传感器125可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发机126可以是wi-fi收发机、蓝牙收发机、或者诸如3g、4g或长期演进(lte)收发机之类的移动网络收发机。固件接口128实现与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器134可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多通道高清音频控制器。在一个实施例中,系统100包括任选的用于将传统(legacy)(例如,个人系统2(ps/2))设备耦合至系统的传统i/o控制器140。平台控制器中枢130还可以连接至一个或多个通用串行总线(usb)控制器142连接输入设备,这些输入设备诸如键盘和鼠标143的组合、相机144或其他usb输入设备。

将会领会,所示的系统100是示例性的而非限制性的,因为也可使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可被集成到诸如外部图形处理器112之类的分立的外部图形处理器中。在一个实施例中,平台控制器中枢130和/或存储器控制器116可在一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,该外部存储器控制器116和平台控制器中枢130可被配置为在与(多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。

图2是处理器200的实施例的框图,该处理器200具有一个或多个处理器核202a-202n、集成存储器控制器214、以及集成图形处理器208。图2的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。处理器200可包括附加核,这些附加核多达且包括由虚线框表示的附加核202n。处理器核202a-202n中的每一个都包括一个或多个内部高速缓存单元204a-204n。在一些实施例中,每个处理器核还可访问一个或多个共享高速缓存单元206。

内部高速缓存单元204a-204n和共享高速缓存单元206表示处理器200内的高速缓存存储器层级结构。高速缓存存储器层级结构可包括每个处理器核内的至少一个层级的指令和数据高速缓存、以及一个或多个层级的共享中级高速缓存,诸如,第2级(l2)、第3级(l3)、第4级(l4)、或其他层级的高速缓存,其中,在外部存储器之前的最高层级的高速缓存被分类为llc。在一些实施例中,高速缓存一致性逻辑维持各高速缓存单元206与204a-204n之间的一致性。

在一些实施例中,处理器200还可包括一组一个或多个总线控制器单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围总线,诸如,一个或多个pci或pci快速总线。系统代理核210提供对各处理器部件的管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各外部存储器设备(未示出)的访问。

在一些实施例中,处理器核202a-202n中的一个或多个包括对同时多线程的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间对核202a-202n进行协调和操作的部件。系统代理核210可附加地包括功率控制单元(pcu),该功率控制单元包括用于调节处理器核202a-202n以及图形处理器208的功率状态的逻辑和部件。

在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与共享高速缓存单元的集合206以及系统代理核210耦合,该系统代理核210包括一个或多个集成存储器控制器214。在一些实施例中,系统代理核210还包括显示控制器211,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211还可以是经由至少一个互连与图形处理器耦合的分开的模块,或者可被集成在图形处理器208内。

在一些实施例中,基于环的互连单元212用于耦合处理器200的内部部件。然而,可使用替代的互连单元,诸如,点对点互连、切换式互连、或其他技术,包括本领域公知的技术。在一些实施例中,图形处理器208经由i/o链路213与环形互连212耦合。

示例性i/o链路213表示各种各样的i/o互连中的至少一者,包括促进各处理器部件与高性能嵌入式存储器模块218(诸如,edram模块)之间的通信的封装上i/o互连。在一些实施例中,处理器核202a-202n中的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。

在一些实施例中,处理器核202a-202n是执行同一指令集架构的同构核。在另一实施例中,处理器核202a-202n就指令集架构(isa)而言是异构的,其中,处理器核202a-202n中的一者或多者执行第一指令集,而其他核中的至少一者执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202a-202n就微架构而言是同质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。另外,处理器200可被实现在一个或多个芯片上或者被实现为除其他部件之外还具有所图示的部件的soc集成电路。

图3是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由至图形处理器上的寄存器的存储器映射的i/o接口并且利用被置入处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。

在一些实施例中,图形处理器300还包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示器的一个或多个重叠平面以及视频或用户接口元件的多个层的组合的硬件。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备,诸如,虚拟现实(vr)显示设备或增强现实(ar)显示设备。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码、解码或转码为一种或多种媒体编码格式,从一种或多种媒体编码格式编码、解码或转码媒体,或在一种或多种媒体编码格式之间进行对媒体进行编码、解码或转码,这些媒体编码格式包括但不限于:运动图像专家组(mpeg)格式(诸如,mpeg-2)、高级视频译码(avc)格式(诸如,h.264/mpeg-4avc)、以及电影&电视工程师协会(smpte)421m/vc-1、和联合图像专家组(jpeg)格式(诸如,jpeg、以及运动jpeg(mjpeg)格式)。

在一些实施例中,图形处理器300包括用于执行包括例如位边界块传递的二维(2d)光栅化器操作的块图像传递(blit)引擎304。然而,在一个实施例中,使用图形处理引擎(gpe)310的一个或多个部件执行2d图形操作。在一些实施例中,gpe310是用于执行图形操作的计算引擎,这些图形操作包括三维(3d)图形操作和媒体操作。

在一些实施例中,gpe310包括用于执行3d操作的3d流水线312,3d操作诸如,使用作用于3d图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3d流水线312包括可编程的固定功能元件,这些可编程的固定功能元件执行元件内的各种任务和/或将执行线程生成(spawn)至3d/媒体子系统315。虽然3d流水线312可以用于执行媒体操作,但是gpe310的实施例还包括专门用于执行诸如视频后处理和图像增强之类的媒体操作的媒体流水线316。

在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元以便代替、或代表视频编解码器引擎306来执行一种或多种专业的媒体操作,诸如,视频解码加速、视频解交织、以及视频编码加速。在一些实施例中,媒体流水线316附加地包括用于生成供在3d/媒体子系统315上执行的线程的线程生成单元。所生成的线程对3d/媒体子系统315中所包括的一个或多个图形执行单元执行对媒体操作的计算。

在一些实施例中,3d/媒体子系统315包括用于执行由3d流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3d/媒体子系统315发送线程执行请求,该3d/媒体子系统包括用于仲裁并将各请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3d和媒体线程的图形执行单元阵列。在一些实施例中,3d/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,包括寄存器和可寻址存储器。

图形处理引擎

图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(gpe)410是图3中所示的gpe310的一个版本。图4的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。例如,图示了图3的3d流水线312和媒体流水线316。媒体流水线316在gpe410的一些实施例中是任选的,并且可以不显式地包括在gpe410内。例如以及在至少一个实施例中,单独的媒体和/或图像处理器耦合至gpe410。

在一些实施例中,gpe410与命令流转化器403耦合或包括命令流转化器403,该命令流转化器403向3d流水线312和/或媒体流水线316提供命令流。在一些实施例中,命令流转化器403与存储器耦合,该存储器可以是系统存储器、或者是内部高速缓存存储器和共享高速缓存存储器中的一者或多者。在一些实施例中,命令流转化器403从存储器接收命令并将这些命令发送至3d流水线312和/或媒体流水线316。这些命令是从存储用于3d流水线312和媒体流水线316的环形缓冲器取出的指示。在一个实施例中,环形缓冲器可以附加地包括存储多批多个命令的批命令缓冲器。用于3d流水线312的命令还可以包括对在存储器中存储的数据的引用,诸如但不限于用于3d流水线312的顶点数据和几何数据和/或用于媒体流水线316的图像数据和存储器对象。3d流水线312和媒体流水线316通过以下方式来处理命令和数据:经由相应流水线内的逻辑来执行操作;或将一个或多个执行线程分派给图形核阵列414。在一个实施例中,图形核阵列414包括一个或多个图形核块(例如,(多个)图形核415a、(多个)图形核415b),每个块包括一个或多个图形核。每个图形核包括一组图形执行资源,这些图形执行资源包括:用于执行图形操作和计算操作的通用执行逻辑和图形专用执行逻辑;以及固定功能纹理处理逻辑和/或机器学习和人工智能加速逻辑。

在各实施例中,3d流水线312包括:固定功能逻辑和可编程逻辑,用于通过处理指令并将执行线程分派给图形核阵列414来处理一个或多个着色器程序,该着色器程序诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列414提供了供在处理这些着色器程序时使用的统一的执行资源块。图形核阵列414的(多个)图形核415a-414b内的多用途执行逻辑(例如,执行单元)包括对各种3dapi着色器语言的支持,并且可以执行与多个着色器相关联的多个同时的执行线程。

在一些实施例中,图形核阵列414还包括用于执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括通用逻辑,除了图形处理操作之外,该通用逻辑还可编程以执行并行通用计算操作。通用逻辑可以与图1的(多个)处理器核107或如图2中的核202a-202n内的通用逻辑并行地或结合地执行处理操作。

由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(urb)418中的存储器。urb418可以存储多个线程的数据。在一些实施例中,urb418可用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,urb418可另外用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。

在一些实施例中,图形核阵列414是可缩放的,以使得该阵列包括可变数量的图形核,这些图形核各自具有基于gpe410的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,以使得该执行资源可根据需要而被启用或禁用。

图形核阵列414与共享功能逻辑420耦合,该共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专业的补充功能的硬件逻辑单元。在各实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(itc)423逻辑。另外,一些实施例实现共享功能逻辑420内的一个或多个高速缓存425。

在给定的专业功能的需求不足以包含在图形核阵列414中的情况下实施共享功能。相反,该专业功能的单个实例化被实现为共享功能逻辑420中的独立实体并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间共享并包括在图形核阵列414内的精确的功能的集合在跨实施例而变化。在一些实施例中,共享功能逻辑420内由图形核阵列414广泛使用的特定共享功能可被包括在图形核阵列414内的共享功能逻辑416内。在各实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑元件可在图形核阵列414的共享功能逻辑416内重复。在一个实施例中,共享功能逻辑420被排除以有利于图形核阵列414内的共享功能逻辑416。

图5是根据本文中所描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。在一些实施例中,所图示的图形处理器核500被包括在图4的图形核阵列414内。图形处理器核500——有时称为核切片——可以是模块化图形处理器内的一个或多个图形核。图形处理器核500是示例性的一个图形核切片,并且如本文中所描述的图形处理器可包括基于目标功率和性能包络的多个图形核切片。每个图形核500可以包括与多个子核501a-501f(也被称为子切片)耦合的固定功能块530,这些子核包括模块化通用和固定功能逻辑块。

在一些实施例中,固定功能块530包括几何/固定功能流水线536,例如,在低性能和/或低功率图形处理器实施方式中,该几何/固定功能流水线536可以由图形核500中的所有子核共享。在各实施例中,几何/固定功能流水线536包括3d固定功能流水线(例如,如图3和图4中的3d流水线312)、视频前端单元、线程生成器和线程分派器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理诸如图4的统一返回缓冲器418之类的统一返回缓冲器。

在一个实施例中,固定功能块530还包括图形soc接口537、图形微控制器538和媒体流水线539。图形soc接口537提供了图形核500与芯片上系统集成电路内的其他处理器核之间的接口。图形微控制器538是可配置成用于管理图形处理器500的包括线程分派、调度和先占(pre-emption)在内的各种功能的可编程子处理器。媒体流水线539(例如,图3和图4的媒体流水线316)包括用于促进对包括图像数据和视频数据在内的多媒体数据进行解码、编码、预处理和/或后处理的逻辑。媒体流水线539经由对子核501-501f内的计算或采样逻辑的请求来实现媒体操作。

在一个实施例中,soc接口537使得图形核500能够与通用应用处理器核(例如,cpu)和/或soc内的其他部件进行通信,这些其他部件包括诸如共享末级高速缓存存储器之类的存储器层级结构元件、系统ram、和/或嵌入式芯片上或封装上dram。soc接口537还可以使得能够与soc内诸如相机成像流水线之类的固定功能设备进行通信,并且使得能够使用和/或实现可在图形核500与soc内的cpu之间共享的全局存储器原子。soc接口537还可以实现针对图形核500的功率管理控制,并且实现图形核500的时钟域与soc内的其他时钟域之间的接口。在一个实施例中,soc接口537实现命令缓冲器的从被配置成向图形处理器内的一个或多个图形核中的每个图形核提供命令和指令的命令流转化器和全局线程分派器的接收。当媒体操作将要被执行时,这些命令和指令可以被分派给媒体流水线539,或者当图形处理操作将要被执行时,这些命令和指令可以被分派给几何和固定功能流水线(例如,几何和固定功能流水线536、几何和固定功能流水线514)。

图形微控制器538可以被配置成用于执行针对图形核500的各种调度任务和管理任务。在一个实施例中,图形微控制器538可以对子核501a-501f内的执行单元(eu)阵列502a-502f、504a-504f内的各图形并行引擎执行图形和/或计算工作负荷调度。在这种调度模型中,在包括图形核500的soc的cpu核上执行的主机软件可以经由多个图形处理器门铃(doorbell)中的一个来提交工作负荷,这调用了对适当图形引擎的调度操作。调度操作包括:确定接下来要运行哪个工作负荷、向命令流转化器提交工作负荷、对在引擎上运行的现有工作负荷进行先占、监测工作负荷的进展、以及通知主机软件何时完成工作负荷。在一个实施例中,图形微控制器538还可以促进图形核500的低功率或空闲状态,从而为图形核500提供独立于操作系统和/或系统上的图形驱动器软件跨低功率状态转换来对图形核500内的寄存器进行保存和恢复的能力。

图形核500可具有多于或少于所图示的子核501a-501f的、多达n个的模块化子核。对于每个n个子核的集合,图形500还可以包括共享功能逻辑510、共享和/或高速缓存存储器512、几何/固定功能流水线514、以及用于加速各种图形和计算处理操作的附加固定功能逻辑516。共享功能逻辑510可以包括与图4的共享功能逻辑420相关联的逻辑单元(例如,采样器逻辑、数学逻辑、和/或线程间通信逻辑),这些逻辑单元可由图形核500内的每n个子核共享。共享和/或高速缓存存储器512可以是用于图形核500内的n个子核501a-501f的集合的末级高速缓存,并且还可以充当可由多个子核访问的共享存储器。几何/固定功能流水线514可以代替几何/固定功能流水线536被包括在固定功能块530内,并且可以包括相同的或类似的逻辑单元。

在一个实施例中,图形核500包括附加固定功能逻辑516,该附加固定功能逻辑516可以包括用于由图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括用于在仅位置着色中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线:几何/固定功能流水线516、536内的完全几何流水线;以及拣选流水线,该拣选流水线是可被包括在附加固定功能逻辑516内的附加几何流水线。在一个实施例中,拣选流水线是完全几何流水线的精简版本。完全流水线和拣选流水线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏被丢弃的三角形的长拣选运行,从而使得在一些实例中能够更早完成着色。例如并且在一个实施例中,附件固定功能逻辑516内的拣选流水线逻辑可以与主应用并行地执行位置着色器,并且一般比完全流水线更快地生成关键结果,因为完全流水线仅对顶点的位置属性进行取出和着色,而不向帧缓冲器执行对像素的光栅化和渲染。拣选流水线可以使用所生成的关键结果来计算所有三角形的可见性信息,而无需考虑那些三角形是否被拣选。完全流水线(其在本实例中可被称为重放(replay)流水线)可以消耗可见性信息以便跳过被拣选的三角形从而仅对最终被传递到光栅化阶段的可见三角形进行着色。

在一个实施例中,附加固定功能逻辑516还可以包括用于包括对机器学习训练或推理的优化在内的实现方式的机器学习加速逻辑,诸如固定功能矩阵乘法逻辑。

在每个图形子核501a-501f内包括可用于响应于由图形流水线、媒体流水线、或着色器程序的请求而执行图形操作、媒体操作和计算操作的一组执行资源。图形子核501a-501f包括:多个eu阵列502a-502f、504a-504f;线程分派和线程间通信(td/ic)逻辑503a-503f;3d(例如,纹理)采样器505a-505f;媒体采样器506a-506f;着色器处理器507a-507f;以及共享本地存储器(slm)508a-508f。eu阵列502a-502f、504a-504f各自包括多个执行单元,这些执行单元是能够执行浮点逻辑运算和整数/定点逻辑运算以便为图形操作、媒体操作或计算操作(包括图形程序、媒体程序或计算着色器程序)服务的通用图形处理单元,。td/ic逻辑503a-503f执行针对子核内的执行单元的本地线程分派和线程控制操作,并且促进在该子核的执行单元上执行的线程之间的通信。3d采样器505a-505f可以将纹理或其他3d图形相关的数据读取到存储器中。3d采样器可以基于所配置的样本状态以及与给定纹理相关联的纹理格式来以不同方式读取纹理数据。媒体采样器506a-506f可以基于与媒体数据相关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核501a-501f可以替代地包括统一3d和媒体采样器。在子核501a-501f中的每个子核内的执行单元上执行的线程可以利用每个子核内的共享本地存储器508a-508f,以便使得在线程组内执行的线程能够使用公共的芯片上存储器池来执行。

执行单元

图6a-图6b图示出根据本文中所描述的实施例的线程执行逻辑600,该线程执行逻辑600包括在图形处理器核中所采用的处理元件的阵列。图6a-图6b的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。图6a图示出线程执行逻辑600的概览,该线程执行逻辑600可以包括被图示为具有图5的每个子核501a-501f的硬件逻辑的变体。图6b图示出执行单元的示例性内部细节。

如图6a中所图示,在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分派器604、指令高速缓存606、包括多个执行单元608a-608n的可缩放执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求来启用或禁用一个或多个执行单元(例如,执行单元608a、608b、608c、608d至608n-1和608n中的任一个)来动态地缩放。在一个实施例中,所包括的部件经由互连结构而互连,该互连结构链接到这些部件中的每个部件。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610、以及执行单元阵列608a-608n中的一者或多者到存储器(诸如系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,608a)是能够并行地为每个线程在处理多个数据元素的同时执行多个同时硬件线程的独立可编程通用计算单元。在各实施例中,执行单元608a-608n的阵列是可缩放的,以包括任何数量的单独的执行单元。

在一些实施例中,执行单元608a-608n主要用于执行着色器程序。着色器处理器602可以处理各种着色器程序并且经由线程分派器604分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于对来自图形和媒体流水线的线程发起请求进行仲裁并且在执行单元608a-608n中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线可以将顶点、曲面细分或几何着色器分派至线程执行逻辑以进行处理。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程生成请求。

在一些实施例中,执行单元608a-608n支持包括对许多标准3d图形着色器指令的原生支持的指令集,从而使得以最小的转换来执行来自图形库(例如,direct3d和opengl)的着色器程序。这些执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元608a-608n中的每个执行单元都能够执行多发布的单指令多数据(simd),并且多线程操作能够在面对较高等待时间的存储器访问时实现高效的执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器堆和相关的独立线程状态。对于能够进行整数、单精度浮点运算和双精度浮点运算、simd分支功能、逻辑运算、超越运算和其他混杂运算的流水线,执行是每个时钟多发布的。在等待来自存储器或共享功能之一的数据时,执行单元608a-608n内的依赖性逻辑使等待线程休眠,直到所请求的数据已被返回。当等待线程正在休眠时,硬件资源可专门用于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行针对像素着色器、片段着色器或包括不同顶点着色器的另一种类型的着色器程序的操作。

执行单元608a-608n中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”、或指令的通道数量。执行通道是执行数据元素访问、掩码、和指令内的流控制的逻辑单元。通道的数量可与针对特定图形处理器的物理算术逻辑单元(alu)或浮点单元(fpu)的数量无关。在一些实施例中,执行单元608a-608n支持整数和浮点数据类型。

执行单元指令集包括simd指令。各种数据元素可以作为紧缩数据类型被存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,该256位的向量被存储在寄存器中,并且执行单元作为四个单独的64位紧缩数据元素(四字(qw)大小的数据元素)、八个单独的32位紧缩数据元素(双字(dw)大小的数据元素)、十六个单独的16位紧缩数据元素(字(w)大小的数据元素)、或三十二个单独的8位数据元素(字节(b)大小的数据元素)对向量上操作。然而,不同的向量宽度和寄存器大小是可能的。

在一个实施例中,可以将一个或多个执行单元组合到融合执行单元609a-609n中,这些融合执行单元具有对于融合eu而言共同的线程控制逻辑(607a-607n)。可以将多个eu融合到eu组中。融合eu组中的每个eu可以被配置成用于执行单独的simd硬件线程。融合eu组中的eu数量可以根据实施例而变化。另外,可以每个eu地执行不同的simd宽度,包括但不限于simd8、simd16和simd32。每个所融合的图形执行单元609a-609n包括至少两个执行单元。例如,所融合的执行单元609a包括第一eu608a、第二eu608b、以及对于第一eu608a和第二eu608b而言共同的线程控制逻辑607a。线程控制逻辑607a控制在所融合的图形执行单元609a上执行的线程,从而允许所融合的执行单元609a-609n内的每个eu使用共同的指令指针寄存器来执行。

一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中,以便对执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括,以对在线程执行期间的线程数据进行高速缓存。在一些实施例中,采样器610被包括,从而为3d操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专业的纹理或媒体采样功能,以便在向执行单元提供所采样的数据之前在采样过程中处理纹理或媒体数据。

在执行期间,图形和媒体流水线经由线程生成和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已经被处理并被光栅化成像素数据,则着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)被调用以便进一步计算输出信息并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,这些顶点属性跨光栅化对象被内插。在一些实施例中,着色器处理器602内的像素处理器逻辑随后执行应用编程接口(api)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派给执行单元(例如,608a)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储器中所存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。

在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进行进一步处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612)从而对经由数据端口进行的存储器访问的数据进行高速缓存。

如图6b中所图示,图形执行单元608可以包括指令取出单元637、通用寄存器堆阵列(grf)624、架构寄存器堆阵列(arf)626、线程仲裁器622、发送单元630、分支单元642、simd浮点单元(fpu)634的集合、以及在一个实施例中的专用整数simdalu635的集合。grf624和arf626包括与在图形执行单元608中可能活跃的每个同时的硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,每线程架构状态被维持在arf626中,而在线程执行期间所使用的数据被存储在grf624中。包括针对每个线程的指令指针的每个线程的执行状态可以保持在arf626中的线程专用寄存器中。

在一个实施例中,图形执行单元608具有作为同时多线程化(smt)与细粒度交织多线程化(imt)的组合的架构。该架构具有模块化配置,该模块化配置可以基于每执行单元的目标同时线程数量和目标寄存器数量而在设计时得到微调,在该模块化配置中,跨用于执行多个同时线程的逻辑来划分执行单元资源。

在一个实施例中,图形执行单元608可以共同发布多条指令,这些指令可以各自是不同的指令。图形执行单元线程608的线程仲裁器622可以将指令分派给以下各项中的一项以供执行:发送单元630、分支单元632或(多个)simdfpu634。每个执行线程可以访问grf624内的128个通用寄存器,其中,每个寄存器可以存储作为具有32位数据元素的simd8元素向量可访问的32个字节。在一个实施例中,每个执行单元线程访问grf624内的4个千字节,但是实施例并不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程可以同时执行,但是每执行单元的线程数量还可以根据实施例而变化。在其中七个线程可访问4个千字节的实施例中,grf624可以存储总共28千字节。灵活寻址模式可以准许对多个寄存器进行一起寻址,从而高效地建立更宽的寄存器或者表示跨步矩形块数据结构。

在一个实施例中,通过由消息传递发送单元630所执行的“发送”指令来分派存储器操作、采样器操作以及其他较长等待时间系统通信。在一个实施例中,分支指令被分派给专用分支单元632以便促进simd发散和最终收敛。

在一个实施例中,图形执行单元608包括用于执行浮点运算的一个或多个simd浮点单元(fpu)634。在一个实施例中,(多个)fpu634还支持整数计算。在一个实施例中,(多个)fpu634可以simd执行多达数量m个32位浮点(或整数)运算,或者simd执行多达2m个16位整数或16位浮点运算。在一个实施例中,(多个)fpu中的至少一个提供支持高吞吐量超越数学功能和双精度64位浮点的扩展数学能力。在一些实施例中,8位整数simdalu635的集合还表示并且还可以具体地优化成执行与机器学习计算相关联的运算。

在一个实施例中,可以在图形子核分组(例如,子切片)时对图形执行单元608的多个实例的阵列进行实例化。为了可缩放性,产品架构可以选择每子核分组的确切执行单元数量。在一个实施例中,执行单元608可以跨多个执行通道来执行指令。在进一步的实施例中,在图形执行单元608上所执行的每个线程是在不同通道上执行的。

图7是图示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有以多种格式的指令的指令集。实线框图示出一般被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令子集中的组成部分。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是供应至执行单元的指令,这与从一旦指令被处理就进行的指令解码产生的微操作相对照。

在一些实施例中,图形处理器执行单元原生地支持采用128位指令格式710的指令。64位紧凑指令格式730可用于基于所选择的指令、多个指令选项和操作数数量的一些指令。原生的128位指令格式710提供对所有指令选项的访问,而一些选项和操作在64位格式730中受限。64位格式730中可用的原生指令根据实施例而不同。在一些实施例中,使用索引字段713中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来引用一组压缩表,并使用压缩表输出来重构采用128位指令格式710的原生指令。

针对每种格式,指令操作码712限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于添加指令,执行单元跨标识纹理元素或图片元素的每个颜色通道执行同步添加操作。默认地,执行单元跨操作数的所有数据通道执行每条指令。在一些实施例中,指令控制字段714实现对某些执行选项的控制,这些执行选项诸如通道选择(例如,断言)以及数据通道排序(例如,混合)。针对采用128位指令格式710的指令,执行大小字段716限制了将并行地执行的数据通道的数量。在一些实施例中,执行大小字段716不可用于64位紧凑指令格式730。

一些执行单元指令具有多达三个操作数,包括两个源操作数src0720、src1722和一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中这些目的地中的一个是隐式的。数据操纵指令可以具有第三源操作数(例如,src2724),其中,指令操作码712确定源操作数的数量。指令的最后的源操作数可以是利用该指令传递的立即数(例如,硬编码的)值。

在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定例如是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,由指令中的位直接提供一个或多个操作数的寄存器地址。

在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定针对指令的地址模式和/或访问模式。在一个实施例中,访问模式用于限定针对指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中,访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式时,指令可将字节对齐的寻址用于源操作数和目的地操作数,并且当处于第二模式时,指令可将16字节对齐的寻址用于所有的源操作数和目的地操作数。

在一个实施例中,访问/地址模式字段726的地址模式部分确定指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。

在一些实施例中,基于操作码712的位字段对指令进行分组从而简化操作码解码740。针对8位的操作码,位4、5、和6允许执行单元确定操作码的类型。所示出的确切的操作码分组仅为示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(msb),其中移动(mov)指令采用0000xxxxb的形式,并且逻辑指令采用0001xxxxb的形式。流控制指令组744(例如,调用(call)、跳转(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令组746包括指令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待(wait)、发送(send))。并行数学指令组748包括采用0100xxxxb形式(例如,0x40)的按分量的算术指令(例如,加(add)、乘(mul))。并行数学组748跨数据通道并行地执行算术运算。向量数学组750包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,诸如,点积计算。

图形流水线

图8是图形处理器800的另一实施例的框图。图8的具有与本文中任何其他附图中的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。

在一些实施例中,图形处理器800包括几何流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过至一个或多个控制寄存器(未示出)的寄存器写入或者经由通过环形互连802发布至图形处理器800的命令而受控。在一些实施例中,环形互连802将图形处理器800耦合至其他处理部件,其他处理部件诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流转化器803解译,该命令流转化器803将指令供应至几何流水线820或媒体流水线830的单独部件。

在一些实施例中,命令流转化器803引导顶点获取器805的操作,该顶点获取器805从存储器读取顶点数据并执行由命令流转化器803提供的顶点处理命令。在一些实施例中,顶点获取器805将顶点数据提供给顶点着色器807,该顶点着色器807对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器805和顶点着色器807通过经由线程分派器831向执行单元852a-852b分派执行线程来执行顶点处理指令。

在一些实施例中,执行单元852a-852b是具有用于执行图形和媒体操作的指令集的向量处理器阵列。在一些实施例中,执行单元852a-852b具有专用于每个阵列或在多个阵列之间被共享的附加的l1高速缓存851。高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区以不同分区中包含数据和指令的单个高速缓存。

在一些实施例中,几何流水线820包括用于执行3d对象的硬件加速的曲面细分的曲面细分部件。在一些实施例中,可编程的外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在外壳着色器811的指示下进行操作,并且包含专用逻辑,该专用逻辑用于基于作为输入被提供至几何流水线820的粗糙的几何模型来生成详细的几何对象的集合。在一些实施例中,如果未使用曲面细分,则可以绕过曲面细分部件(例如,外壳着色器811、曲面细分器813、域着色器817)。

在一些实施例中,完整的几何对象可以由几何着色器819经由被分派至所述执行单元852a-852b的一个或多个线程来处理、或者可以直接行进至剪辑器829。在一些实施例中,几何着色器对整个几何对象进行操作,而不是如在图形流水线的先前级中那样对顶点或顶点补片(patch))进行操作。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的,以便在曲面细分单元被禁用时执行几何曲面细分。

在光栅化之前,剪辑器829处理顶点数据。剪辑器829可以是固定功能剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线870中的光栅化器和深度测试部件873分派像素着色器,以将几何对象转换为每像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可绕过光栅化器和深度测试部件873,并且经由流出单元823访问未光栅化的顶点数据。

图形处理器800具有允许数据和消息在处理器的主要部件之间传递的互连总线、互连结构或某个其他互连机制。在一些实施例中,执行单元852a-852b和相关联的逻辑单元(例如,l1高速缓存851、采样器854、纹理高速缓存858等)经由数据端口856进行互连,以执行存储器访问并且与处理器的渲染输出流水线部件进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单元852a-852b各自都具有单独的存储器访问路径。在一个实施例中,纹理高速缓存858还可以被配置为采样器高速缓存。

在一些实施例中,渲染输出流水线870包含光栅化器和深度测试部件873,该光栅化器和深度测试部件873将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中也是可用的。像素操作部件877对数据执行基于像素的操作,然而在一些实例中,与2d操作(例如,利用混合的位块图像传递)相关联的像素操作由2d引擎841执行,或者在显示时间由显示控制器843使用重叠显示平面来代替。在一些实施例中,共享l3高速缓存875可用于所有的图形部件,从而允许在无需使用主系统存储器的情况下共享数据。

在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流转化器803接收流水线命令。在一些实施例中,媒体流水线830包括单独的命令流转化器。在一些实施例中,视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎837包括用于生成线程以用于经由线程分派器831分派至线程执行逻辑850的线程生成功能。

在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环形互连802、或某个其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2d引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3d流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示设备(未示出)耦合,该显示设备可以是系统集成的显示设备(如在膝上型计算机中)、或者经由显示设备连接器附接的外部显示设备。

在一些实施例中,几何流水线820和媒体流水线830可被配置成用于基于多个图形和媒体编程接口执行操作,并且并非专用于任何一种应用编程接口(api)。在一些实施例中,图形处理器的驱动器软件将专用于特定图形或媒体库的api调用转换为可由图形处理器处理的命令。在一些实施例中,为开放图形库(opengl)、开放计算语言(opencl)和/或vulkan图形和计算api(这些全部来自科纳斯组织(khronosgroup))提供支持。在一些实施例中,还可以为来自微软公司的direct3d库提供支持。在一些实施例中,可支持这些库的组合。还可为开源计算机视觉库(opencv)提供支持。如果可做出从未来api的流水线到图形处理器的流水线的映射,则具有兼容的3d流水线的未来api也将受到支持。

图形流水线编程

图9a是图示出根据一些实施例的图形处理器命令格式900的框图。图9b是图示出根据实施例的图形处理器命令序列910的框图。图9a中的实线框图示出一般被包括在图形命令中的组成成分,而虚线包括任选的或者仅被包括在图形命令的子集中的组成部分。图9a的示例性图形处理器命令格式900包括用于标识客户端902、命令操作代码(操作码)904、以及用于命令的数据906的数据字段。一些命令中还包括子操作码905和命令大小908。

在一些实施例中,客户端902指定处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调整对命令的进一步处理,并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2d单元、3d单元、和媒体单元。每个客户端单元具有对命令进行处理的相应的处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码904以及子操作码905(如果存在),从而确定要执行的操作。客户端单元使用数据字段906中的信息来执行命令。针对一些命令,期望显式的命令大小908来指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数使命令对齐。

图9b中的流程图图示出示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来启动、执行并终止图形操作集合。仅出于示例性目的示出并描述了样本命令序列,因为实施例并不限于这些特定命令,也不限于此命令序列。而且,所述命令可以作为批量命令以命令序列被发布,以使得图形处理器将以至少部分同时的方式处理命令序列。

在一些实施例中,图形处理器命令序列910可开始于:流水线转储清除命令912,以使得任一活跃的图形流水线完成该流水线的当前未决的命令。在一些实施例中,3d流水线922和媒体流水线924不同时进行操作。执行流水线转储清除,以使得活跃的图形流水线完成任何未决的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活跃的绘图引擎完成未决的操作并且相关的读高速缓存被无效。任选地,渲染高速缓存中被标记为‘脏’的任何数据可以被转储清除到存储器。在一些实施例中,流水线转储清除命令912可以用于流水线同步或者用在将图形处理器置于低功率状态之前。

在一些实施例中,当命令序列需要图形处理器在流水线之间显式地切换时,使用流水线选择命令913。在一些实施例中,除非上下文是发布用于这两条流水线的命令,否则在发布流水线命令之前,在执行上下文中仅需要一次流水线选择命令913。在一些实施例中,在经由流水线选择命令913的流水线切换之前正好需要流水线转储清除命令912。

在一些实施例中,流水线控制命令914配置用于操作的图形流水线,并且用于对3d流水线922和媒体流水线924进行编程。在一些实施例中,流水线控制命令914配置用于活跃流水线的流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并且用于在处理批量命令之前清除来自活跃的流水线内的一个或多个高速缓存存储器的数据。

在一些实施例中,返回缓冲器状态命令916用于配置返回缓冲器的集合以供相应的流水线写入数据。一些流水线操作需要分配、选择、或配置一个或多个返回缓冲器,在处理期间,这些操作将中间数据写入到该一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择用于流水线操作集合的返回缓冲器的大小和数量。

命令序列中的剩余命令基于用于操作的活跃的流水线而不同。基于流水线判定920,命令序列被定制用于以3d流水线状态930开始的3d流水线922、或者开始于媒体流水线状态940的媒体流水线924。

用于配置3d流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3d图元命令之前配置的其他状态变量的3d状态设置命令。这些命令的值至少部分地基于使用中的特定3dapi来确定。在一些实施例中,如果将不使用某些流水线元件,则3d流水线状态930命令还能够选择性地禁用或绕过这些特定的流水线元件。

在一些实施例中,3d图元932命令用于提交待由3d流水线处理的3d图元。经由3d图元932命令传递给图形处理器的命令和相关联参数将被转发到图形流水线中的顶点获取功能。顶点获取功能使用3d图元932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3d图元932命令用于经由顶点着色器对3d图元执行顶点操作。为了处理顶点着色器,3d流水线922将着色器执行线程分派至图形处理器执行单元。

在一些实施例中,经由执行934命令或事件来触发3d流水线922。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘前进’(‘go’)或‘踢除’(‘kick’)命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以对通过图形流水线的命令序列进行转储清除。3d流水线将针对3d图元来执行几何处理。一旦完成操作,则对所得到的几何对象进行光栅化,并且像素引擎对所得到的像素进行着色。对于那些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。

在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随媒体流水线924路径。一般地,针对媒体流水线924进行编程的具体用途和方式取决于待执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可被卸载到媒体流水线。在一些实施例中,还可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(gpgpu)操作的元件,其中,图形处理器用于使用计算着色器程序来执行simd向量运算,该计算着色器程序与渲染图形图元不是显式地相关的。

在一些实施例中,以与3d流水线922相似的方式对媒体流水线924进行配置。将一组用于配置媒体流水线状态940的命令分派或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,用于媒体流水线状态的命令940包括用于配置媒体流水线元件的数据,这些媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如,编码或解码格式。在一些实施例中,用于媒体流水线状态940的命令还支持将一个或多个指针用于包含批量的状态设置的“间接”状态元件。

在一些实施例中,媒体对象命令942将指针供应至媒体对象以用于由媒体流水线进行处理。媒体对象包括存储器缓冲器,该存储器缓冲器包含待处理的视频数据。在一些实施例中,在发布媒体对象命令942之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令942被排队,则经由执行944命令或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。随后可通过由3d流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行gpgpu操作。

图形软件架构

图10图示出根据一些实施例的用于数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括3d图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。

在一些实施例中,3d图形应用1010包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如,高级着色器语言(hlsl)或opengl着色器语言(glsl)。应用还包括可执行指令1014,该可执行指令1014采用适合用于由通用处理器核1034执行的机器语言。应用还包括由顶点数据限定的图形对象1016。

在一些实施例中,操作系统1020是来自微软公司的操作系统、专用类unix操作系统、或使用linux内核的变体的开源类unix操作系统。操作系统1020可以支持图形api1022,诸如,direct3dapi、openglapi或vulkanapi。当direct3dapi正在使用时,操作系统1020使用前端着色器编译器1024以将采用hlsl的任何着色器指令1012编译成较低级的着色器语言。编译可以是即时(jit)编译,或者应用可以执行着色器预编译。在一些实施例中,在对3d图形应用1010进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,以中间形式(诸如,由vulkanapi使用的标准可移植中间表示(spir)的版本)提供着色器指令1012。

在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,该后端着色器编译器1027用于将着色器指令1012转换为硬件专用的表示。当openglapi正在使用时,将采用glsl高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032进行通信以分派命令和指令。

ip核实现

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性代码实现,该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可包括表示处理器内的各个逻辑的指令。当由机器读取时,指令可使机器制造用于执行本文中所描述的技术的逻辑。此类表示(称为“ip核”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而被存储在有形的机器可读介质上。可将该硬件模型供应给各消费者或制造设施,这些消费者或制造设施将该硬件模型加载在制造集成电路的制造机器上。可制造集成电路,以使得电路执行与本文中所描述的实施例中的任一实施例相关联地描述的操作。

图11a是图示出根据实施例的可以用于制造集成电路以执行操作的ip核开发系统1100的框图。ip核开发系统1100可用于生成可以并入到更大的设计中或用于构建整个集成电路(例如,soc集成电路)的模块化、可重复使用的设计。设计设施1130可以采用高级编程语言(例如,c/c++)来生成对ip核设计的软件仿真1110。软件仿真1110可以用于使用仿真模型1112来设计、测试并验证ip核的行为。仿真模型1112可以包括功能、行为和/或时序仿真。然后可以从仿真模型1112创建或合成寄存器传输级(rtl)设计1115。rtl设计1115是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联的逻辑)的行为的抽象。除了rtl设计1115之外,还可以创建、设计或合成处于逻辑级或晶体管级的较低层级的设计。由此,初始设计和仿真的具体细节可有所不同。

可由设计设施将rtl设计1115或等效方案进一步合成为硬件模型1120,该硬件模型1120可采用硬件描述语言(hdl)或物理设计数据的某种其他表示。可以进一步仿真或测试hdl以验证ip核设计。可使用非易失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)来存储ip核设计以用于递送至第3方制造设施1165。替代地,可以通过有线连接1150或无线连接1160来传输(例如,经由互联网)ip核设计。制造设施1165随后可制造至少部分地基于ip核设计的集成电路。所制造的集成电路可以被配置成用于执行根据本文中所描述的至少一个实施例的操作。

图11b图示出根据本文中所描述的一些实施例的集成电路封装组件1170的截面侧视图。集成电路封装组件1170图示出如本文中所描述的一个或多个处理器或加速器设备的实现方式。封装组件1170包括连接至衬底1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可以包括(多个)处理器核、(多个)图形处理器或本文中所描述的其他加速器设备中的任何一者的一个或多个部分。每个逻辑单元1172、1174可以在半导体管芯内实现并且经由互连结构1173与衬底1180耦合。互连结构1173可以被配置成在逻辑1172、1174与衬底1180之间路由电信号,并且可以包括互连,诸如但不限于凸块或支柱。在一些实施例中,互连结构1173可被配置成用于路由电信号,这些电信号诸如例如,与逻辑1172、1174的操作相关联的输入/输出(i/o)信号和/或功率或接地信号。在一些实施例中,衬底1180是基于环氧树脂的层压衬底。在其他实施例中,封装组件1170可以包括其他合适类型的衬底。封装体组件1170可以经由封装互连1183连接至其他电气设备。封装互连1183可耦合至衬底1180的表面以便将电信号路由到其他电气设备,诸如母板、其他芯片组或多芯片模块。

在一些实施例中,逻辑单元1172、1174与桥接器1182电耦合,该桥接器1182被配置成用于在逻辑1172、1174之间路由电信号。桥接器1182可以是为电信号提供路由的密集互连结构。桥接器1182可包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可以在桥接器衬底上形成以便提供逻辑1172、1174之间的芯片到芯片连接。

尽管图示了两个逻辑单元1172、1174和桥接器1182,但是本文中所描述的实施例可包括一个或多个管芯上的更多或更少的逻辑单元。一个或多个管芯可由零个或多个桥接器连接,因为逻辑被包括在单个管芯上时,可以排除桥接器1182。替代地,多个管芯或逻辑单元可以由一个或多个桥接器连接。另外,多个逻辑单元、管芯和桥接器能以包括三维配置的其他可能的配置连接在一起。

示例性芯片上系统集成电路

图12-图14图示出根据本文中所描述的各实施例的可使用一个或多个ip核来制造的示例性集成电路和相关联的图形处理器。除了所图示的之外,还可包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。

图12是图示出根据实施例的可使用一个或多个ip核来制造的示例性芯片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,cpu)、至少一个图形处理器1210,并且可附加地包括图像处理器1215和/或视频处理器1220,其中的任一项都可以是来自相同的或多个不同的设计设施的模块化ip核。集成电路1200包括外围或总线逻辑,该外围或总线逻辑包括usb控制器1225、uart控制器1230、spi/sdio控制器1235和i2s/i2c控制器1240。另外,集成电路可以包括显示设备1245,该显示设备1245耦合至高清晰度多媒体接口(hdmi)控制器1250和移动产业处理器接口(mipi)显示接口1255中的一个或多个。可由闪存子系统1260(包括闪存和闪存控制器)来提供存储。可经由存储器控制器1265来提供存储器接口以访问sdram或sram存储器设备。另外,一些集成电路附加地包括嵌入式安全引擎1270。

图13a-图13b是图示出根据本文中所描述的实施例的用于在soc内使用的示例性图形处理器的框图。图13a图示出根据实施例的可使用一个或多个ip核来制造的芯片上系统集成电路的示例性图形处理器1310。图13b图示出根据实施例的可使用一个或多个ip核来制造的芯片上系统集成电路的附加示例性图形处理器1340。图13a的图形处理器1310是低功率图形处理器核的示例。图13b的图形处理器1340是较高性能图形处理器核的示例。图形处理器1310、1340中的每个图形处理器可以是图12的图形处理器1210的变体。

如图13a中所示,图形处理器1310包括顶点处理器1305以及一个或多个片段处理器1315a-1315n(例如,1315a、1315b、1315c、1315d至1315n-1和1315n)。图形处理器1310可以经由分开的逻辑执行不同的着色器程序,以使得顶点处理器1305被优化成执行用于顶点着色器程序的操作,而一个或多个片段处理器1315a-1315n执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3d图形流水线的顶点处理级,并生成图元和顶点数据。(多个)片段处理器1315a-1315n使用由顶点处理器1305生成的图元和顶点数据来产生显示在显示设备上的帧缓冲器。在一个实施例中,(多个)片段处理器1315a-1315n被优化成执行如提供用于openglapi中的片段着色器程序,片段处理器1315a-1315n可用于执行与如提供用于direct3dapi中的像素着色器程序类似的操作。

图形处理器1310附加地包括一个或多个存储器管理单元(mmu)1320a-1320b、(多个)高速缓存1325a-1325b和(多个)电路互连1330a-1330b。一个或多个mmu1320a-1320b提供用于图形处理器1310的虚拟到物理地址映射,包括用于顶点处理器1305和/或(多个)片段处理器1315a-1315n的虚拟到物理地址映射,除了存储在一个或多个高速缓存1325a-1325b中的顶点或图像/纹理数据之外,顶点处理器1305和/或(多个)片段处理器1315a-1315n还可引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个mmu1320a-1320b可与系统内的其他mmu同步,以使得每个处理器1205-1220可以参与共享或统一虚拟存储器系统,其他mmu包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个mmu。根据实施例,一个或多个电路互连1330a-1330b使得图形处理器1310能够经由soc的内部总线或经由直接连接与soc内的其他ip核接口连接。

如图13b中所示,图形处理器1340包括图13a的图形处理器1310的一个或多个mmu1320a-1320b、高速缓存1325a-1325b和电路互连1330a-1330b。图形处理器1340包括一个或多个着色器核1355a-1355n,该一个或多个着色器核1355a-1355n(例如,1355a、1355b、1355c、1355d、1355e、1355f至1355n-1和1355n)提供统一着色器核架构,在该统一着色器核架构中,单个核或单类型的核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量在各实施例和各实现方式之间可以有所不同。另外,图形处理器1340包括核间任务管理器1345和分块单元(tilingunit)1358,该核间任务管理器1345充当线程分派器以将执行线程分派给一个或多个着色器核1355a-1355n,该分块单元1358用于加速用于基于图块的渲染的分块操作,在用于基于图块的渲染的分块操作中,对场景的渲染操作被细分在图像空间中,从而例如利用场景内的局部空间一致性,或优化内部高速缓存的使用。

图14a-图14b图示出根据本文中所描述的实施例的附加示例性图形处理器逻辑。图14a图示出图形核1400,该图形核1400可包括在图12的图形处理器1210内并且可以是如图13b中的统一着色器核1355a-1355n。图14b图示出适合于部署在多芯片模块上的高度并行的通用图形处理单元1430。

如图14a中所示,图形核1400包括对于图形核1400内的执行资源而言共同的共享指令高速缓存1402、纹理单元1418和高速缓存存储器/共享存储器1420。图形核1400可以包括多个切片1401a-1401n或针对每个核的分区,并且图形处理器可以包括图形核1400的多个实例。切片1401a-1401n可以包括支持逻辑,该支持逻辑包括本地指令高速缓存1404a-1404n、线程调度器1406a-1406n、线程分派器1408a-1408n、以及一组寄存器1410a。为了执行逻辑运算,切片1401a-1401n可以包括一组附加功能单元(afu1412a-1412n)、浮点单元(fpu1414a-1414n)、整数算术逻辑单元(alu1416a-1416n)、寻址计算单元(acu1413a-1413n)、双精度浮点单元(dpfpu1415a-1415n)、以及矩阵处理单元(mpu1417a-1417n)。

这些计算单元中的一些以特定精度进行操作。例如,fpu1414a-1414n可以执行单精度(32位)和半精度(16位)浮点运算,而dpfpu1415a-1415n执行双精度(64位)浮点运算。alu1416a-1416n可以以8位精度、16位精度和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。mpu1417a1417n也可以被配置用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。mpu1417a-1417n可以执行各种各样的矩阵运算以便加速机器学习应用框架,包括实现对于加速的通用矩阵-矩阵乘法(gemm)的支持。afu1412a-1412n可以执行不受浮点单元或整数单元支持的附加逻辑运算,包括三角函数运算(例如,正弦、余弦等)。

如图14b中所示,通用处理单元(gpgpu)1430可以被配置成使得能够由图形处理单元阵列执行高度并行的计算操作。另外,gpgpu1430可以直接链接到gpgpu的其他实例以便创建多gpu集群,从而提高尤其是深度神经网络的训练速度。gpgpu1430包括用于实现与主机处理器的连接的主机接口1432。在一个实施例中,主机接口1432是pci快速接口。然而,主机接口还可以是供应方特定的通信接口或通信结构。gpgpu1430从主机处理器接收命令并且使用全局调度器1434将与那些命令相关联的执行线程分发给一组计算集群1436a-1436h。计算集群1436a-1436h共享高速缓存存储器1438。高速缓存存储器1438可以充当计算集群1436a-1436h内的高速缓存存储器的较高层级的高速缓存。

gpgpu1430包括经由一组存储器控制器1442a-1442b与计算集群1436a-1436h耦合的存储器1434a至1434b。在各实施例中,存储器1434a至1434b可以包括各种类型的存储器设备,包括动态随机存取存储器(dram)或图形随机存取存储器,诸如同步图形随机存取存储器(sgram),包括图形双倍数据速率(gddr)存储器。

在一个实施例中,计算集群1436a-1436h各自包括一组图形核(如图14a的图形核1400),这些图形核可以包括多种类型的整数逻辑单元和浮点逻辑单元,这些逻辑单元可以在一定精度范围内执行包括适合于机器学习计算的计算操作。例如并且在一个实施例中,计算集群1436a-1436h中的每个计算集群中的浮点单元的至少一个子集可以被配置成用于执行16位或32位浮点运算,而浮点单元的不同子集可以被配置成用于执行64位浮点运算。

gpgpu1430的多个实例可以被配置成作为计算集群进行操作。由计算集群用来进行同步和数据交换的通信机制跨实施例而变化。在一个实施例中,gpgpu1430的多个实例通过主机接口1432进行通信。在一个实施例中,gpgpu1430包括i/o中枢1439,该i/o中枢1439将gpgpu1430与实现到gpgpu的其他实例的直接连接的gpu链路1440耦合。在一个实施例中,gpu链路1440耦合至实现gpgpu1430的多个实例之间的通信和同步的专用gpu到gpu桥接器。在一个实施例中,gpu链路1440与高速互连耦合,以便向其他gpgpu或并行处理器传输和接收数据。在一个实施例中,gpgpu1430的多个实例位于单独的数据处理系统中并且经由可经由主机接口1432访问的网络设备进行通信。在一个实施例中,除了主机接口1432或作为对主机接口1432的替代方案,gpu链路1440还可以被配置成用于实现到主机处理器的连接。

尽管gpgpu1430的所图示的配置可以被配置成训练神经网络,但是一个实施例提供了gpgpu1430的替代配置,该替代配置可以被配置成部署在高性能或低功率推断平台内。在推断配置中,gpgpu1430包括计算集群1436a-1436h中与训练配置有关的更少计算集群。另外,与存储器1434a-1434b相关联的存储器技术可在推断配置与训练配置之间不同,其中,更高带宽存储器技术专用于训练配置。在一个实施例中,gpgpu1430的推断配置可以支持推断特定指令。例如,推断配置可以提供对一个或多个8位整数点积指令的支持,这些指令通常在所部署的神经网络的推断操作期间使用。

沉浸式视频概述

图15a展示了多种形式的沉浸式视频。沉浸式视频可以以多种形式呈现,这取决于观看者可用的自由度。自由度指的是对象在三维(3d)空间中可以移动的不同方向的数量。可以经由包括对位置和取向进行跟踪的头戴式显示器来观看沉浸式视频。沉浸式视频的示例形式包括3dof1502、3dof+1504和完整的6dof1506。除了完整的6dof1506中的沉浸式视频外,6d0f沉浸式视频还包括全向6dof1507以及有窗口的6dof1508。

对于3dof1502中的视频(例如,360度视频),观看者可以改变取向(例如,偏航、俯仰、滚动)但不改变位置。对于3dof+1504中的视频,观看者可以改变取向并对位置变化进行微小改变。对于6dof1506中的视频,观看者可以改变取向并改变位置。更有限的6dof视频形式也是可用的。全向6dof1507中的视频使得观看者能够在虚拟场景中进行多个步骤。有窗口的6dof1508中的视频允许观看者改变取向和位置,但观看者被约束到有限的观看区域。增加沉浸式视频中的可用自由度通常包括增加视频生成、编码、解码和回放中涉及的数据的量和复杂性。

图15b展示了用于沉浸式视频的图像投影和纹理平面。可以使用来自多个相机的数据生成视频内容的3d视图1510。多个投影平面1512可以用于生成视频内容的几何数据。可以针对用于生成几何数据的投影平面1512导出多个纹理平面1514。可以将纹理平面1514应用于基于从视频数据导出的点云而预先生成或生成的3d模型。所述多个投影平面1512可以用于生成多个二维(2d)投影,每个二维投影与投影平面相关联。

图16展示了客户端-服务器系统,通过所述系统,可以由服务器1620基础设施生成沉浸式视频内容并对其进行编码,以便传输到一个或多个客户端1630设备。然后,客户端1630设备可以解压缩并渲染沉浸式视频内容。在一个实施例中,一个或多个服务器1620设备可以包括来自具有深度传感器1602的一个或多个光学相机1601的输入。并行计算1604资源可以将视频和深度数据分解为点云1605和/或纹理三角形1606。还可以由场景的预先生成的3d模型1603来提供用于生成纹理三角形1606的数据。点云1605和/或纹理三角形1606可以被压缩以用于传输到可以在本地渲染内容的一个或多个客户端设备。在一个实施例中,各种压缩单元1607、1608使用各种压缩算法可以压缩所生成的内容以用于通过递送介质从服务器1620传输到一个或多个客户端1630设备。客户端1630设备上的解压缩单元1609、1610可以将传入的比特流解压缩并解码为视频/纹理以及几何数据。例如,解压缩单元1609可以对经压缩的点云数据进行解码并将经解压缩的点云数据提供给视点插值单元1611。插值视点数据可以用于生成位图数据1613。可以将经解压缩的点云数据提供给几何重构单元1612以重构场景的几何数据。可以通过经解码的纹理数据(纹理三角形1614)来纹理化经重构的几何数据,以生成3d渲染1616以供客户端1630观看。

图17a至图17b展示了用于对3dof+内容进行编码和解码的系统1700、1710。系统1700可以由例如图16中的服务器1620基础设施的硬件和软件来实施。系统1710可以由如图16中的客户端1630的硬件和软件来实施。

如图17a所示出的,系统1700可以用于对基础视图1701的视频数据1702和附加视图1704的视频数据1705a至1705c进行编码。多个相机可以提供包括视频数据和深度数据的输入数据,其中视频数据的每个帧可以被转换为纹理。一组重投影1706和遮挡检测1707单元可以对所接收的视频数据进行操作并将处理后的数据输出到补片形成1708单元。可以将由补片形成1708单元形成的补片提供给补片打包1709单元。可以例如经由高效视频编码(hevc)编码器1703a对基础视图1701的视频数据1702进行编码。hevc编码器1703a的变体也可以用于对从补片打包1709单元输出的补片视频数据进行编码。可以由元数据编码1703b单元来对用于重构来自经编码补片的视频的元数据进行编码。然后可以将多个经编码视频和元数据流传输到客户端设备以供观看。

如图17b所示出的,可以由系统1710接收、解码多个视频数据流并将其重构为沉浸式视频。所述多个视频流包括基础视频的流,以及包含附加视图的打包数据的流。还接收经编码的元数据。在一个实施例中,可以经由hevc1713a解码器对所述多个视频流进行解码。可以经由元数据1713b解码器对元数据进行解码。经解码的元数据然后用于经由补片解包1719逻辑对经解码的附加视图进行解包。基础视图1701和附加视图1704的经解码的纹理和深度数据(视频01712、视频1至31714a至1715c)由客户端(例如,如图16中的客户端1630)上的视图生成逻辑1718来重构。经解码的视频1712、1715a至1715c可以作为纹理和深度数据被提供给中间视图渲染器1714,所述中间视图渲染器可以用于渲染头戴式显示器1711的中间视图。头戴式显示器位置信息1716作为反馈被提供给中间视图渲染器1714,所述中间视图渲染器可以渲染经由头戴式显示器1711呈现的所显示视口的更新视图。

图18a至图18b展示了用于对6dof纹理几何数据进行编码和解码的系统。图18a示出了6dof纹理几何编码系统1800。图18b示出了6dof纹理几何解码系统1820。6dof纹理几何编码和解码可以用于启用6dof沉浸式视频的其中视频数据作为纹理被应用于几何数据的变体,从而允许基于头戴式显示器的位置和取向来渲染新的中间视图。由多个视频相机记录的数据可以与(具体地,静态对象的)3d模型组合。

如图18a所示出的,6dof纹理几何编码系统1800可以接收基础视图的视频数据1802和附加视图的视频数据1805a至1805c。视频数据1802、1805a-1805c包括可以由重投影和遮挡检测单元1806处理的纹理和深度数据。可以将来自重投影和遮挡检测单元1806的输出提供给补片分解单元1807和几何图像生成器1808。来自补片分解单元1807的输出被提供给补片打包单元1809和辅助补片信息压缩器1813。所述辅助补片信息(补片信息)提供用于重构视频纹理和深度数据的补片的信息。补片打包单元1809将打包的补片数据输出到几何图像生成器1808、纹理图像生成器1810、属性图像生成器1811以及占用图压缩器1812。

几何图像生成器1808、纹理图像生成器1810和属性图像生成器1811将数据输出到视频压缩器1814。几何图像生成器1808可以从重投影和遮挡检测单元1806、补片分解单元1807和补片打包单元1809接收输入,并生成几何图像数据。纹理图像生成器1810可以从补片打包单元1809接收打包的补片数据,并且从重投影和遮挡检测单元1806接收视频纹理和深度数据。属性图像生成器1811根据从重投影和遮挡检测单元1806接收的视频纹理和深度数据以及从补片打包单元1809接收的打包的补片数据生成属性图像。

占用图可以由占用图压缩器1812基于从补片打包单元1809输出的打包的补片数据生成。辅助补片信息可以由辅助补片信息压缩器1813生成。经压缩的占用图和辅助补片信息数据可以由多路复用器1815来与从视频压缩器1814输出的经压缩的和/或经编码的视频数据一起多路复用到经解压缩的比特流1816中。从视频压缩器1814输出的经压缩的视频数据包括经压缩的几何图像数据、纹理图像数据和属性图像数据。经压缩的比特流1816可以存储或提供给客户端设备用于进行解压缩和观看。

如图18b所示出的,6dof纹理几何解码系统1820可以用于对使用图18a的编码系统1800生成的6dof内容进行解码。经压缩的比特流1816由解复用器1835接收并解复用为多个视频解码流、占用图以及辅助补片信息。由视频解码器1834a至1834b对所述多个视频流进行解码/解压缩。由占用图解码器1832对占用图数据进行解码/解压缩。经解码的视频数据和占用图数据由视频解码器1834a至1834b和占用图解码器1832输出到解包单元1829。解包单元对由图18a的补片打包单元1809打包的视频补片数据进行解包。来自辅助补片信息解码器1833的辅助补片信息被提供给遮挡填充单元1826,所述遮挡填充单元可以用于根据可能从视频数据的具体视图中缺失的对象被遮挡部分来填充补片。具有纹理和深度数据的各个视频流1822、1825a至1825c从遮挡填充单元1826输出并提供给中间视图渲染器1823,所述中间视图渲染器可以基于由头戴式显示器1824提供的位置和取向信息来渲染用于在头戴式显示器1824上显示的视图。

图19a至图19b展示了用于对6dof点云数据进行编码和解码的系统。图19a展示了6dof点云编码系统1900。图19b展示了6dof点云解码系统1920。6dof视频可以使用点云来表示,其中对于点云视频序列,在定期的时间间隔(例如,60hz)处存在新的点云帧。点云数据帧中的每个点由六个参数表示:(x、y、z)几何位置和(r、g、b或y、u、v)纹理数据。在图19a的编码系统1900中,点云帧被投影到若干二维(2d)平面上,每个2d平面对应于某个投影角度。所述投影平面可以类似于图15b的投影平面1512。在一些实施方式中,在pcc标准测试模型中使用六个投影角度,其中所述投影角度对应于指向限定由点云数据表示的对象的矩形实体的六个面的中心的角度。虽然描述了六个投影角度,但是在不同的实施方式中可以使用其他数量的角度。

在每个投影角度处形成纹理和深度2d图像补片表示。可以通过仅对投影角度具有最接近法线的那些点进行投影来创建投影角度的2d补片图像表示。换言之,针对使点法线和平面法线的点积最大化的点采用2d补片图像表示。将来自单独投影的纹理补片组合到单个纹理图像中,其被称为几何图像。在占用图和辅助补片信息中描述了用于表示补片以及它们如何被打包到帧中的元数据。占用图元数据包括关于哪些图像样本位置是空(例如,不包含相应的点云信息)的指示。辅助补片信息指示补片所属的投影平面,并且可以用于确定与给定样本位置相关联的投影平面。使用诸如高效视频编码(hevc)编码器等2d常规视频编码器来对纹理图像和深度图像进行编码。可以使用元数据编码逻辑来单独压缩元数据。在测试模型解码器中,使用hevc视频解码器来对纹理图像和深度图像进行解码。使用经解码的纹理和深度图像以及占用图和辅助补片信息元数据来重构点云。

如图19a所示出的,可以将点云数据的输入帧分解为补片数据。可以以与图18a中的视频纹理和深度数据类似的方式来对点云数据和经分解的补片数据进行编码。包括点云帧1906的输入数据可以被提供给补片分解单元1907。输入点云数据及其经分解的补片可以由打包单元1909、几何图像生成器1908、纹理图像生成器1910、属性图像生成器1911、占用图压缩器1912以及辅助补片信息压缩器1913使用与对由图18a的重投影和遮挡检测单元1806以及补片分解单元1807输出的纹理深度和视频数据的处理类似的技术来处理。视频压缩器1914可以对几何图像、纹理图像和属性图像数据进行编码和/或压缩。来自视频压缩器1914的经压缩的和/或经编码的视频数据可以由多路复用器1915来与占用映图和辅助补片信息数据一起多路复用到经压缩的比特流1916中,所述经压缩比特流可以被存储或传输以用于显示。

由图19a的系统1900输出的经压缩的比特流可以由图19b中示出的点云解码系统1920进行解码。如图19b所示出的,经压缩的比特流1916可以被解复用成多个经编码/经压缩视频流、占用图数据和辅助补片信息。视频流可以由多流视频解码器1934来进行解码/解压缩,所述多流视频解码器可以输出纹理和几何数据。占用图和辅助补片信息可以由占用图解码器1932和辅助补片信息解码器1933来进行解压缩/解码。

然后可以执行几何重构、平滑、和纹理重构以重构提供给图19a的6dof点云编码系统1900的点云数据。几何重构单元1936可以基于从多流视频解码器1934的视频流解码的几何数据、以及占用图解码器1932和辅助补片信息解码器1933的输出来重构几何信息。经重构的几何数据可以由平滑单元1937来平滑。从由多流视频解码器1934输出的视频流解码的经平滑的几何和纹理图像数据被提供给纹理重构单元1938。纹理重构单元1938可以输出经重构的点云1939,所述重构的点云是提供给图19a的6dof点云编码系统1900的输入点云帧1926的变体。

图20展示了根据一个实施例的采用视频处理机制2010的计算设备2000。计算设备2000(例如,服务器、智能可穿戴设备、虚拟现实(vr)设备、头戴式显示器(hmd)、移动计算机、物联网(iot)设备、膝上型计算机、台式计算机、服务器计算机等)可以与图1的处理系统100相同,并且因此,为了简洁、清晰并易于理解,下文不再进一步讨论或重复上文参照图1至图14陈述的许多细节。如所展示的,在一个实施例中,计算设备2000被示出为托管视频处理机制2010。

如所展示的,在一个实施例中,视频处理机制2010可以由图形处理单元(“gpu”或“图形处理器”)2014的固件托管或者可以是所述固件的一部分。在其他实施例中,视频处理机制2010可以由中央处理单元(“cpu”或“应用处理器”)2012的固件托管或者可以是所述固件的一部分。为了简洁、清晰并易于理解,贯穿本文档的其余部分,可以将视频处理机制2010作为gpu2014的一部分进行讨论;然而,实施例不限于此。

在又另一个实施例中,视频处理机制2010可以作为软件或固件逻辑由操作系统2006托管。在仍另一个实施例中,视频处理机制2010可以由图形驱动器2016托管。在又进一步实施例中,视频处理机制2010可以由计算设备2000的多个部件(诸如图形驱动器2016、gpu2014、gpu固件、cpu2012、cpu固件、操作系统2006等中的一个或多个)部分地且同时地托管。可以设想,视频处理机制2010或其组件中的一个或多个可以被实施为硬件、软件和/或固件。

计算设备2000可以包括任何数量和类型的通信设备,诸如大型计算系统,诸如服务器计算机、台式计算机等,并且可以进一步包括机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定位系统(gps)的设备等。计算设备2000可以包括用作通信设备的移动计算设备,诸如包括智能电话的蜂窝电话、个人数字助理(pda)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、可佩戴设备(例如,眼镜、手表、手环、智能卡、珠宝、衣物等)、媒体播放器等。例如,在一个实施例中,计算设备2000可以包括采用托管诸如芯片上系统(“soc”或“soc”)的集成电路(“ic”)的计算机平台的移动计算设备,其将计算设备2000的各种硬件和/或软件组件集成在单个芯片上。

如所展示的,在一个实施例中,计算设备2000可以包括任何数量和类型的硬件和/或软件组件,诸如(但不限于)gpu2014、图形驱动器(也称为“gpu驱动器”、“图形驱动器逻辑”、“驱动器逻辑”、用户模式驱动器(umd)、umd、用户模式驱动器框架(umdf)、umdf或简单地“驱动器”)2016、cpu2012、存储器2008、网络设备、驱动器等,以及输入/输出(i/o)源2004,诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等。

计算设备2000可以包括用作计算机设备2000的硬件和/或物理资源与用户之间的接口的操作系统(os)2006。可以设想,cpu2012可以包括一个或多个处理器,而gpu2014可以包括一个或多个图形处理器。

应当指出,贯穿本文档,可以互换地使用如“节点”、“计算节点”、“服务器”、“服务器设备”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机”“设备”、“计算设备”、“计算机”、“计算系统”等术语。应当进一步指出,贯穿本文档,可以互换地使用如“应用”、“软件应用”、“程序”、“软件程序”、“包”、“软件包”等术语。此外,贯穿本文档,可以互换地使用如“作业”、“输入”、“请求”、“消息”等术语。

进一步地,如“逻辑”、“组件”、“模块”、“引擎”、“模型”、“单元”等术语可以互换地引用,并且例如包括软件、硬件、和/或软件与硬件的任何组合(比如固件)。进一步地,对特定品牌、词语、术语、短语、名称和/或首字母缩略词的任何使用都不应被解读为将实施例限制于在产品中或在本文档之外的文献中携带此标记的软件或设备。

可以设想,并且如参考图1至图14进一步描述的,如上所述的图形流水线的一些进程以软件实施,而其余的进程以硬件实施。图形流水线可以采用图形协处理器设计来实施,其中,cpu2012被设计为用于与gpu2014一起工作,所述gpu可以被包括在cpu2012中或与其共同定位。在一个实施例中,gpu2014可以采用用于执行与图形渲染有关的常规功能的任何数量和类型的常规软件和硬件逻辑、以及用于执行任何数量和类型的指令的新颖软件和硬件逻辑。

如上所述,存储器2008可以包括随机存取存储器(ram),所述ram包括具有对象信息的应用数据库。存储器控制器中枢可以访问ram中的数据并且将其转发到gpu2014以用于图形流水线处理。ram可以包括双数据速率ram(ddrram)、扩展数据输出ram(edoram)等。cpu2012与硬件图形流水线交互以共享图形流水线功能。

经处理的数据被存储在硬件图形流水线的缓冲器中,并且状态信息被存储在存储器2008中。然后将所产生的图像传递到诸如显示组件的i/o源2004,以便显示图像。可以设想,显示设备可以是用于向用户显示信息的各种类型的显示设备,诸如阴极射线管(crt)、薄膜晶体管(tft)、液晶显示器(lcd)、有机发光二极管(oled)阵列等。

存储器2008可以包括缓冲器(例如,帧缓冲器)的预分配区域;然而,本领域普通技术人员应当理解,实施例不限于此,并且可以使用低级图形流水线可访问的任何存储器。计算设备2000可以进一步包括如图1所引用的平台控制器中枢(pch)130、如一个或多个i/o源2004等。

cpu2012可以包括用于执行指令的一个或多个处理器,以便执行计算系统实施的任何软件例程。指令频繁地涉及对数据执行的某种操作。数据和指令两者都可以存储在系统存储器2008和任何相关联的高速缓存中。高速缓存通常被设计为具有比系统存储器2008更短的等待时间;例如,高速缓存可以被集成到与(多个)处理器相同的(多个)硅芯片上和/或用较快的静态ram(sram)单元构造,而系统存储器2008可以用较慢的动态ram(dram)单元构造。与系统存储器2008相反,通过倾向于将更频繁使用的指令和数据存储在高速缓存中,改善了计算设备2000的整体性能效率。可以设想,在一些实施例中,gpu2014可以作为cpu2012的一部分(诸如物理cpu包的一部分)存在,在这种情况下,存储器2008可以由cpu2012和gpu2014共享或保持分开。

可以使系统存储器2008对计算设备2000内的其他部件可用。例如,从至计算设备2000的各种接口(例如键盘和鼠标、打印机端口、局域网(lan)端口、调制解调器端口等)接收到的或从计算机设备2000的内部存储元件(例如,硬盘驱动器)检索到的任何数据(例如,输入图形数据)通常在它们由软件程序的实施方式中的一个或多个处理器操作之前临时排队进入系统存储器2008。类似地,软件程序确定应通过计算系统接口之一从计算设备2000发送到外部实体或存储到内部存储元件中的数据在其被传输或存储之前经常在系统存储器2008中临时排队。

进一步地,例如,pch可以用于确保这种数据在系统存储器2008与其适当对应的计算系统接口(和内部存储设备,如果计算系统是如此设计的话)之间被适当地传递,并且可以在其自身与所观察到的i/o源/设备2004之间具有双向点对点链路。类似地,mch可以用于管理在cpu2012和gpu2014、接口以及可能相对于彼此在时间上接近出现的内部存储元件之中对于系统存储器2008访问的各种竞争请求。

i/o源2004可以包括一个或多个i/o设备,所述一个或多个i/o设备被实施为用于向或从计算设备2000(例如,网络适配器)传递数据;或者用于计算设备2000(例如,硬盘驱动器)内的大规模非易失性存储。包括字母数字及其他键的用户输入设备可以用于将信息和命令选择通信至gpu2014。另一类型的用户输入设备是用于将方向信息和命令选择传达至gpu2014并控制显示设备上的光标移动的光标控制设备,如鼠标、轨迹球、触摸屏、触摸板或光标方向键。可以采用计算机设备2000的相机和麦克风阵列来观察手势、记录音频和视频并接收和发射视觉命令和音频命令。

根据一个实施例,计算设备2000经由一个或多个网络2045耦合到一个或多个客户端计算设备(或客户端)2040。在进一步实施例中,客户端2040还包括视频处理机制2010。在本实施例中,视频处理机制2010在计算设备2000(作为视频服务器)处实施以(例如,经由视频编码器2002)对视频位流数据进行编码以便传输到客户端2040,在所述客户端中所述数据由视频处理机制2010处理(例如,经由视频解码器2041被解码)以用于在显示设备2042处渲染。

因此,服务器2000和客户端2040可以进一步包括(多个)网络接口以提供对网络的访问,如,lan、广域网(wan)、城域网(man)、个域网(pan)、蓝牙、云网络、移动网络(例如,第3代(3g)、第4代(4g)等)、内联网、互联网等。(多个)网络接口可以包括例如具有天线的无线网络接口,所述无线网络接口可以表示一个或多个天线。(多个)网络接口还可以包括例如通过网络电缆与远程设备通信的有线网络接口,所述网络电缆可以是例如以太网电缆、同轴电缆、光缆、串行电缆或并行电缆。

(多个)网络接口可以例如通过遵循ieee802.11b和/或ieee802.11g标准来提供对lan的访问,并且/或者无线网络接口可以例如通过遵循蓝牙标准来提供对个域网的访问。还可以支持其他无线网络接口和/或协议,包括所述标准的先前版本以及后续版本。除了或代替经由无线lan标准的通信,(多个)网络接口可以使用例如以下协议来提供无线通信:时分多址(tdma)协议、全球移动通信系统(gsm)协议、码分多址(cdma)协议和/或任何其他类型的无线通信协议。

(多个)网络接口可以包括一个或多个通信接口,如调制解调器、网络接口卡或其他众所周知的接口设备,如用于为了提供通信链路以支持例如lan或wan而耦合至以太网、令牌环或其他类型的物理有线或无线附连的那些通信接口。以此方式,计算机系统还可以经由常规的网络基础设施(例如,包括内联网或互联网)耦合至一定数量的外围设备、客户端、控制面、控制台或服务器。

应当理解,对于某些实施方式,比在上文中所描述的示例更少或更多地配备的系统可以是优选的。因此,取决于众多因素(诸如,价格约束、性能要求、技术改进或其他情况)计算设备2000的配置可以因实施方式不同而改变。电子设备或计算机系统2000的示例可以包括但不限于:移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持设备、单向寻呼机、双向寻呼机、消息收发设备、计算机、个人计算机(pc)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、互联网服务器、工作站、小型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子设备、可编程消费电子设备、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、桥接器、交换机、机器或上述各项的组合。

实施例可以实施为以下各项中的任何一项或组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储且由微处理器执行的软件、固件、专用集成电路(asic)和/或现场可编程门阵列(fpga)。以示例的方式,术语“逻辑”可以包括软件或硬件和/或软件和硬件的组合。

实施例可以被提供为例如计算机程序产品,所述计算机程序产品可以包括其上存储有机器可执行指令的一个或多个机器可读介质,所述机器可执行指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可以导致所述一个或多个机器执行根据在本文中所描述的实施例的操作。机器可读介质可以包括但不限于:软盘、光盘、cd-rom(cd盘-只读存储器)以及磁光盘、rom、ram、eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或者适合于存储机器可执行指令的其他类型的介质/机器可读介质。

此外,实施例可以作为计算机程序产品被下载,其中,可以经由通信链路(例如,调制解调器和/或网络连接)借助于实施在载波或其他传播介质中和/或由载波或其他传播介质调制的一个或多个数据信号将程序从远程计算机(例如,服务器)传递至进行请求的计算机(例如,客户端)。

如以上所讨论的,在编码期间,将视频比特流数据的补片与补片信息一起打包以传输到客户端。在客户端处,使用补片信息对纹理和深度数据进行解码以重构视频。具体地,经解码补片信息包括占用图数据和辅助补片信息,其提供用于在3d渲染之前在解包视频补片数据期间重构视频纹理和深度数据的补片的信息。然而,一旦解包过程已经完成,就当前丢弃占用图数据和辅助补片信息。

根据一个实施例,执行经解码补片信息以实现主观伪像减少。在这样的实施例中,处理占用图数据和辅助补片信息以生成提供补片id的视频帧,所述视频帧用于生成具有补片id而不是纹理值的点云(例如,补片点云)。在渲染期间,生成补片点云并将其用于执行对根据纹理点云渲染的视口的主观伪像减少。

图21展示了在客户端2040处实施以执行补片信息的视频处理机制2010的一个实施例。如图21所示,视频处理机机制2010包括具有纹理解码器2102、深度解码器2104、占用图解码器2106和辅助补片信息解码器2108的解码器2041。此外,如以上所讨论的,包括解包逻辑2110逻辑,用于解包视频数据。2d到3d转换逻辑2112接收经解包的纹理和深度数据以将数据变换为将在视口渲染逻辑2114处渲染的3d视频点云。

根据一个实施例,视频处理机制2010还包括对补片信息进行处理以用于主观伪像减少的补片处理逻辑2120。在这样的实施例中,补片处理逻辑2120包括接收并解包经解码的占用图数据和辅助补片信息以生成视频帧的解包补片图逻辑2122,每个视频帧具有相关联的补片标识符(id)(例如,8位值)。在进一步实施例中,每个补片还包括相关联的元数据以指示始发角度(例如,补片所来自的角度)和相对位置。

补片处理逻辑2120还包括2d到3d转换逻辑2124,用于将补片信息(例如,补片视频帧)变换为比如具有补片id(而不是纹理值)的要在视口渲染逻辑2114处进行渲染的点云等3d表示。在渲染期间,主观伪像减少逻辑2130检查补片信息以判定经渲染数据中是否存在一个或多个伪像,并且校正任何所检测到的伪像。例如,主观伪像减少逻辑2130可以确定同一补片内具有不同纹理亮度值的区域指示不同的真实对象图案,而相邻补片之间的这种不连续性指示可能存在由于补片被分开编码而造成的伪像(或不准确性)。在这类实例中,主观伪像减少逻辑2130可以对跨补片边界的经渲染纹理视口应用低通滤波器,以减少跨补片边界的不连续性。

根据一个实施例,视频处理机制包括运动估计逻辑2005和运动补偿逻辑2006,用于分别执行运动估计逻辑和运动补偿逻辑。在编码期间,执行运动估计以计算描述从一个2d图像到另一个的变换的运动向量;通常来自视频序列中的相邻帧。运动向量可以与整个图像(全局运动估计)或比如矩形块、任意形状的补片、或甚至每个像素等特定部分相关。运动向量可以由可以近似比如在所有三个维度中的旋转和平移、以及变焦等真实视频相机运动的平移模型或许多其他模型来表示。随后,使用运动估计信息来执行运动补偿以实现压缩。因此,一旦描述了运动,就必须描述仅在补偿所述运动之后发生的变化。

在运动估计和补偿期间,可以将同一区域映射到根据不同取向而对准的多个(例如,两个)补片(例如,一个与x平面对准,而另一个与y平面对准),其中,可以从一个到另一个预测补片。根据一个实施例,视频处理机制2010还包括运动预测逻辑2007,用于在运动预测期间对补片取向进行对准。在这样的实施例中,运动预测逻辑2007接收包括在视频比特流中的补片元数据,并基于元数据中包括的补片取向/对准信息来确定补片的对准。

图22是流程图,展示了用于执行用于运动预测的补片对准的方法2200的一个实施例。方法2200可以由可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)、或其组合的处理逻辑来执行。为了简洁和清晰的呈现,方法2200的过程以线性顺序来展示;然而,可以设想,可以并行地、异步地、或以不同顺序执行任何数量的过程。进一步地,为了简明、清晰并易于理解,此后可以不重复或讨论关于图1至图21所描述的组件和过程中的许多组件和过程。

方法2200开始于处理框2210,在此框处,接收补片。在决策框2220处,判定当前所接收的(或当前)补片的取向是否与参考补片的取向对准。如以上所讨论的,根据与补片相关联的补片元数据来确定补片取向。如果否,则将参考补片与当前补片的取向进行对准,处理框2230。在处理框2240处,根据经对准的参考补片执行对当前补片的运动预测。如果在决策框2220处确定补片是对准的,则控制直接前进到执行预测的处理框2240。可以在时间表征(例如,在不同时间拍摄的图像)或空间(例如,同一图像的分量)表征期间应用上述过程。

在运动向量编码/解码期间,当生成纹理和几何图像时,可以将对象的同一区域映射到两个不同帧中的不同地方(例如,补片)。例如,参考图23a,补片t处的对象2300指回到补片t-1处的位置。运动向量越大,编码所需的数据就越多。

根据一个实施例,运动估计逻辑2005使用参考补片和补片元数据偏移量来执行运动向量编码。在这个实施例中,运动估计逻辑2005将包括在补片信息中的位置/取向元数据实施为用于执行运动向量编码的偏移量。因此,可以使用元数据来提供当前补片的位置位移,所述元数据指示每个补片的补片位置/取向坐标信息(例如,x-y-z)。例如,可以通过基于每个补片的元数据中指示的位置/取向来生成与参考补片的偏移量从而对运动向量进行编码。因此,减少了运动向量编码所需的比特数。图23b展示了降低对补片t和t-1中对象2300进行运动向量编码的复杂度的一个实施例。

根据一个实施例,运动估计逻辑2005在对运动估计数据或运动补偿数据进行编码期间执行补片边界外推,而不是必须执行单独的外推操作。图24是流程图,展示了用于执行补片边界外推的方法2400的一个实施例。方法2400可以由可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)、或其组合的处理逻辑来执行。为了简洁和清晰的呈现,方法2400的过程以线性顺序来展示;然而,可以设想,可以并行地、异步地、或以不同顺序执行任何数量的过程。进一步地,为了简明、清晰并易于理解,此后可以不重复或讨论关于图1至图23所描述的组件和过程中的许多组件和过程。

在处理框2410处,基于所接收的对象信息来确定最佳运动向量。在这样的实施例中,对对象信息执行运动估计以获得最小化像素误差的运动向量。例如,当处理像素数据块(例如,64×64)时,除了真实对象数据之外,像素中的许多像素还包括背景数据。因此,仅对对象信息执行运动估计。

在处理框2420处,从参考像素中减去当前像素以获得实际补片像素的残差。在处理框2430处,针对当前块的剩余背景(例如,不在补片像素中的像素)将背景残差设置为零,以最小化被编码的信息。可以将背景残差设置为零,因为这实际上与根据参考来复制背景相同。在处理框2440处,对当前块进行编码。

在又另一实施例中,视频处理机制2010包括被实施用于去除点云破裂的裂缝去除逻辑2009。点云虽然在传达体积信息方面非常有用,但却需要大量的存储器空间。因此,通常需要压缩点云。当点云被压缩时,量化误差和其他压缩误差可能导致原始点稍微移位,这可能导致在渲染期间经重构表面的大量缺陷。

图25展示了重构后的对象缺陷的一个实施例。如图25所示,在压缩期间,与两个相邻三角形相关联的点的位置稍微移位。这导致在解压缩和回放期间原始地连续表面出现裂缝。参考图25所讨论的缺陷可能发生在现有应用中,在现有应用中,当真实世界场景被体积地捕获到点云中时,离散采样通常导致低于奈奎斯特极限的精细细节的几何不连续性。例如,朝向端部变窄并且然后再次扩张到橡皮筋以外的发辫可以被捕获为在窄点处具有间隙的一组点。

根据一个实施例,裂缝去除逻辑2009由于经解压缩的点云数据集通过应用网格来补偿这种裂缝。在这样的实施例中,网格对应于原始数据集捕获的原始采样频率(例如,体素网格)。图26是流程图,展示了用于去除点云破裂的方法2600的一个实施例。方法2600可以由可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(比如,在处理设备上运行的指令)、或其组合的处理逻辑来执行。为了简洁和清晰的呈现,方法2600的过程以线性顺序来展示;然而,可以设想,可以并行地、异步地、或以不同顺序执行任何数量的过程。进一步地,为了简明、清晰并易于理解,此后可以不重复或讨论关于图1至图25所描述的组件和过程中的许多组件和过程。

在处理框2610处,对点云进行解压缩。在处理框2620处,生成网格。如以上所讨论的,网格对应于原始数据集捕获的原始采样频率。在处理框2630处,将点云数据集应用于网格。图27a展示了应用于经解压缩点云点的网格2700的一个实施例。尽管网格是3d的,但是图27a将网格2700示出为用于说明性目的而提供的2d版本。在处理框2640处,识别同一块内的点。根据一个实施例,在同一方格中的两个点被认为是同一个点。在处理框2650处,将同一块内的点调整到共同定位的位置,这导致裂缝被密封并且原始表面几何形状被准确地重构。图27b展示了调整之后的经解压缩点云点的一个实施例。

一些实施例涉及示例1,此示例包括一种用于促进对视频比特流数据进行处理的装置,所述装置包括:一个或多个处理器,所述一个或多个处理器用于对占用图数据和辅助补片信息进行解码并基于从所述占用图数据和辅助补片信息中解码出的补片数据生成多个补片视频帧;以及存储器,所述存储器通信地耦合到所述一个或多个处理器。

示例2包括如示例1所述的主题,其中,所述多个补片视频帧中的每一个包括补片标识符。

示例3包括如示例1和2所述的主题,其中,所述一个或多个处理器进一步用于将所述补片视频帧变换为三维(3d)表示。

示例4包括如示例1至3所述的主题,其中,所述一个或多个处理器进一步用于根据所述3d表示来渲染视口。

示例5包括如示例1至4所述的主题,其中,所述一个或多个处理器进一步用于执行伪像减少以在渲染期间检查所述补片视频帧,从而检测一个或多个伪像的存在。

示例6包括如示例1至5所述的主题,其中,检查所述补片视频帧包括跨所述补片视频帧中的补片边界来应用滤波器。

示例7包括如示例1至6所述的主题,其中,所述3d表示包括3d补片点云。

示例8包括如示例1至7所述的主题,其中,所述一个或多个处理器进一步用于在运动预测期间对补片取向进行对准。

示例9包括如示例1至8所述的主题,其中,所述一个或多个处理器进一步用于接收当前补片并判定所述当前补片的取向是否与参考补片的取向对准。

示例10包括如示例1至9所述的主题,其中,所述一个或多个处理器进一步用于基于所述对准根据所述参考补片执行对所述当前补片的运动预测。

示例11包括如示例1至10所述的主题,其中,所述一个或多个处理器进一步用于使用参考补片和补片元数据来执行运动向量编码。

示例12包括如示例1至11所述的主题,其中,所述一个或多个处理器进一步用于经由包括在所述补片元数据中的坐标信息生成距所述参考补片的偏移量。

示例13包括如示例1至12所述的主题,其中,所述一个或多个处理器进一步用于在运动估计编码期间执行补片边界外推。

示例14包括如示例1至13所述的主题,其中,所述一个或多个处理器进一步用于:确定使像素误差最小化的最佳运动向量;从参考像素中减去当前像素以获得实际补片像素的残差;针对当前块的剩余背景像素,将背景残差设置为零;以及对所述当前块进行编码。

示例15包括如示例1至14所述的主题,其中,所述一个或多个处理器进一步用于去除经重构的经渲染表面中的点云破裂。

示例16包括如示例1至15所述的主题,其中,所述一个或多个处理器进一步用于对经解压缩的点云数据集应用网格,其中,所述网格对应于原始数据集捕获的原始采样频率。

示例17包括如示例1至16所述的主题,其中,所述一个或多个处理器进一步用于将所述网格的同一块中的点调整到共同定位的位置。

一些实施例涉及示例18,此示例包括一种用于促进对视频比特流数据进行处理的计算机生成的方法,所述方法包括:对占用图数据和辅助补片信息进行解码,并基于从所述占用图数据和辅助补片信息中解码出的补片数据生成多个补片视频帧。

示例19包括如示例18所述的主题,其中,所述多个补片视频帧中的每一个包括补片标识符。

示例20包括如示例18和19所述的主题,进一步包括将所述补片视频帧变换为三维(3d)表示并渲染所述3d表示。

示例21包括如示例18至20所述的主题,进一步包括在渲染期间检查所述补片视频帧以便检测一个或多个伪像的存在。

示例22包括如示例18至21所述的主题,其中,检查所述补片视频帧包括跨所述补片视频帧中的补片边界来应用滤波器。

示例23包括如示例18至22所述的主题,进一步包括在运动预测期间对补片取向进行对准。

示例24包括如示例18至23所述的主题,其中,对补片取向进行对准包括接收当前补片并判定所述当前补片的取向是否与参考补片的取向对准。

示例25包括如示例18至24所述的主题,进一步包括基于所述对准根据所述参考补片执行对所述当前补片的运动预测。

示例26包括如示例18至25所述的主题,进一步包括使用参考补片和补片元数据来执行运动向量编码。

示例27包括如示例18至26所述的主题,执行所述运动向量编码包括经由包括在所述补片元数据中的坐标信息生成距所述参考补片的偏移量。

示例28包括如示例18至27所述的主题,进一步地,去除经重构的经渲染表面中的点云破裂,包括对经解压缩的点云数据集应用网格,其中,所述网格对应于原始数据集捕获的原始采样频率;以及将所述网格的同一块中的点调整到共同定位的位置。

一些实施例涉及示例29,此示例包括至少一种计算机可读介质,所述介质上存储有指令,所述指令当由一个或多个处理器执行时使所述处理器对占用图数据和辅助补片信息进行解码并基于从所述占用图数据和辅助补片信息中解码出的补片数据生成多个补片视频帧。

示例30包括如示例18至29所述的主题,其上存储有指令,所述指令当由一个或多个处理器执行时进一步使所述处理器将所述补片视频帧变换为三维(3d)表示并且渲染所述3d表示。

本发明已在上文参考特定实施例进行描述。然而,本领域技术人员应当理解,可以在不脱离于如随附权利要求中阐述的本发明的更宽的精神和范围的情况下对本发明做出各种修改和改变。因此,前述说明书和附图要以说明性而非限制性的含义来看待。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1