CN110784702A - 六自由度视频的简化的渲染 - Google Patents

六自由度视频的简化的渲染 Download PDF

Info

Publication number
CN110784702A
CN110784702A CN201910575114.1A CN201910575114A CN110784702A CN 110784702 A CN110784702 A CN 110784702A CN 201910575114 A CN201910575114 A CN 201910575114A CN 110784702 A CN110784702 A CN 110784702A
Authority
CN
China
Prior art keywords
data
video
graphics
logic
metadata
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.)
Pending
Application number
CN201910575114.1A
Other languages
English (en)
Inventor
J.博伊斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN110784702A publication Critical patent/CN110784702A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/172Processing image signals image signals comprising non-image signal components, e.g. headers or format information
    • H04N13/178Metadata, e.g. disparity information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/167Synchronising or controlling image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/122Improving the 3D impression of stereoscopic images by modifying image signal contents, e.g. by filtering or adding monoscopic depth cues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/275Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/366Image reproducers using viewer tracking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/398Synchronisation thereof; Control thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Image Generation (AREA)

Abstract

提供了六自由度视频的简化的渲染。本文中描述的实施例提供了用来降低渲染沉浸式3D视频内容的复杂性的技术。一个实施例提供了一种装置,所述装置包括一个或多个处理器,用来:接收表示一帧三维视频的平面投影的二维编码的数据集,将所述二维编码解码成纹理数据、几何数据和元数据,基于所述元数据而确定所述三维视频中的样本位置的可见性状态和占据状态,并且当所述样本位置可见且被占据时渲染用于所述样本位置的视频数据。

Description

六自由度视频的简化的渲染
背景技术
六自由度(6DoF)视频是新兴的沉浸式视频用例,其为观看者提供沉浸式媒体体验,其中观看者控制场景的视点。更简单的三自由度(3DoF)视频(例如360度或全景视频)允许观看者从固定位置围绕X、Y和Z轴改变定向(被描述为偏转、俯仰和滚转)。6DoF视频使得观看者能够通过沿X、Y和Z轴的平移运动来改变位置。
可以使用点云来表示6DoF视频。然而,点云数据的渲染在计算上是昂贵的,使得难以以高帧速率渲染包含大量点的点云视频。此外,点云数据速率大,需要大容量用于存储或传输。
附图说明
为了可以详细地理解本发明实施例的以上叙述的特征的方式,可以参考实施例(在附图中图示了所述实施例中的一些)取得以上简要总结的实施例的较具体描述。然而,应注意:附图仅图示了典型实施例,并且因此不应被认为限制其范围。
图1是根据实施例的处理系统的框图;
图2是根据实施例的处理器的框图;
图3是根据实施例的图形处理器的框图;
图4是依照一些实施例的图形处理器的图形处理引擎的框图;
图5是根据本文中描述的一些实施例的图形处理器核的硬件逻辑的框图;
图6A-6B图示了根据本文中描述的实施例的线程执行逻辑,其包括在图形处理器核中采用的处理元件的阵列;
图7是图示了根据一些实施例的图形处理器指令格式的框图;
图8是根据另一个实施例的图形处理器的框图;
图9A-9B图示了根据一些实施例的图形处理器命令格式和命令序列;
图10图示了根据一些实施例的用于数据处理系统的示例性图形软件架构;
图11A是图示了根据实施例的IP核开发系统的框图;
图11B图示了根据本文中描述的一些实施例的集成电路封装组装件(assembly)的横截面侧视图;
图12是图示了根据实施例的示例性片上系统集成电路的框图;
图13A-13B是图示了根据本文中描述的实施例的用于在SoC内使用的示例性图形处理器的框图;
图14A-14B图示了根据本文中描述的实施例的附加示例性图形处理器逻辑;
图15A图示了沉浸式视频的多个形式;
图15B图示了用于沉浸式视频的图像投影和纹理平面;
图16图示了用于沉浸式视频的生成和消费的客户端-服务器系统;
图17A-17B图示了用于编码和解码3DoF Plus内容的系统;
图18A-18B图示了用于编码和解码6DoF有纹理的几何数据的系统;
图19A-19B图示了用于编码和解码6DoF点云数据的系统;
图20A-20C图示了根据本文中描述的实施例的点云编码渲染平面的使用;
图21图示了根据实施例的投影平面可见性确定;
图22图示了根据本文中描述的实施例的渲染3D视频的方法;
图23A-23B图示了根据本文中描述的实施例的用于沉浸式视频递送和消费的系统和方法;以及
图24图示了根据本文中描述的实施例的数据处理系统。
具体实施方式
本文中描述的实施例提供了用来为使用运动图像专家组(MPEG)点云编码(PCC)测试模型所压缩的点云数据降低6DoF渲染的复杂性以使得能实现改进的性能的技术。该改进的性能可以用于为沉浸式视频支持更高分辨率和/或帧速率。
出于解释的目的,阐述了许多特定细节以提供对以下描述的各种实施例的透彻理解。然而,对于本领域技术人员来说将显而易见的是:可以在没有这些特定细节中的一些的情况下实践所述实施例。在其它实例中,以框图形式示出了公知的结构和设备,以避免模糊基本原理和提供对实施例的更透彻理解。虽然参照图形处理器描述了下面的实施例中的一些,但是本文中描述的技术和教导可以应用于各种类型的电路或半导体设备,包括通用处理设备或图形处理设备。本文中对“一个实施例”或“一实施例”的引用指示:与实施例相结合或相关联地描述的特定特征、结构或特性可以被包括在这样的实施例中的至少一个中。然而,短语“在一个实施例中”在说明书中各种地方中的出现不一定都指代同一实施例。
在下面的描述和权利要求中,可以使用术语“耦合”和“连接”连同它们的派生词。应当理解:这些术语不意图作为彼此的同义词。“耦合”用于指示:可能或可能未彼此直接物理或电接触的两个或更多个元件彼此协作或交互。“连接”用于指示在与彼此耦合的两个或更多个元件之间的通信的建立。
在下面的描述中,图1-14提供了结合或涉及各种实施例的示例性数据处理系统和图形处理器逻辑的概观。图15-24提供了各种实施例的特定细节。参照图形处理器描述了下面的实施例的一些方面,而关于诸如中央处理单元(CPU)之类的通用处理器描述了其它方面。类似的技术和教导可以应用于其它类型的电路或半导体设备,包括但不限于许多集成核处理器、GPU集群、或者现场可编程门阵列(FPGA)的一个或多个实例。一般地,所述教导适用于操纵或处理图像(例如,样本、像素)、顶点数据或几何数据的任何处理器或机器。
系统概述
图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 Express)、存储器总线或其它类型的接口总线。在一个实施例中,(一个或多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备与系统100的其它组件之间的通信,而平台控制器中枢(PCH)130提供经由本地I/O总线到I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备或者具有合适性能以充当进程存储器的一些其它存储器设备。在一个实施例中,存储器设备120可以作为用于系统100的系统存储器进行操作,以存储用于在所述一个或多个处理器102执行应用程序或进程时使用的数据122和指令121。存储器控制器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 Express)之类的外围总线而连接。触摸传感器125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器126可以是Wi-Fi收发器,蓝牙收发器,或者诸如3G、4G或长期演进(LTE)收发器之类的移动网络收发器。固件接口128使得能实现与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器134可以使得能实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多通道高清晰度音频控制器。在一个实施例中,系统100包括可选的传统I/O控制器140,用于将传统(例如,个人系统2(PS/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(USB)控制器142,其连接输入设备,诸如键盘和鼠标143组合、相机144或其它USB输入设备。
将领会:所示的系统100是示例性的而非限制性的,因为也可以使用不同地配置的其它类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以被集成到分立的外部图形处理器中,诸如外部图形处理器112。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在所述一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,所述外部存储器控制器116和平台控制器中枢130可以被配置为在与(一个或多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图2是具有一个或多个处理器核202A-202N、集成存储器控制器214和集成图形处理器208的处理器200的实施例的框图。图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),所述功率控制单元(PCU)包括用来调节处理器核202A-202N和图形处理器208的功率状态的逻辑和组件。
在一些实施例中,处理器200另外包括图形处理器208,用来执行图形处理操作。在一些实施例中,图形处理器208与所述组共享高速缓存单元206和包括所述一个或多个集成存储器控制器214的系统代理核210耦合。在一些实施例中,系统代理核210还包括显示控制器211,用来将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211还可以是经由至少一个互连与图形处理器耦合的分离模块,或者可以被集成在图形处理器208内。
在一些实施例中,基于环形的互连单元212用于耦合处理器200的内部组件。然而,可以使用替代的互连单元,诸如点对点互连、交换互连或其它技术,包括本领域中公知的技术。在一些实施例中,图形处理器208经由I/O链路213与环形互连212耦合。
示例性I/O链路213表示多种I/O互连中的至少一个,所述多种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还包括显示控制器302,用来将显示输出数据驱动到显示设备320。显示控制器302包括针对用于多层视频或用户界面元素的显示和构成的一个或多个叠加平面的硬件。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备,诸如虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例中,图形处理器300包括视频编解码器引擎306,用来将媒体编码成一个或多个媒体编码格式,从一个或多个媒体编码格式解码媒体,或者在一个或多个编码格式之间对媒体转码,所述一个或多个媒体编码格式包括但不限于:诸如MPEG-2之类的运动图像专家组(MPEG)格式,诸如H.264/MPEG-4 AVC之类的高级视频编码(AVC)格式,和电影电视工程师协会(SMPTE)421M/VC-1,以及诸如JPEG之类的联合图像专家组(JPEG)格式,和运动JPEG(MJPEG)格式。
在一些实施例中,图形处理器300包括块图像传送(BLIT)引擎304,用来执行二维(2D)光栅化操作,包括例如位边界块传送。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作(包括三维(3D)图形操作和媒体操作)的计算引擎。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,所述3D操作诸如是使用作用于3D基元(primitive)形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,所述元件执行元件内的各种任务和/或产生(spawn)到3D/媒体子系统315的执行线程。虽然3D流水线312可以用于执行媒体操作,但是GPE 310的实施例还包括特别用于执行媒体操作(诸如视频后处理和图像增强)的媒体流水线316。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元,用来代替或代表视频编解码器引擎306执行一个或多个专门的媒体操作,诸如视频解码加速、视频去隔行和视频编码加速。在一些实施例中,媒体流水线316另外包括线程产生单元,用来产生用于在3D/媒体子系统315上执行的线程。产生的线程在3D/媒体子系统315中包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,所述流水线向3D/媒体子系统315发送线程执行请求,所述3D/媒体子系统315包括用于仲裁各种请求并将它们分派到可用线程执行资源的线程分派逻辑。执行资源包括图形执行单元的阵列,用来处理3D和媒体线程。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,其包括寄存器和可寻址存储器,用来在线程之间共享数据和存储输出数据。
图形处理引擎
图4是依照一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图3中所示的GPE 310的一个版本。图4的具有与本文中任何其它图的元件相同的参考号码(或名称)的元件可以以与本文中其它地方描述的方式类似的任何方式操作或起作用,但不限于这样。例如,图示了图3的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可能没有被明确地包括在GPE 410内。例如,在至少一个实施例中,分离的媒体和/或图像处理器被耦合到GPE 410。
在一些实施例中,GPE 410与命令流式传输器(streamer)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来处理一个或多个着色器(shader)程序,诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其它着色器程序。图形核阵列414提供执行资源的统一块以供在处理这些着色器程序时使用。图形核阵列414的(一个或多个)图形核415A-415B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括执行逻辑,用来执行媒体功能,诸如视频和/或图像处理。在一个实施例中,执行单元另外包括通用逻辑,所述通用逻辑可编程以除了图形处理操作之外还执行并行通用计算操作。通用逻辑可以并行地或者结合图1的(一个或多个)处理器核107或如图2中的核202A-202N内的通用逻辑执行处理操作。
由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到存储器在统一返回缓冲器(URB)418中。URB 418可以为多个线程存储数据。在一些实施例中,URB 418可以用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可以另外用于在图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可扩展的,使得该阵列包括可变数目的图形核,每个图形核基于GPE 410的目标功率和性能水平而具有可变数目的执行单元。在一个实施例中,执行资源是动态可扩展的,使得可以根据需要来启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,所述共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专门的补充功能性的硬件逻辑单元。在各种实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。另外,一些实施例在共享功能逻辑420内实现一个或多个高速缓存425。
在对给定的专门功能的需求不足以包括在图形核阵列414内的情况下实现共享功能。代之以,该专门功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间共享并且被包括在图形核阵列414内的功能的精确集合跨实施例变化。在一些实施例中,共享功能逻辑420内的由图形核阵列414广泛使用的特定共享功能可以被包括在图形核阵列414内的共享功能逻辑416内。在各种实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,可以在图形核阵列414的共享功能逻辑416内复制共享功能逻辑420内的所有逻辑元件。在一个实施例中,在支持图形核阵列414内的共享功能逻辑416的情况下不包括共享功能逻辑420。
图5是根据本文中描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5的具有与本文中任何其它图的元件相同的参考号码(或名称)的元件可以以与本文中其它地方描述的方式类似的任何方式操作或起作用,但不限于这样。在一些实施例中,所图示的图形处理器核500被包括在图4的图形核阵列414内。图形处理器核500(有时被称为核切片)可以是模块化的图形处理器内的一个或多个图形核。图形处理器核500是一个图形核切片的范例,并且如本文中描述的图形处理器基于目标功率和性能范围而可能包括多个图形核切片。每个图形核500可以包括与多个子核501A-501F(也被称为子切片)耦合的固定功能块530,所述多个子核501A-501F包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块530包括几何/固定功能流水线536,例如在较低性能和/或较低功率图形处理器实现方式中,所述几何/固定功能流水线536可以由图形处理器500中的所有子核共享。在各种实施例中,几何/固定功能流水线536包括3D固定功能流水线(例如,如图3和图4中的3D流水线312)、视频前端单元、线程产生器和线程分派器、以及管理诸如图4的统一返回缓冲器418之类的统一返回缓冲器的统一返回缓冲器管理器。
在一个实施例中,固定功能块530还包括图形SoC接口537、图形微控制器538和媒体流水线539。图形SoC接口537在图形核500与片上系统集成电路内的其它处理器核之间提供接口。图形微控制器538是可编程子处理器,所述可编程子处理器可配置以管理图形处理器500的各种功能,包括线程分派、调度和抢占。媒体流水线539(例如,图3和图4的媒体流水线316)包括用来促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体流水线539经由对子核501A-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核上执行的主机软件可以提交涉及对适当的图形引擎的调度操作的多个图形处理器门铃中的一个的工作负荷。调度操作包括确定接下来运行哪个工作负荷,向命令流式传输器提交工作负荷,抢占引擎上运行的现有工作负荷,监视工作负荷的进展,以及在工作负荷完成时通知主机软件。在一个实施例中,图形微控制器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可以被包括来代替固定功能块530内的几何/固定功能流水线536,并且可以包括相同或类似的逻辑单元。
在一个实施例中,图形核500包括附加固定功能逻辑516,所述附加固定功能逻辑516可以包括用于由图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括用于在仅位置着色时使用的附加几何流水线。在仅位置着色时,存在两个几何流水线——几何/固定功能流水线516、536内的完整几何流水线,以及剔除(cull)流水线,所述剔除流水线是可以被包括在附加固定功能逻辑516内的附加几何流水线。在一个实施例中,剔除流水线是完整几何流水线的削减版本。完整流水线和剔除流水线可以执行相同应用程序的不同实例,每个实例具有分离的上下文。仅位置着色可以隐藏已丢弃三角形的长剔除运行,使得能够在一些实例中较早地完成着色。例如,在一个实施例中,附加固定功能逻辑516内的剔除流水线逻辑可以与主应用程序并行地执行位置着色器,并且一般比完整流水线更快地生成关键结果,因为剔除流水线仅取出和着色顶点的位置属性,而不执行像素到帧缓冲器的光栅化和渲染。剔除流水线可以使用生成的关键结果来为所有三角形计算可见性信息,而不考虑那些三角形是否被剔除。完整流水线(其在该实例中可以被称为回放流水线)可以消费可见性信息以跳过剔除的三角形来仅着色最终被传递到光栅化阶段的可见三角形。
在一个实施例中,附加固定功能逻辑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,其包括在图形处理器核中采用的处理元件的阵列。图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图形着色器指令的本机支持的指令集,使得来自图形库(例如,Direct 3D和OpenGL)的着色器程序被用最小的转化而执行。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每个能够进行多发布(multi-issue)单指令多数据(SIMD)执行,并且多线程操作在面对较高等待时间的存储器访问时使得能实现高效的执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器文件和相关联的独立线程状态。对于能够进行整数、单精度和双精度浮点运算,SIMD分支能力,逻辑运算,超越运算和其它杂项操作的流水线来说,执行是每时钟多发布的。在等待来自存储器或共享功能中的一个的数据时,执行单元608A-608N内的依赖逻辑使等待线程休眠直到所请求的数据已被返回。在等待线程正在休眠时,硬件资源可能致力于处理其它线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以为像素着色器、片段着色器或者包括不同的顶点着色器的另一类型着色器程序执行操作。
执行单元608A-608N中的每个执行单元对数据元素的阵列进行操作。数据元素的数目是“执行尺寸”或者用于指令的通道数。执行通道是用于指令内的数据元素访问、屏蔽和流控制的执行逻辑单元。通道数可以独立于用于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数目。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以被作为打包数据类型而存储在寄存器中,并且执行单元将基于元素的数据尺寸来处理各种元素。例如,当对256位宽向量操作时,该向量的256位被存储在寄存器中,并且执行单元对该向量操作,将该向量作为四个分离的64位打包数据元素(四字(QW)尺寸数据元素)、八个分离的32位打包数据元素(双字(DW)尺寸数据元素)、十六个分离的16位打包数据元素(字(W)尺寸数据元素)或三十二个分离的8位数据元素(字节(B)尺寸数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
在一个实施例中,一个或多个执行单元可以组合成被组合成融合的执行单元609A-609N,所述融合的执行单元609A-609N具有为融合的EU所共用线程控制逻辑(607A-607N)。多个EU可以被融合成EU组。融合的EU组中的每个EU可以被配置成执行分离的SIMD硬件线程。融合的EU组中EU的数目可以根据实施例而变化。另外,可以每个EU执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合的图形执行单元609A-609N包括至少两个执行单元。例如,融合的执行单元609A包括第一EU 608A、第二EU 608B以及为第一EU608A和第二EU 608B所共用线程控制逻辑607A。线程控制逻辑607A控制在融合的图形执行单元609A上执行的线程,从而允许融合的执行单元609A-609N内的每个EU使用公共的指令指针寄存器来执行。
线程执行逻辑600中包括一个或多个内部指令高速缓存(例如,606)以缓存用于执行单元的线程指令。在一些实施例中,包括一个或多个数据高速缓存(例如,612)以在线程执行期间缓存线程数据。在一些实施例中,包括采样器610以提供用于3D操作的纹理采样和用于媒体操作的媒体采样。在一些实施例中,采样器610包括专门的纹理或媒体采样功能性,以在将采样数据提供给执行单元之前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程产生和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已被处理并光栅化成像素数据,就调用着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)以进一步计算输出信息并且使结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一些实施例中,像素着色器或片段着色器计算要跨光栅化对象所插值的各种顶点属性的值。在一些实施例中,着色器处理器602内的像素处理器逻辑然后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行该着色器程序,着色器处理器602经由线程分派器604将线程分派给执行单元(例如,608A)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问在存储器中存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算针对每个几何片段的像素颜色数据,或丢弃一个或多个像素以免进一步处理。
在一些实施例中,数据端口614为线程执行逻辑600提供存储器访问机制,以将处理的数据输出到存储器以用于在图形处理器输出流水线上进一步处理。在一些实施例中,数据端口614包括或耦合到一个或多个高速缓冲存储器(例如,数据高速缓存612),用来缓存数据以用于经由数据端口的存储器访问。
如图6B中所图示的,图形执行单元608可以包括指令取出单元637、通用寄存器文件阵列(GRF)624、架构寄存器文件阵列(ARF)626、线程仲裁器622、发送单元630、分支单元632、一组SIMD浮点单元(FPU)634,并且在一个实施例中包括一组专用整数SIMD ALU 635。GRF 624和ARF 626包括与在图形执行单元608中可能处于活动的每个同时硬件线程相关联的一组通用寄存器文件和架构寄存器文件。在一个实施例中,每线程架构状态被维持在ARF626中,而线程执行期间使用的数据被存储在GRF 624中。每个线程的执行状态,包括用于每个线程的指令指针,可以被保持在ARF 626中的线程特定寄存器中。
在一个实施例中,图形执行单元608具有作为同时多线程(SMT)和细粒度交错多线程(IMT)的组合的架构。该架构具有模块化的配置,所述模块化的配置可以在设计时基于同时线程的目标数目和每执行单元的寄存器数目而进行微调,其中跨用于执行多个同时线程的逻辑划分执行单元资源。
在一个实施例中,图形执行单元608可以联合发布(co-issue)多个指令,所述多个指令每个都可以是不同的指令。图形执行单元线程608的线程仲裁器622可以将所述指令分派给发送单元630、分支单元642或(一个或多个)SIMD FPU 634中的一个以用于执行。每个执行线程可以访问GRF 624内的128个通用寄存器,其中每个寄存器可以存储32字节,可作为32位数据元素的SIMD 8元素向量来访问。在一个实施例中,每个执行单元线程能够访问GRF 624内的4千字节,但是实施例未被如此限制,并且在其它实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程可以同时执行,但是每执行单元的线程数目也可以根据实施例而变化。在其中七个线程可以访问4千字节的实施例中,GRF 624可以存储总共28千字节。灵活的寻址模式可以允许寄存器被一起寻址以有效地构建更宽的寄存器或表示跨过的矩形块数据结构。
在一个实施例中,经由由消息传递发送单元630执行的“发送”指令来分派存储器操作、采样器操作和其它较长等待时间系统通信。在一个实施例中,将分支指令分派给专用分支单元632以促进SIMD发散和最终收敛。
在一个实施例中,图形执行单元608包括一个或多个SIMD浮点单元(FPU)634,用来执行浮点运算。在一个实施例中,(一个或多个)FPU 634还支持整数计算。在一个实施例中,(一个或多个)FPU 634可以SIMD执行数目多达M个数目的32位浮点(或整数)运算,或者SIMD执行多达2M个16位整数或16位浮点运算。在一个实施例中,(一个或多个)FPU中的至少一个提供扩展的数学能力以支持高吞吐量的超越数学函数和双精度64位浮点。在一些实施例中,一组8位整数SIMD ALU 635也存在,并且可以被特别优化以执行与机器学习计算相关联的操作。
在一个实施例中,可以在图形子核分组(例如,子切片)中实例化图形执行单元608的多个实例的阵列。出于可扩展性,产品架构师可以每子核分组选择确切数目的执行单元。在一个实施例中,执行单元608可以跨多个执行通道执行指令。在另一实施例中,在不同通道上执行在图形执行单元608上执行的每个线程。
图7是图示了根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有以多个格式的指令的指令集。实线框图示了一般被包括在执行单元指令中的组分,而虚线包括可选的或仅被包括在指令的子集中的组分。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是被供应给执行单元的指令,与一旦该指令被处理就由指令解码产生的微操作相对。
在一些实施例中,图形处理器执行单元天然地支持以128位指令格式710的指令。基于所选指令、指令选项、和操作数的数目,64位压缩的指令格式730可用于一些指令。本机128位指令格式710提供对所有指令选项的访问,而一些选项和操作被限制成以64位格式730。以64位格式730的可用的本机指令随实施例而变化。在一些实施例中,使用索引字段713中的一组索引值来部分地压缩指令。执行单元硬件基于索引值而引用一组压缩表,并且使用压缩表输出来重建以128位指令格式710的本机指令。
对于每个格式,指令操作码712定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同时加法运算。默认情况下,执行单元跨操作数的所有数据通道执行每个指令。在一些实施例中,指令控制字段714使得能够控制某些执行选项,诸如通道选择(例如,预测)和数据通道顺序(例如,拌和)。对于以128位指令格式710的指令,执行尺寸(exec-size)字段716限制将并行执行的数据通道的数目。在一些实施例中,执行尺寸字段716不可用于64位压缩指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0 720、src1 722和一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中目的地中的一个被隐含。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数目。指令的最后一个源操作数可以是与该指令一起传递的立即数(immediate)(例如,被硬编码的)值。
在一些实施例中,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(例如,调用、跳转(jmp))包括以0010xxxxb(例如,0x20)形式的指令。杂项指令组746包括指令的混合,所述指令包括以0011xxxxb(例如,0x30)形式的同步指令(例如,等待、发送)。并行数学指令组748包括以0100xxxxb(例如,0x40)形式的分量方式的算术指令(例如,加、乘(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对每个顶点执行坐标空间变换和照明(lighting)操作。在一些实施例中,顶点取出器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将基于顶点的对象转换成相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括加窗器(windower)/屏蔽器单元,用来执行固定功能三角形和线光栅化。在一些实施例中,相关联的渲染高速缓存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调用翻译成可以由图形处理器处理的命令。在一些实施例中,为全部来自Khronos Group的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,还可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以做出从具有兼容的3D流水线的未来API的流水线到图形处理器的流水线的映射,则还将支持该未来API。
图形流水线编程
图9A是图示了根据一些实施例的图形处理器命令格式900的框图。图9B是图示了根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示了一般被包括在图形命令中的组件,而虚线包括可选的或仅被包括在图形命令的子集中的组件。图9A的示例性图形处理器命令格式900包括用来标识客户端902的数据字段、命令操作代码(操作码)904和用于该命令的数据906。子操作码905和命令尺寸908也被包括在一些命令中。
在一些实施例中,客户端902指定处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节命令的进一步处理并将命令数据路由到适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元都具有处理命令的对应处理流水线。一旦命令被客户端单元接收,客户端单元就读取操作码904,并且如果存在,则读取子操作码905以确定要执行的操作。客户端单元使用数据字段906中的信息来执行该命令。对于一些命令,期望明确的命令尺寸908来指定命令的尺寸。在一些实施例中,命令解析器基于命令操作码来自动确定命令中的至少一些的尺寸。在一些实施例中,经由双字的倍数对齐命令。
图9B中的流程图图示了示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示的命令序列的一个版本来建立、执行和终止一组图形操作。仅出于示例的目的示出和描述了样本命令序列,因为实施例不限于这些特定命令或不限于该命令序列。此外,所述命令可以被作为命令序列中的一批命令而发布,使得图形处理器将至少部分地同时处理命令的序列。
在一些实施例中,图形处理器命令序列910可以以流水线冲刷(flush)命令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状态设置命令。至少部分地基于在使用中的特定3D API来确定这些命令的值。在一些实施例中,如果将不使用那些元件,则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)。应用程序还包括适于由通用处理器核1034执行的用机器语言的可执行指令1014。应用程序还包括通过顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的Microsoft® Windows®操作系统、专有的类似UNIX的操作系统、或者使用Linux内核的变体的开源的类似UNIX的操作系统。操作系统1020可以支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3D API在使用中时,操作系统1020使用前端着色器编译器1024将用HLSL的任何着色器指令1012编译成较低级的着色器语言。编译可以是即时(JIT)编译,或者应用程序可以执行着色器预编译。在一些实施例中,在3D图形应用程序1010的编译期间将高级着色器编译成低级着色器。在一些实施例中,以中间形式提供着色器指令1012,诸如由Vulkan API使用的标准可移植中间表示(SPIR)的一个版本。
在一些实施例中,用户模式图形驱动1026包含后端着色器编译器1027,用来将着色器指令1012转换成硬件特定的表示。当OpenGL API在使用中时,用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核设计。可以存储IP核设计以用于使用非易失性存储器1140(例如,硬盘、闪存或任何非易失性存储介质)递送到第三方制造设施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的单元与被配置成在逻辑1172、1174之间路由电信号的桥1182电耦合。桥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。另外,集成电路可以包括耦合到高清晰度多媒体接口(HDMI)控制器1250和移动产业处理器接口(MIPI)显示接口1255中的一个或多个的显示设备1245。存储可以由包括闪存和闪存控制器的闪存子系统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被优化以执行如在OpenGL API中提供的片段着色器程序,其可以被用于实行与如在Direct 3D API中提供的像素着色器程序类似的操作。
图形处理器1310另外包括一个或多个存储器管理单元(MMU)1320A-1320B、(一个或多个)高速缓存1325A-1325B和(一个或多个)电路互连1330A-1330B。所述一个或多个MMU1320A-1320B为图形处理器1310(包括为顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N)提供虚拟到物理地址映射,除了存储在所述一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,所述顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,所述一个或多个MMU 1320A-1320B可以与系统内的其它MMU同步,所述其它MMU包括与图12的所述一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统。根据实施例,所述一个或多个电路互连1330A-1330B使得图形处理器1310能够或者经由SoC的内部总线或者经由直接连接与SoC内的其它IP核对接。
如图13B中所示,图形处理器1340包括图13A的图形处理器1310的所述一个或多个MMU 1320A-1320B、高速缓存1325A-1325B和电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N(例如,1355A、1355B、1355C、1355D、1355E、1355F至1355N-1以及1355N),其提供统一的着色器核架构,其中单核或类型或核可以执行所有类型的可编程着色器代码,包括着色器程序代码以实现顶点着色器、片段着色器和/或计算着色器。存在的着色器核的确切数目可以在实施例与实现方式之间变化。另外,图形处理器1340包括核间任务管理器1345,其充当线程分派器以将执行线程分派给一个或多个着色器核1355A-1355N和分块(tiling)单元1358以加速用于基于图块的渲染的分块操作,其中用于场景的渲染操作被在图像空间中细分,例如用来利用场景内的局部空间相干性或优化内部高速缓存的使用。
图14A-14B图示了根据本文中描述的实施例的附加示例性图形处理器逻辑。图14A图示了可以被包括在图12的图形处理器1210内的图形核1400,并且可以是如图13B中的统一着色器核1355A-1355N。图14B图示了适于在多芯片模块上部署的高度并行的通用图形处理单元1430。
如图14A中所示,图形核1400包括共享指令高速缓存1402、纹理单元1418和高速缓存/共享存储器1420,其为图形核1400内的执行资源所共用。图形核1400可以包括多个切片1401A-1401N或用于每个核的分区,并且图形处理器可以包括图形核1400的多个实例。切片1401A-1401N可以包括支持逻辑,所述支持逻辑包括本地指令高速缓存1404A-1404N、线程调度器1406A-1406N、线程分派器1408A-1408N和一组寄存器1410A。为了执行逻辑运算,切片1401A-1401N可以包括一组附加功能单元(AFU 1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU 1416A-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU 1415A-1415N)和矩阵处理单元(MPU 1417A-1417N)。
计算单元中的一些以特定精度进行运算。例如,FPU 1414A-1414N可以执行单精度(32位)和半精度(16位)浮点运算,而DPFPU 1415A-1415N执行双精度(64位)浮点运算。ALU1416A-1416N可以以8位、16位和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。MPU 1417A-1417N也可以被配置用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。MPU 1417A-1417N可以执行多种矩阵运算以加速机器学习应用框架,包括使得能够支持加速的通用矩阵到矩阵乘法(GEMM)。AFU 1412A-1412N可以执行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如,正弦、余弦等)。
如图14B中所示,通用处理单元(GPGPU)1430可以被配置成使得图形处理单元的阵列能够执行高度并行的计算操作。另外,GPGPU 1430可以直接链接到GPGPU的其它实例以创建多GPU集群来为特定深度神经网络改进训练速度。GPGPU 1430包括主机接口1432以使得能实现与主机处理器的连接。在一个实施例中,主机接口1432是PCI Express接口。然而,主机接口也可以是供应商特定的通信接口或通信结构。GPGPU 1430从主机处理器接收命令并使用全局调度器1434将与那些命令相关联的执行线程分配给一组计算集群1436A-1436H。计算集群1436A-1436H共享高速缓冲存储器1438。高速缓冲存储器1438可以用作用于计算集群1436A-1436H内的高速缓冲存储器的较高级高速缓存。
GPGPU 1430包括经由一组存储器控制器1442A-1442B与计算集群1436A-1436H耦合的存储器1434A-1434B。在各种实施例中,存储器1434A-1434B可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。
在一个实施例中,计算集群1436A-1436H每个都包括一组图形核,诸如图14A的图形核1400,所述组图形核可以包括多个类型的整数和浮点逻辑单元,所述整数和浮点逻辑单元可以以包括适合机器学习计算的一系列精度执行计算操作。例如,在一个实施例中,计算集群1436A-1436H的每个中的浮点单元的至少一个子集可以被配置成执行16位或32位浮点运算,而浮点单元的不同子集可以被配置成执行64位浮点运算。
GPGPU 1430的多个实例可以被配置成作为计算集群进行操作。被计算集群用于同步和数据交换的通信机制跨实施例而变化。在一个实施例中,GPGPU 1430的所述多个实例通过主机接口1432进行通信。在一个实施例中,GPGPU 1430包括I/O中枢1439,所述I/O中枢1439将GPGPU 1430与GPU链路1440耦合,所述GPU链路1440使得能实现到GPGPU的其它实例的直接连接。在一个实施例中,GPU链路1440耦合到使得能实现GPGPU 1430的多个实例之间的通信和同步的专用GPU到GPU桥。在一个实施例中,GPU链路1440与高速互连耦合以向其它GPGPU或并行处理器传输和接收数据。在一个实施例中,GPGPU 1430的所述多个实例位于分离的数据处理系统中,并且经由可经由主机接口1432访问的网络设备进行通信。在一个实施例中,除了主机接口1432之外或作为其替代,GPU链路1440可被配置成使得能实现到主机处理器的连接。
虽然所图示的GPGPU 1430的配置可以被配置成训练神经网络,但是一个实施例提供GPGPU 1430的替代配置,所述替代配置可以被配置用于在高性能或低功率推理平台内部署。在推理配置中,GPGPU 1430相对于训练配置包括更少的计算集群1436A-1436H。另外,与存储器1434A-1434B相关联的存储器技术可以在推理与训练配置之间不同,其中较高带宽的存储器技术致力于训练配置。在一个实施例中,GPGPU 1430的推理配置可以支持推理特定指令。例如,推理配置可以提供对一个或多个8位整数点积指令的支持,所述一个或多个8位整数点积指令通常在用于部署的神经网络的推理操作期间使用。
沉浸式视频概述
图15A图示了沉浸式视频的多个形式。可以以多个形式呈现沉浸式视频,其取决于观看者可用的自由度。自由度是指对象在三维(3D)空间中可以移动的不同方向的数目。可以经由包括对位置和定向的跟踪的头戴式显示器观看沉浸式视频。沉浸式视频的示例形式包括3DoF 1502、3DoF Plus 1504和完整的6DoF 1506。除了完整的6DoF 1506的沉浸式视频之外,6DoF沉浸式视频还包括全向6DoF 1507和加窗的6DoF 1508。
对于3DoF 1502中的视频(例如,360度视频),观看者可以改变定向(例如,偏转、俯仰、滚转),但不可以改变位置。对于3DoF Plus 1504中的视频,观看者可以改变定向并对位置的变化做出小的改变。对于6DoF 1506中的视频,观看者可以改变定向并改变位置。6DoF视频的更受限形式也是可用的。全向6DoF 1507中的视频使得观看者能够在虚拟场景中采取多个步骤。加窗的6DoF 1508中的视频允许观看者改变定向和位置,但是观看者被约束到有限的视图区域。增加沉浸式视频中的可用自由度一般包括增加在视频生成、编码、解码和回放中涉及的数据的量和复杂性。
图15B图示了用于沉浸式视频的图像投影和纹理平面。可以使用来自多个相机的数据生成视频内容的3D视图1510。多个投影平面1512可以用于生成用于视频内容的几何数据。可以针对用于生成几何数据的投影平面1512导出多个纹理平面1514。纹理平面1514可以应用于预先生成的或基于从视频数据导出的点云而生成的3D模型。所述多个投影平面1512可以用于生成多个二维(2D)投影,每个投影与投影平面相关联。
图16图示了客户端-服务器系统,通过所述客户端-服务器系统,沉浸式视频内容可以由服务器1620基础设施生成和编码以用于传输到一个或多个客户端1630设备。客户端1630设备然后可以解压缩和渲染沉浸式视频内容。在一个实施例中,一个或多个服务器1620设备可以包括来自具有深度传感器1602的一个或多个光学相机1601的输入。并行计算1604资源可以将视频和深度数据分解成点云1605和/或纹理三角形1606。用来生成有纹理的三角形1606的数据也可以由场景的预先生成的3D模型1603提供。可以压缩点云1605和/或有纹理的三角形1606以用于传输到一个或多个客户端设备,所述一个或多个客户端设备可以在本地渲染所述内容。在一个实施例中,使用多种压缩算法的多种压缩单元1607、1608可以压缩生成的内容,以用于通过递送介质从服务器1620传输到一个或多个客户端1630设备。客户端1630设备上的解压缩单元1609、1610可以将传入的位流解压缩并解码成视频/纹理和几何数据。例如,解压缩单元1609可以解码压缩的点云数据并将解压缩的点云数据提供给视点插值单元1611。被插值的视点数据可以用于生成位图数据1613。解压缩的点云数据可以被提供给几何重建单元1612以为场景重建几何数据。被解码的纹理数据(有纹理的三角形1614)可以使重建的几何数据具有某种结构,以生成用于由客户端1630查看的3D渲染1616。
图17A-17B图示了用于编码和解码3DoF Plus内容的系统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接收、解码并重建成沉浸式视频。所述多个视频流包括用于基本视频的流连同包含用于附加视图的打包数据的流。还接收被编码的元数据。在一个实施例中,可以经由HEVC 1713A解码器解码所述多个视频流。可以经由元数据1713B解码器解码元数据。被解码的元数据然后用于经由面片拆包1719逻辑对被解码的附加视图拆包。基本视图1701和附加视图1704的被解码的纹理和深度数据(视频0 1712、视频1-3 1715A-1715C)由客户端(例如,如图16中的客户端1630)上的视图生成逻辑1718重建。被解码的视频1712、1715A-1715C可以被作为纹理和深度数据提供给中间视图渲染器1714,所述中间视图渲染器1714可以用于渲染用于头戴式显示器1711的中间视图。头戴式显示器位置信息1716被作为反馈提供给中间视图渲染器1714,所述中间视图渲染器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生成。压缩的占据地图和辅助面片信息数据可以连同从视频压缩器1814输出的压缩和/或编码的视频数据被复用器1815复用成压缩的位流1816。从视频压缩器1814输出的压缩的视频数据包括压缩的几何图像数据、纹理图像数据和属性图像数据。压缩的位流1816可以被存储或提供给客户端设备以用于解压缩和查看。
如图18B中所示,6DoF有纹理的几何解码系统1820可以用于解码使用图18A的编码系统1800生成的6DoF内容。压缩的位流1816由解复用器1835接收并解复用成多个视频解码流、占据地图和辅助面片信息。所述多个视频流由视频解码器1834A-1834B解码/解压缩。占据地图数据由占据地图解码器1832解码/解压缩。被解码的视频数据和占据地图数据由视频解码器1834A-1834B和占据地图解码器1832输出到拆包单元1829。拆包单元将由图18A的面片打包单元1809打包的视频面片数据拆包。来自辅助面片信息解码器1833的辅助面片信息被提供给遮挡填充单元1826,所述遮挡填充单元1826可以用于从可能从视频数据的特定视图中丢失的对象的被遮挡部分填充面片。具有纹理和深度数据的相应视频流1822、1825A-1825C被从遮挡填充单元1826输出并提供给中间视图渲染器1823,所述中间视图渲染器1823可以基于由头戴式显示器1824提供的位置和定向信息来渲染用于在头戴式显示器1824上显示的视图。
图19A-19B图示了用于编码和解码6DoF点云数据的系统。图19A图示了6DoF点云编码系统1900。图19B图示了6DoF点云解码系统1920。可以使用点云来表示6 DoF视频,其中对于点云视频序列,以有规律的时间间隔存在点云帧,例如以每秒60帧。点云数据帧中的每个点由如下六个参数表示:(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,所述压缩的位流1916可以被存储或传输以用于显示。
由图19A的系统1900输出的压缩的位流可以由图19B中所示的点云解码系统1920解码。如图19B中所示,压缩的位流1916可以被解复用成多个被编码/压缩的视频流、占据地图数据和辅助面片信息。视频流可以由多流视频解码器1934解码/解压缩,所述多流视频解码器1934可以输出纹理和几何数据。占据地图和辅助面片信息可以由占据地图解码器1932和辅助面片信息解码器1933解压缩/解码。
然后可以执行几何重建、平滑和纹理重建以重建提供给图19A的6DoF点云编码系统1900的点云数据。几何重建单元1936可以基于从多流视频解码器1934的视频流解码的几何数据以及占据地图解码器1932和辅助面片信息解码器1933的输出来重建几何信息。重建的几何数据可以由平滑单元1937平滑。从由多流视频解码器1934输出的视频流解码的经平滑的几何和纹理图像数据被提供给纹理重建单元1938。纹理重建单元1938可以输出重建的点云1939,所述重建的点云1939是提供给图19A的6DoF点云编码系统1900的输入点云帧1906的变体。
六自由度视频的简化的渲染
沉浸式6DoF视频可以被使用MPEG PCC标准来编码以将6DoF视频压缩为具有投影平面映射的点云动态对象,并在客户端处被解码和渲染。MPEG PCC测试模型使用六个投影平面。当渲染已使用MPEG PCC测试模型格式压缩的6 DoF数据时,代替针对每个帧重建点云数据并使用实体(例如,立方体或球体)渲染点,本文中描述的一个实施例可以从解码的纹理和深度图像以及解码的面片和投影元数据(例如,占据地图和辅助面片信息)直接进行渲染。仅渲染将被包括在观看者的所选视口内的那些样本位置。简化6DOF沉浸式视频的渲染使得这样的视频的回放在使用嵌入式和集成图形平台时更加实用,并且可以使得能实现在更高性能的平台上的更高功效的渲染。
在一个实施例中,考虑到头戴式显示器及其视场的6 DoF旋转和平移或者另一个界面,确定观看者选择的视点。仅投影平面的子集将从给定的平移中可见。当编码格式使用六个投影平面时,六个投影平面中的最多三个将是可见的。那三个可见平面可以基于视点相对于投影平面的位置来确定,例如通过将平面视为长方体和确定哪些面从观看者位置是可见的来确定。
在针对每个样本位置解码纹理和深度图像以及占据地图和辅助面片信息之后,可以确定样本是否与三个可见平面中的一个对应以及占据地图是否指示样本位置被占据。如果样本与可见平面对应并且被占据,则与特定投影平面相关的纹理和深度位置用于在GPU上渲染点,而不形成中间点云。可以实现用于使用GPU来渲染样本的各种方法。
一些实施例被实现用于与立体显示器一起使用,诸如在VR头戴式显示器中。在一个实施例中,为每只眼睛分离地渲染视图,其与每只眼睛的位置和定向对应。在MPEG PCC测试模型的变体中,可以使用多于六个投影角度,其与具有多于六个面的几何实体对应,诸如十二面实体。在这样的变体中,多达一半的面将被视为可见平面。相应地,由本文中描述的实施例提供的技术可以被适配成从任何一组投影平面确定可见平面的子集。
图20A-20C图示了根据本文中描述的实施例的点云编码渲染平面的使用。图20A图示了可配置成绕过中间点云数据的生成的点云解码器。图20B图示了三维视频的可见投影平面。图20C图示了基于被编码的纹理和几何数据的样本位置的渲染。
如图20A中所示,可以在点云编码器的3D到2D投影单元2002处接收输入点云编码(PCC)序列。输入PCC序列2001可以以多边形文件格式(PLY)、点云数据(PCD)文件格式或另一个点云表示的形式。可以经由3D到2D投影单元2002将3D点云转化成一组二维投影。该转化导致投影元数据2003、一个或多个纹理平面2004和一个或多个几何平面2006。
纹理平面2004包括3D视频的颜色数据,以及与每个纹理元素相关联的一组纹理坐标。几何平面2006提供框架,纹理平面2004被映射在所述框架上。几何平面2006可以包括深度信息,所述深度信息指示距用于对应纹理元素的投影平面的深度。基于由与用于捕获3D视频内容的摄像机相关联的深度传感器提供的数据,可以提供深度信息。例如,可以在捕获视频数据时应用LiDAR或其它深度感测技术。还可以根据由多个相机捕获的视频数据来估计深度信息。纹理平面2004和几何平面2006可以由2D编码单元2008编码成位流2009。2D编码单元2008包括本文中描述的各种视频和元数据编码单元,用来压缩纹理、几何图形(geometry)和元数据。
2D解码单元2010可以接收编码的位流并解码一个或多个解码的纹理平面2012、几何平面2014和投影元数据2003。投影元数据可以用于使得2D到3D投影单元能够生成输出PCC序列2017。输出PCC序列2017可以被提供给点云渲染器,所述点云渲染器可以渲染3D沉浸式视频以用于在显示器上回放。在一个实施例中,绕过输出PCC序列2017的生成。代之以,纹理平面2012、几何平面2014和投影元数据2003由投影平面渲染器2018读取。
在一个实施例中,投影平面渲染器2018包括硬件和软件逻辑,其包括图形处理硬件和软件逻辑,用来为3D沉浸式视频内容的给定帧渲染仅可见且被占据的样本位置。在一个实施例中,投影元数据2003包括占据地图和辅助面片信息。占据地图元数据包括哪些图像样本位置为空(例如,不包含对应的点云信息)的指示。对于纹理平面2012和几何平面2014中的每个样本位置,辅助面片信息指示该样本位置所属的投影平面。
如图20B中所示,仅渲染与可见投影平面相关联的样本位置。对于具有六个投影平面2020的3D视频内的给定元素,最多三个投影平面将是可见的(例如,平面2020A、平面2020B、平面2020C)。对于给定的样本位置,如果样本与如由占据地图元数据所确定的具有相关联的点云数据的位置对应,并且与如由辅助面片信息以及观看者位置和定向数据所确定的可见平面相关联,则可以基于来自纹理平面2012和几何平面2014的纹理和几何/深度数据来渲染该样本位置。
如图20C中所示,对于与可见投影平面2020相关联的每个占据的样本,几何/深度坐标2022可以用于确定相对于该投影平面2020的位置。一个或多个纹理坐标(例如,纹理坐标2024)可以用于确定要应用于给定样本的颜色。对于每个帧,可以以该方式渲染每个可见且被占据的样本位置。与投影平面渲染器2018相关联的图形处理逻辑可以在每个帧期间基于视口信息为观察者执行必要的变换和照明计算。
图21图示了根据实施例的投影平面可见性确定。在一个实施例中,显示组装件2104可配置成向投影平面渲染器2018提供视图空间信息2116。视图空间信息2116包括正被观看的3D视频内的视点的3D位置和定向。显示组装件2104可以是多种显示组装件中的一个,包括具有位置、定向和/或眼睛跟踪传感器的头戴式显示器。显示组装件2104也可以是具有头部和/或眼睛跟踪传感器以检测显示器的观看者的位置和定向的非头戴式显示器。
投影平面渲染器2018使用视图空间信息来确定3D视频的哪些投影平面2020从视点可见。一般地,用于3D视频的投影平面2020的最多一半将是可见的。对于六个投影平面,那些平面中的最多三个可能是可见的。从某些视点来看,两个或一个平面可能是可见的。对于被完全遮挡的对象,用于被遮挡的元素的任何投影平面都将是不可见的。代之以,遮挡对象将是可见的。
图22图示了根据本文中描述的实施例的渲染3D视频的方法2200。可以经由如本文中描述的投影平面渲染器2018或者另一个装置来实现方法2200,所述另一个装置包括用来解码其中观看者具有多个(例如,三个、六个等)移动自由度的沉浸式3D视频的硬件和软件逻辑。
在一个实施例中,方法2200包括执行操作2201以接收表示三维视频的二维编码的数据集,其中三维视频被编码为点云。三维视频可以被编码为三维点云,所述三维点云然后被转化成一组纹理和几何图像,其然后可以被使用二维视频编码器进行编码。接收的数据集可以被包括在由二维视频编码器输出的位流中,其中位流包括针对被编码的视频的纹理数据、几何数据和元数据。
方法2200进一步包括执行操作2202以从位流中包括的数据集将二维数据解码成纹理数据、几何数据和元数据。纹理数据可以以多种纹理格式来编码,所述多种纹理格式包括压缩的纹理格式。几何数据可以包括可以在其上映射纹理数据的二维几何图形。几何数据还可以包括深度数据。元数据可以包括针对纹理和几何数据的各种面片的辅助面片信息。元数据还可以包括指示样本位置是否被占据的占据地图数据,使得样本位置具有对应的点云数据。
方法2200另外包括执行操作2203以基于元数据来确定三维视频中的样本位置的可见性状态和占据状态。操作2203可以通过接收与用于观看视频内容的显示设备相关联的位置和定向、确定与样本位置相关联的投影平面并且然后从显示设备的位置和定向确定投影平面的可见性来确定可见性。
方法2200另外包括执行操作2204以在样本位置可见且被占据时在不重建被编码的点云的情况下渲染用于该样本位置的视频数据。
虽然本文中描述的一些实施例和实现方式可能不完全遵守基于MPEG PCC测试模型的标准,但是由本文中描述的实施例提供的概念可以用于使得能实现基于修订的PCC测试模型用于6DoF视频的MPEG PCC解码的高效实现方式。
图23A-23B图示了根据本文中描述的实施例的用于沉浸式3D视频的递送和消费的系统2300和方法2350。在一个实施例中,图23A的系统2300包括经由网络2320耦合到客户端设备2330的服务器设备2310。网络2320可以是包括一个或多个局域网(LAN)或广域网(WAN)的有线和/或无线网络。例如,网络2320可以至少部分地包括因特网。
服务器设备2310可以包括用来压缩和编码用于由客户端设备2330消费的具有三个或六个自由维度的3D视频的硬件和软件逻辑。例如,服务器设备2310可以包括如图17A中的系统1700、如图18A中的系统1800和/或如图19A中的系统1900。服务器设备2310还可以包括如图20A中的3D到2D投影单元2002和2D编码单元2008。服务器设备2310可以是单个服务器设备或多个基于云的服务器,其包括虚拟服务器。服务器设备2310还可以是内容递送网络的服务器。
客户端设备2330可以是多种客户端计算设备,其包括但不限于台式计算设备、膝上型计算设备、手持计算设备、电视机顶盒和/或电视控制单元、媒体设备和/或控制台游戏设备。在一个实施例中,客户端设备2330以有线或无线方式与显示组装件2334耦合,所述显示组装件2334具有可以检测观看者的位置和定向的一组传感器2332。客户端设备2330可以经由多种显示设备显示内容。在一个实施例中,客户端设备2330连接到头戴式显示器2340,所述头戴式显示器2340还可以使用一个或多个内部传感器或外部传感器将位置和定向数据转播到客户端设备2330,所述一个或多个内部传感器或外部传感器可以转播与显示组装件的传感器2332类似的数据。观看者的位置和定向数据可以由客户端设备2330接收并且用于使用如图21中的投影平面渲染器2018来解码内容。在一个实施例中,显示组装件2334和/或头戴式显示器2340是立体显示器。对于立体显示器,可以基于每只眼睛的位置和定向数据而为每只眼睛渲染分离的视图。在这样的显示器中,传感器2332可以另外包括眼睛跟踪传感器。
图23B图示了根据实施例的用于编码和消费沉浸式3D视频内容的方法2350。在一个实施例中,方法2350包括使服务器设备2310执行操作2351以编码和传输包括3D视频内容的表示的位流。3D视频内容的表示可以是例如点云编码的3D视频,所述点云编码的3D视频已经被变换成3D数据并且使用2D编码器来编码。位流可以通过网络2320而被传输到客户端设备2330。客户端设备2330可以执行操作2352以接收和解码位流。位流可以包括纹理数据,几何数据,以及描述投影平面、面片组成、样本位置占据的元数据,以及可以用于为3D视频内容重建点云数据的其它元数据。在操作2353处,显示设备(显示组装件2334、头戴式显示器2340)可以经由传感器设备检测观看者的位置和定向,并且转播包括用户的位置和定向的观看者数据。位置和定向数据可以包括针对用户的每只眼睛的分离的数据。
在一个实施例中,方法2350另外包括使客户端设备2330执行操作2354以从显示设备接收观看者位置和定向数据并且基于解码的元数据来确定可见投影平面。客户端设备然后可以执行操作2355以渲染和显示3D内容的被占据且可见的样本位置。可以渲染样本位置而不重新生成从中导出了纹理、几何图形和元数据的点云数据。代之以,方法2350包括使客户端设备2330根据针对帧的纹理数据、几何数据和元数据来渲染3D视频内容。对于立体显示,可以为每个眼睛视点渲染和显示分离的视图。渲染的视图可以被写入到一个或多个帧缓冲器,所述一个或多个帧缓冲器可以被显示在显示设备上,所述显示设备诸如是显示组装件2334和头戴式显示器2340。
图24图示了根据本文中描述的实施例的数据处理系统2400。数据处理系统2400是具有处理器2402、统一存储器2410和GPGPU 2420的异构处理系统。处理器2402和GPGPU2420可以是如本文中描述的处理器和GPGPU/并行处理器中的任一个。统一存储器2410表示可以由处理器2402和GPGPU 2420访问的统一地址空间。统一存储器包括系统存储器2412以及GPGPU存储器2418。在一些实施例中,GPGPU存储器2418包括GPGPU 2420内的GPGPU本地存储器2428,并且还可以包括系统存储器2412中的一些或全部。例如,在系统存储器2412中存储的编译的代码2414B也可以被映射到GPGPU存储器2418中以用于由GPGPU 2420访问。在一个实施例中,系统存储器2412中的运行时库2416可以促进编译的代码2414B的编译和/或执行。处理器2402可以执行用于系统存储器2412中存储的编译器2415的指令。编译器2415可以将源代码2414A编译成编译的代码2414B以用于由处理器2402和/或GPGPU 2420执行。在一个实施例中,编译器2415是或者可以包括着色器编译器,用来编译特别用于由GPGPU2420执行的着色器程序。
GPGPU 2420包括多个计算块2424A-2424N,所述多个计算块2424A-2424N包括本文中描述的执行逻辑的一个或多个实例。GPGPU 2420还包括一组寄存器2425、高速缓冲存储器2427以及可以用作用于计算块2424A-2424N的共享资源的功率和性能模块2426。在一个实施例中,寄存器2425包括可直接和间接访问的寄存器,其中可间接访问的寄存器可以被优化以用于在矩阵计算操作中使用。功率和性能模块2426可以被配置成为计算块2424A-2424N调整功率递送和时钟频率,以在繁重的工作负荷下为计算块2424A-2424N内的门空闲组件供电。GPGPU 2420包括GPGPU本地存储器2428,所述GPGPU本地存储器2428是与GPGPU2420共享图形卡或多芯片模块的物理存储器模块。
在一个实施例中,GPGPU 2420包括硬件逻辑,所述硬件逻辑包括取出和解码单元2421以及调度器单元2422。指令取出和解码单元可以包括用来取出和解码可以定义复杂的可定制行为的指令的逻辑。所述指令可以使GPGPU 2420经由调度器单元2422调度要经由计算块2424A-2424N中的一个或多个执行的一组操作。在一个实施例中,调度器单元2422是被配置成执行高级调度操作的ASIC。在一个实施例中,调度器单元2422是微控制器或能够执行从固件模块加载的指令的每指令低能量的处理核。在一个实施例中,GPGPU 2420另外包括用来经由GPU的计算块2424A-2424N促进点云操作的加速的逻辑。在本文中描述的一些实施例中,GPGPU 2420包括投影平面渲染器2423,所述投影平面渲染器2423包括逻辑,至少部分地包括硬件逻辑,用来加速用于如本文中描述的投影平面渲染的操作。
应领会:对于某些实现方式,可以优选比以上描述的示例更少或更多地装备的系统。因此,数据处理系统2400的配置可以根据许多因素从实现方式到实现方式变化,所述因素诸如是价格约束、性能要求、技术改进或其它情况。示例包括(而不限于)移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持机、单向寻呼机、双向寻呼机、消息传递设备、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、因特网服务器、工作站、微型计算机、主机计算机、超级计算机、网络器具、web器具、分布式计算系统、多处理器系统、基于处理器的系统、消费电子产品、可编程消费电子产品、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、桥、交换机、机器或其组合。
实施例可以被实现为以下中的一个或它们的组合:使用父板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。作为示例,术语“逻辑”可以包括软件或硬件和/或软件和硬件的组合。
例如,实施例可以被提供为计算机程序产品,所述计算机程序产品可以包括其上存储有机器可执行指令的一个或多个机器可读介质,所述机器可执行指令在由诸如计算机、计算机的网络或者其它电子设备之类的一个或多个机器执行时可以导致所述一个或多个机器实行依照本文中描述的实施例的操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(压缩盘只读存储器)和磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存或适于存储机器可执行指令的其它类型的介质/机器可读介质。
此外,实施例可以被作为计算机程序产品而下载,其中可以通过通信链路(例如,调制解调器和/或网络连接)经由在载波或其它传播介质中体现和/或由所述载波或其它传播介质调制的一个或多个数据信号将程序从远程计算机(例如,服务器)传送到作出请求的计算机(例如,客户端)。
下面的条款和/或示例涉及特定实施例或其示例。可以在一个或多个实施例中的任何地方使用所述示例中的细节。不同实施例或示例的各种特征可以与包括的一些特征以及不包括的其它特征不同地组合以适合多种不同的应用。示例可以包括主题,诸如根据本文中描述的实施例和示例的方法、用于执行该方法的动作的部件、包括指令的至少一个机器可读介质,所述指令在由机器执行时使机器执行该方法的动作或者装置或系统的动作。各种组件可以是用于执行所描述的操作或功能的部件。
本文中描述的实施例提供了用来降低渲染沉浸式3D视频内容的复杂性的技术。一个实施例提供了一种用来渲染三维视频的装置,该装置包括一个或多个处理器,用来:接收表示一帧三维视频的平面投影的二维编码的数据集,将二维编码解码成纹理数据、几何数据和元数据,基于元数据而确定三维视频中的样本位置的可见性状态和占据状态,并且当样本位置可见且被占据时渲染用于该样本位置的视频数据。在一个实施例中,平面投影是三维视频的点云表示的平面投影。所述一个或多个处理器可以在不重建三维视频的点云表示的情况下渲染用于该样本位置的视频数据。在一个实施例中,所述数据集被包括在可以例如经由网络接口从远程设备接收的位流中。
在一个实施例中,该装置的所述一个或多个处理器可以包括可配置成从第一元数据单元确定可见性状态并从第二元数据单元确定占据状态的逻辑,所述逻辑可以是硬件逻辑或者硬件和软件逻辑的组合。在一个实施例中,第一元数据单元指示样本位置的投影平面。在一个实施例中,第二元数据单元指示样本位置是否具有对应的点云数据。为了确定可见性状态,所述一个或多个处理器可以接收与显示设备相关联的位置和定向,确定与样本位置相关联的投影平面,并且基于投影平面的可见性从显示设备的位置和定向确定可见性状态。在一个实施例中,与显示设备相关联的位置和定向是三维视频的视图空间中的位置和定向。所述一个或多个处理器可以针对单个帧从多个视点确定可见性状态。例如,对于立体显示器,可以为观看者的每只眼睛确定视点。
一个实施例提供了一种用来渲染三维视频的方法,该方法包括:接收表示一帧三维视频的平面投影的二维编码的数据集,将二维编码解码成纹理数据、几何数据和元数据,基于元数据而确定三维视频中的样本位置的可见性状态和占据状态,并且当样本位置可见且被占据时渲染用于该样本位置的视频数据。在一个实施例中,平面投影是三维视频的点云表示的平面投影。在一个实施例中,用于样本位置的视频数据是在不基于元数据重建三维视频的点云表示的情况下渲染的。在一个实施例中,平面投影是三维视频的点云表示的平面投影,并且用于样本位置的视频数据是在不重建三维视频的点云表示的情况下渲染的。该方法另外包括从第一元数据单元确定可见性状态和从第二元数据单元确定占据状态,其中确定可见性状态包括:接收与显示设备相关联的位置和定向,确定与样本位置相关联的投影平面,以及基于投影平面的可见性从显示设备的位置和定向确定可见性状态。在一个实施例中,与显示设备相关联的位置和定向是三维视频的视图空间中的位置和定向,并且确定可见性状态包括针对单个帧从多个视点确定可见性状态。该方法可以另外包括可以由如本文中所描述的硬件或软件逻辑执行的操作。
一个实施例提供了一种存储指令的非暂时性机器可读介质,所述指令要使一个或多个处理器执行操作,所述操作包括:接收表示一帧三维视频的平面投影的二维编码的数据集,将二维编码解码成纹理数据、几何数据和元数据,基于元数据而确定三维视频中的样本位置的可见性状态和占据状态,并且当样本位置可见且被占据时渲染用于该样本位置的视频数据。在一个实施例中,平面投影是三维视频的点云表示的平面投影,并且用于样本位置的视频数据是在不重建三维视频的点云表示的情况下渲染的。在一个实施例中,所述数据集是从远程设备接收的位流。所述操作另外包括从第一元数据单元确定可见性状态和从第二元数据单元确定占据状态。在一个实施例中,确定可见性状态包括接收与显示设备相关联的位置和定向,确定与样本位置相关联的投影平面,以及基于投影平面的可见性从显示设备的位置和定向确定可见性状态。在一个实施例中,与显示设备相关联的位置和定向是三维视频的视图空间中的位置和定向,并且确定可见性状态包括针对单个帧从多个视点确定可见性状态。该介质可以另外包括用来执行可以由如本文中所描述的硬件或软件逻辑执行的操作的指令。
本领域技术人员将从前面的描述中领会:可以以多种形式实现实施例的广泛技术。因此,虽然已经结合实施例的特定示例描述了实施例,但是实施例的真实范围不应当被如此限制,由于在研究附图、说明书和下面的权利要求书时,其它修改将变得对于技术人员显而易见。

Claims (25)

1.一种用来渲染三维视频的装置,所述装置包括:
逻辑,其至少部分地包括硬件逻辑,要:
接收数据集,所述数据集表示一帧三维视频的平面投影的二维编码;
将所述二维编码解码成纹理数据、几何数据和元数据;
基于所述元数据,确定所述三维视频中的样本位置的可见性状态和占据状态;以及
当所述样本位置可见且被占据时,渲染用于所述样本位置的视频数据。
2.如权利要求1中所述的装置,其中所述平面投影是所述三维视频的点云表示的平面投影。
3.如权利要求2中所述的装置,所述逻辑要在不重建所述三维视频的点云表示的情况下渲染用于所述样本位置的视频数据。
4.如权利要求1中所述的装置,其中所述数据集是要从远程设备接收的位流。
5.如权利要求1中所述的装置,所述逻辑另外要:
从第一元数据单元确定所述可见性状态;以及
从第二元数据单元确定所述占据状态。
6.如权利要求5中所述的装置,其中为了确定所述可见性状态,所述逻辑要:
接收与显示设备相关联的位置和定向;
确定与所述样本位置相关联的投影平面;以及
基于所述投影平面的可见性,从所述显示设备的位置和定向确定所述可见性状态。
7.如权利要求6中所述的装置,其中与所述显示设备相关联的位置和定向是所述三维视频的视图空间中的位置和定向。
8.如权利要求7中所述的装置,其中所述逻辑要针对单个帧从多个视点确定所述可见性状态。
9.如权利要求7中所述的装置,其中所述第一元数据单元指示所述样本位置的所述投影平面。
10.如权利要求7中所述的装置,其中所述第二元数据单元指示样本位置是否具有对应的点云数据。
11.一种用来渲染三维视频的方法,所述方法包括:
接收数据集,所述数据集表示一帧三维视频的平面投影的二维编码;
将所述二维编码解码成纹理数据、几何数据和元数据;
基于所述元数据,确定所述三维视频中的样本位置的可见性状态和占据状态;以及
当所述样本位置可见且被占据时,渲染用于所述样本位置的视频数据。
12.如权利要求11中所述的方法,其中所述平面投影是所述三维视频的点云表示的平面投影,并且在不重建所述三维视频的点云表示的情况下渲染用于所述样本位置的视频数据。
13.如权利要求11中所述的方法,另外包括:
从第一元数据单元确定所述可见性状态;以及
从第二元数据单元确定所述占据状态,
其中确定所述可见性状态包括:接收与显示设备相关联的位置和定向,确定与所述样本位置相关联的投影平面,以及基于所述投影平面的可见性从所述显示设备的位置和定向确定所述可见性状态。
14.如权利要求13中所述的方法,其中与所述显示设备相关联的位置和定向是所述三维视频的视图空间中的位置和定向,并且确定所述可见性状态包括针对单个帧从多个视点确定所述可见性状态。
15.一种数据处理系统,包括用来执行如权利要求1-14中任一项所述的方法的部件。
16.一种存储指令的非暂时性机器可读介质,所述指令要使一个或多个处理器执行操作以渲染三维视频,所述操作包括:
接收数据集,所述数据集表示一帧三维视频的平面投影的二维编码;
将所述二维编码解码成纹理数据、几何数据和元数据;
基于所述元数据,确定所述三维视频中的样本位置的可见性状态和占据状态;以及
当所述样本位置可见且被占据时,渲染用于所述样本位置的视频数据。
17.如权利要求16中所述的非暂时性机器可读介质,其中所述平面投影是所述三维视频的点云表示的平面投影。
18.如权利要求17中所述的非暂时性机器可读介质,其中在不重建所述三维视频的点云表示的情况下渲染用于所述样本位置的视频数据。
19.如权利要求16中所述的非暂时性机器可读介质,其中所述数据集是从远程设备接收的位流。
20.如权利要求16中所述的非暂时性机器可读介质,另外包括:
从第一元数据单元确定所述可见性状态;以及
从第二元数据单元确定所述占据状态。
21.如权利要求20中所述的非暂时性机器可读介质,其中确定所述可见性状态包括:
接收与显示设备相关联的位置和定向;
确定与所述样本位置相关联的投影平面;以及
基于所述投影平面的可见性,从所述显示设备的位置和定向确定所述可见性状态。
22.如权利要求21中所述的非暂时性机器可读介质,其中与所述显示设备相关联的位置和定向是所述三维视频的视图空间中的位置和定向。
23.如权利要求22中所述的非暂时性机器可读介质,其中确定所述可见性状态包括针对单个帧从多个视点确定所述可见性状态。
24.如权利要求22中所述的非暂时性机器可读介质,其中所述第一元数据单元指示所述样本位置的所述投影平面。
25.如权利要求22中所述的非暂时性机器可读介质,其中所述第二元数据单元指示样本位置是否具有对应的点云数据。
CN201910575114.1A 2018-07-31 2019-06-28 六自由度视频的简化的渲染 Pending CN110784702A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/050153 2018-07-31
US16/050,153 US11212506B2 (en) 2018-07-31 2018-07-31 Reduced rendering of six-degree of freedom video

Publications (1)

Publication Number Publication Date
CN110784702A true CN110784702A (zh) 2020-02-11

Family

ID=69168341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910575114.1A Pending CN110784702A (zh) 2018-07-31 2019-06-28 六自由度视频的简化的渲染

Country Status (3)

Country Link
US (2) US11212506B2 (zh)
CN (1) CN110784702A (zh)
DE (1) DE102019117218A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10762394B2 (en) 2018-07-31 2020-09-01 Intel Corporation System and method for 3D blob classification and transmission
US10887574B2 (en) 2018-07-31 2021-01-05 Intel Corporation Selective packing of patches for immersive video
US10893299B2 (en) 2018-07-31 2021-01-12 Intel Corporation Surface normal vector processing mechanism
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US11212506B2 (en) * 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
US11057631B2 (en) 2018-10-10 2021-07-06 Intel Corporation Point cloud coding standard conformance definition in computing environments
CN113785590A (zh) * 2019-05-10 2021-12-10 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置及三维数据解码装置
JP2023504097A (ja) * 2019-11-29 2023-02-01 中興通訊股▲ふん▼有限公司 マルチビュービデオ処理方法および装置
US20230048897A1 (en) * 2021-08-16 2023-02-16 Tencent America LLC 2d uv atlas sampling based methods for dynamic mesh compression

Family Cites Families (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619256A (en) 1995-05-26 1997-04-08 Lucent Technologies Inc. Digital 3D/stereoscopic video compression technique utilizing disparity and motion compensated predictions
US5768122A (en) 1995-11-14 1998-06-16 Coard Technology Virtual motion programming and control
US5781194A (en) 1996-08-29 1998-07-14 Animatek International, Inc. Real-time projection of voxel-based object
US5966672A (en) 1997-07-28 1999-10-12 Knupp; Daniel F. Visualization technology method
US7477768B2 (en) 1999-06-29 2009-01-13 The Research Foundation Of State University Of New York System and method for performing a three-dimensional virtual examination of objects, such as internal organs
US6476803B1 (en) 2000-01-06 2002-11-05 Microsoft Corporation Object modeling system and process employing noise elimination and robust surface extraction techniques
EP1264281A4 (en) 2000-02-25 2007-07-11 Univ New York State Res Found ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME
DE10021286B4 (de) 2000-05-02 2005-03-10 Kara Can Verfahren und Vorrichtung zur Kompression und/oder Dekompression von Daten
US6785640B1 (en) 2000-08-07 2004-08-31 Daimlerchrysler Corporation Surface evaluation in a stamping manufacturing process utilizing true reflection line methodology and computer graphics technology
KR100446635B1 (ko) * 2001-11-27 2004-09-04 삼성전자주식회사 깊이 이미지 기반 3차원 객체 표현 장치 및 방법
US7003136B1 (en) 2002-04-26 2006-02-21 Hewlett-Packard Development Company, L.P. Plan-view projections of depth image data for object tracking
US7831087B2 (en) 2003-10-31 2010-11-09 Hewlett-Packard Development Company, L.P. Method for visual-based recognition of an object
CN101416520B (zh) 2006-03-31 2011-12-14 皇家飞利浦电子股份有限公司 多视图的高效编码
JP5167248B2 (ja) 2006-05-11 2013-03-21 プライムセンス リミテッド 深度マップによるヒューマノイド形状のモデル化
US8351646B2 (en) 2006-12-21 2013-01-08 Honda Motor Co., Ltd. Human pose estimation and tracking using label assignment
KR101545008B1 (ko) 2007-06-26 2015-08-18 코닌클리케 필립스 엔.브이. 3d 비디오 신호를 인코딩하기 위한 방법 및 시스템, 동봉된 3d 비디오 신호, 3d 비디오 신호용 디코더에 대한 방법 및 시스템
US9251585B2 (en) 2007-07-12 2016-02-02 Siemens Aktiengesellschaft Coregistration and analysis of multi-modal images obtained in different geometries
US8217940B2 (en) 2007-07-23 2012-07-10 Disney Enterprises, Inc. Directable lighting method and apparatus
US8613673B2 (en) 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
US8270767B2 (en) 2008-04-16 2012-09-18 Johnson Controls Technology Company Systems and methods for providing immersive displays of video camera information from a plurality of cameras
US9041915B2 (en) 2008-05-09 2015-05-26 Ball Aerospace & Technologies Corp. Systems and methods of scene and action capture using imaging system incorporating 3D LIDAR
US8566335B1 (en) * 2008-05-23 2013-10-22 Bank Of America Corporation Enterprise space management and restacking
US8106924B2 (en) 2008-07-31 2012-01-31 Stmicroelectronics S.R.L. Method and system for video rendering, computer program product therefor
IT1394538B1 (it) 2009-05-19 2012-07-05 St Microelectronics Srl Metodo di renderizzazione di un edge di una primitiva grafica
US20110157322A1 (en) 2009-12-31 2011-06-30 Broadcom Corporation Controlling a pixel array to support an adaptable light manipulator
US8458188B2 (en) 2010-02-17 2013-06-04 Lockheed Martin Corporation Voxel approach to terrain repositories for modeling and simulation
US10096161B2 (en) 2010-06-15 2018-10-09 Live Nation Entertainment, Inc. Generating augmented reality images using sensor and location data
US9665916B2 (en) 2010-08-10 2017-05-30 X Systems, Llc System and method for analyzing data
US9307134B2 (en) 2011-03-25 2016-04-05 Sony Corporation Automatic setting of zoom, aperture and shutter speed based on scene depth map
US8428363B2 (en) 2011-04-29 2013-04-23 Mitsubishi Electric Research Laboratories, Inc. Method for segmenting images using superpixels and entropy rate clustering
JP2012247891A (ja) 2011-05-26 2012-12-13 Sony Corp 画像処理装置、画像処理方法、およびプログラム
US9819879B2 (en) 2011-07-12 2017-11-14 Samsung Electronics Co., Ltd. Image filtering apparatus and method based on noise prediction using infrared ray (IR) intensity
KR101740259B1 (ko) 2011-10-07 2017-05-29 한국전자통신연구원 3차원 포인트 클라우드의 공간 분할 방법
US9171018B2 (en) 2012-01-17 2015-10-27 Google Inc. System and method for associating images with semantic entities
GB201208088D0 (en) 2012-05-09 2012-06-20 Ncam Sollutions Ltd Ncam
US8619082B1 (en) 2012-08-21 2013-12-31 Pelican Imaging Corporation Systems and methods for parallax detection and correction in images captured using array cameras that contain occlusions using subsets of images to perform depth estimation
WO2014075236A1 (en) 2012-11-14 2014-05-22 Mediatek Singapore Pte. Ltd. Methods for residual prediction with pseudo residues in 3d video coding
WO2014125502A2 (en) 2013-02-18 2014-08-21 Tata Consultancy Services Limited Segmenting objects in multimedia data
WO2014165244A1 (en) 2013-03-13 2014-10-09 Pelican Imaging Corporation Systems and methods for synthesizing images from image data captured by an array camera using restricted depth of field depth maps in which depth estimation precision varies
US20160109284A1 (en) 2013-03-18 2016-04-21 Aalborg Universitet Method and device for modelling room acoustic based on measured geometrical data
US9699375B2 (en) * 2013-04-05 2017-07-04 Nokia Technology Oy Method and apparatus for determining camera location information and/or camera pose information according to a global coordinate system
US9269022B2 (en) 2013-04-11 2016-02-23 Digimarc Corporation Methods for object recognition and related arrangements
JP2014241579A (ja) 2013-05-13 2014-12-25 株式会社東芝 映像圧縮装置
US10074213B2 (en) 2013-09-12 2018-09-11 Intel Corporation Adaptive multi-frequency shading
CA2931529C (en) 2013-11-27 2022-08-23 Children's National Medical Center 3d corrected imaging
US9412040B2 (en) 2013-12-04 2016-08-09 Mitsubishi Electric Research Laboratories, Inc. Method for extracting planes from 3D point cloud sensor data
US9164874B1 (en) 2013-12-20 2015-10-20 Amazon Technologies, Inc. Testing conversion and rendering of digital content
US20150264404A1 (en) 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
KR102238693B1 (ko) 2014-06-20 2021-04-09 삼성전자주식회사 포인트 클라우드에서 특징 영역을 추출하는 방법 및 장치
US9483868B1 (en) 2014-06-30 2016-11-01 Kabam, Inc. Three-dimensional visual representations for mobile devices
EP3161795A4 (en) 2014-07-11 2018-02-14 Shanghai United Imaging Healthcare Ltd. System and method for image processing
EP3007130A1 (en) 2014-10-08 2016-04-13 Thomson Licensing Method and apparatus for generating superpixel clusters
US9607425B2 (en) 2014-10-17 2017-03-28 Qualcomm Incorporated Ray-box intersection testing using dot product-based fixed function logic
GB2532948B (en) 2014-12-02 2021-04-14 Vivo Mobile Communication Co Ltd Object Recognition in a 3D scene
WO2016097940A1 (en) 2014-12-16 2016-06-23 3Ditize Sl 3d rotational presentation generated from 2d static images
RU2671307C1 (ru) 2015-03-10 2018-10-30 Хуавэй Текнолоджиз Ко., Лтд. Способ предсказания изображений и связанное устройство
US9715016B2 (en) 2015-03-11 2017-07-25 The Boeing Company Real time multi dimensional image fusing
US10818084B2 (en) 2015-04-07 2020-10-27 Geopogo, Inc. Dynamically customized three dimensional geospatial visualization
US10469873B2 (en) 2015-04-15 2019-11-05 Google Llc Encoding and decoding virtual reality video
WO2016171673A1 (en) 2015-04-21 2016-10-27 Hewlett-Packard Development Company, L.P. Octree serialization
CN105184852B (zh) 2015-08-04 2018-01-30 百度在线网络技术(北京)有限公司 一种基于激光点云的城市道路识别方法及装置
EP3156942A1 (en) 2015-10-16 2017-04-19 Thomson Licensing Scene labeling of rgb-d data with interactive option
US10574988B2 (en) 2015-11-19 2020-02-25 Qualcomm Incorporated System and methods for reducing slice boundary visual artifacts in display stream compression (DSC)
US9740944B2 (en) 2015-12-18 2017-08-22 Ford Global Technologies, Llc Virtual sensor data generation for wheel stop detection
US20170184721A1 (en) 2015-12-24 2017-06-29 Laurel At Sunset, Inc. Indirect distance measurement methods and apparatus
GB201602877D0 (en) 2016-02-18 2016-04-06 Landa Corp Ltd System and method for generating videos
US11025882B2 (en) * 2016-04-25 2021-06-01 HypeVR Live action volumetric video compression/decompression and playback
US10681326B2 (en) 2016-05-19 2020-06-09 AVAGO TECHNOLOGlES INTERNATIONAL SALES PTE. LIMITED 360 degree video system with coordinate compression
US10979691B2 (en) 2016-05-20 2021-04-13 Qualcomm Incorporated Circular fisheye video in virtual reality
US10694210B2 (en) 2016-05-28 2020-06-23 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression
US11297346B2 (en) 2016-05-28 2022-04-05 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
US10909761B1 (en) * 2016-07-07 2021-02-02 Google Llc 2D video with option for projected viewing in modeled 3D space
JP6983862B2 (ja) * 2016-07-08 2021-12-17 ヴィド スケール インコーポレイテッド ジオメトリ投影を使用する360度ビデオ符号化
JP2019521811A (ja) 2016-07-28 2019-08-08 ケアストリーム・デンタル・テクノロジー・トプコ・リミテッド 歯列メッシュ矯正具除去のための方法およびシステム
US10366310B2 (en) 2016-09-12 2019-07-30 Aptiv Technologies Limited Enhanced camera object detection for automated vehicles
KR102560029B1 (ko) 2016-09-12 2023-07-26 삼성전자주식회사 가상 현실 콘텐트를 송수신하는 방법 및 장치
EP3301931A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for omnidirectional video coding with adaptive intra prediction
US10733766B2 (en) 2016-10-19 2020-08-04 Google, Llc Methods and apparatus to encode and/or decode normals of geometric representations of surfaces
US10165300B2 (en) 2016-10-28 2018-12-25 Blackberry Limited 3D transform and inter prediction for video coding
US10109055B2 (en) 2016-11-21 2018-10-23 Seiko Epson Corporation Multiple hypotheses segmentation-guided 3D object detection and pose estimation
US10186075B2 (en) 2016-11-30 2019-01-22 Adcor Magnet Systems, Llc System, method, and non-transitory computer-readable storage media for generating 3-dimensional video images
KR20180074369A (ko) 2016-12-23 2018-07-03 삼성전자주식회사 3차원 컨텐츠의 썸네일 관리 방법 및 그 장치
US20180189647A1 (en) 2016-12-29 2018-07-05 Google, Inc. Machine-learned virtual sensor model for multiple sensors
US10560680B2 (en) 2017-01-28 2020-02-11 Microsoft Technology Licensing, Llc Virtual reality with interactive streaming video and likelihood-based foveation
US10078790B2 (en) 2017-02-16 2018-09-18 Honda Motor Co., Ltd. Systems for generating parking maps and methods thereof
US11514613B2 (en) 2017-03-16 2022-11-29 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs
US20180300937A1 (en) 2017-04-13 2018-10-18 National Taiwan University System and a method of restoring an occluded background region
EP3610647B1 (en) 2017-04-26 2021-12-08 Huawei Technologies Co., Ltd. Apparatuses and methods for encoding and decoding a panoramic video signal
US10645360B2 (en) 2017-05-31 2020-05-05 Verizon Patent And Licensing Inc. Methods and systems for transmitting data in a virtual reality system
WO2018232518A1 (en) 2017-06-21 2018-12-27 Vancouver Computer Vision Ltd. DETERMINING POSITIONS AND OBJECT ORIENTATIONS
US10514757B2 (en) 2017-06-23 2019-12-24 Dell Products, L.P. Wireless communication configuration using motion vectors in virtual, augmented, and mixed reality (xR) applications
US10484682B2 (en) 2017-07-03 2019-11-19 Qualcomm Incorporated Reference picture derivation and motion compensation for 360-degree video coding
US10818087B2 (en) 2017-10-02 2020-10-27 At&T Intellectual Property I, L.P. Selective streaming of immersive video based on field-of-view prediction
US11769275B2 (en) 2017-10-19 2023-09-26 Interdigital Vc Holdings, Inc. Method and device for predictive encoding/decoding of a point cloud
US10424083B2 (en) 2017-10-21 2019-09-24 Samsung Electronics Co., Ltd. Point cloud compression using hybrid transforms
US10699444B2 (en) 2017-11-22 2020-06-30 Apple Inc Point cloud occupancy map compression
US10783668B2 (en) 2017-12-22 2020-09-22 Samsung Electronics Co., Ltd. Handling duplicate points in point cloud compression
US10346987B1 (en) 2017-12-29 2019-07-09 Datalogic Usa, Inc. Locating objects on surfaces
US10963995B2 (en) 2018-02-12 2021-03-30 Samsung Electronics Co., Ltd. Image processing apparatus and image processing method thereof
US10773168B2 (en) 2018-04-02 2020-09-15 Google Llc Temporary game control by user simulation following loss of active control
US10848894B2 (en) 2018-04-09 2020-11-24 Nokia Technologies Oy Controlling audio in multi-viewpoint omnidirectional content
US10796458B2 (en) 2018-04-23 2020-10-06 Qualcomm Incorporated Compression of point clouds via a novel hybrid coder
US10827225B2 (en) 2018-06-01 2020-11-03 AT&T Intellectual Propety I, L.P. Navigation for 360-degree video streaming
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11212506B2 (en) * 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
US10911799B2 (en) 2018-07-31 2021-02-02 Intel Corporation Video refinement mechanism
US10839589B2 (en) 2018-07-31 2020-11-17 Intel Corporation Enhanced immersive media pipeline for correction of artifacts and clarity of objects in computing environments
US10922832B2 (en) 2018-07-31 2021-02-16 Intel Corporation Removal of projection noise and point-based rendering
US10846814B2 (en) 2018-07-31 2020-11-24 Intel Corporation Patch processing mechanism
US20200045344A1 (en) 2018-07-31 2020-02-06 Intel Corporation Video processing mechanism
US20200045288A1 (en) 2018-07-31 2020-02-06 Intel Corporation Six degree of freedom video transcoding mechanism
US10893299B2 (en) 2018-07-31 2021-01-12 Intel Corporation Surface normal vector processing mechanism
US10887574B2 (en) 2018-07-31 2021-01-05 Intel Corporation Selective packing of patches for immersive video
US10685476B2 (en) 2018-07-31 2020-06-16 Intel Corporation Voxels sparse representation
US10762592B2 (en) 2018-07-31 2020-09-01 Intel Corporation Point-based rendering and removal of projection noise
US10819968B2 (en) 2018-07-31 2020-10-27 Intel Corporation Neural network based patch blending for immersive video
US10783698B2 (en) 2018-07-31 2020-09-22 Intel Corporation Point cloud operations
US11049266B2 (en) 2018-07-31 2021-06-29 Intel Corporation Point cloud viewpoint and scalable compression/decompression
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US10762394B2 (en) 2018-07-31 2020-09-01 Intel Corporation System and method for 3D blob classification and transmission
US11057631B2 (en) 2018-10-10 2021-07-06 Intel Corporation Point cloud coding standard conformance definition in computing environments

Also Published As

Publication number Publication date
US20200045292A1 (en) 2020-02-06
US11212506B2 (en) 2021-12-28
DE102019117218A1 (de) 2020-02-06
US11758106B2 (en) 2023-09-12
US20220191458A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US11750787B2 (en) Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US11863731B2 (en) Selective packing of patches for immersive video
US11049266B2 (en) Point cloud viewpoint and scalable compression/decompression
US10911799B2 (en) Video refinement mechanism
US20200045344A1 (en) Video processing mechanism
US11800121B2 (en) Point cloud coding standard conformance definition in computing environments
US10922832B2 (en) Removal of projection noise and point-based rendering
US11284118B2 (en) Surface normal vector processing mechanism
US20200045288A1 (en) Six degree of freedom video transcoding mechanism
US11758106B2 (en) Reduced rendering of six-degree of freedom video
US10762592B2 (en) Point-based rendering and removal of projection noise
US11620729B2 (en) Apparatus and method for correcting image regions following upsampling or frame interpolation
CN110855971A (zh) 视频处理机制
CN110784738A (zh) 体素稀疏表示
CN110796720A (zh) 用于3d斑点分类和传输的系统和方法
US20240080464A1 (en) Point cloud coding standard conformance definition in computing environments
CN110969684A (zh) 用于多速率像素着色的多期架构
US20210263776A1 (en) Apparatus and method for graphics virtualization with late synchronization
US20190265973A1 (en) Fusion of SIMD Processing Units

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