CN110796724A - 点云视点和可扩展压缩/解压 - Google Patents

点云视点和可扩展压缩/解压 Download PDF

Info

Publication number
CN110796724A
CN110796724A CN201910576457.XA CN201910576457A CN110796724A CN 110796724 A CN110796724 A CN 110796724A CN 201910576457 A CN201910576457 A CN 201910576457A CN 110796724 A CN110796724 A CN 110796724A
Authority
CN
China
Prior art keywords
point cloud
data
processor
graphics
cloud data
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
CN201910576457.XA
Other languages
English (en)
Inventor
S·贾纳斯
B·达斯
H·拉韦
吴钟大
G·奇林吉尔
J·霍兰
N·比斯瓦尔
邱怡仁
许茜
M·瓦尔卡尔
李相熙
S·巴兰
S·波特里
J·罗斯
M·S·马德帕特拉
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 CN110796724A publication Critical patent/CN110796724A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/262Analysis of motion using transform domain methods, e.g. Fourier domain methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4084Scaling of whole images or parts thereof, e.g. expanding or contracting in the transform domain, e.g. fast Fourier transform [FFT] domain scaling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Image Generation (AREA)

Abstract

点云视点和可扩展压缩/解压。本文描述的实施例提供一种装置,包括:处理器,用于:将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵;确定至少用于块矩阵中的块子集的至少一个三维(3D)运动向量;通过将至少一个3D运动向量应用于块矩阵中的块子集,生成表示第二时间点时的三维空间的预测的所预测的第二点云数据集帧;比较所预测的第二点云数据集帧与表示第二时间点时的三维空间的预测的第二点云数据集帧,以生成预测误差参数;以及当预测误差因子小于误差阈值时,根据第一点云数据集帧和至少一个三维(3D)运动向量,对第二点云数据集帧进行编码,以产生编码的第二点云数据集帧。可以描述并且要求其他实施例。

Description

点云视点和可扩展压缩/解压
相关申请
本申请涉及Jill Boyce于2018年7月31日提交的题为“REDUCED RENDERING OFSIXDEGREE OF FREEDOM VIDEO”的共同受让美国专利申请序列号No.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是示出根据本文描述的一些实施例的IP核开发系统的框图
图11B示出根据本文描述的一些实施例的集成电路封装组件的截面侧视图;
图12是示出根据实施例的示例性片上系统集成电路的框图;
图13A-图13B是示出根据本文描述的实施例的在SoC内使用的示例性图形处理器的框图;
图14A-图14B是示出根据本文描述的实施例的附加示例性图形处理器逻辑;
图15A示出根据本文描述的实施例的各种形式的沉浸式视频;
图15B示出根据本文描述的一些实施例的用于沉浸式视频的图像投影和纹理平面;
图16示出根据本文描述的实施例的服务器基础架构可以生成沉浸式视频内容并且对其进行编码以用于传输到一个或多个客户端设备的客户端-服务器系统;
图17A-图17B示出根据本文描述的一些实施例的用于对3DoF Plus内容进行编码和解码的系统;
图18A-图18B示出根据本文描述的一些实施例的用于生成记分牌信息元数据的程序逻辑;
图19A-图19B示出根据本文描述的一些实施例的用于经由点云数据对6DoF内容进行编码和解码的系统;
图20示出根据本文描述的实施例的数据处理系统;
图21示出根据本文描述的一些实施例的用于实现多采样空间降噪的方法的操作;
图22示出根据本文描述的一些实施例的来自被布置到细分为区域的投影中的多个帧的点云数据;
图23-26示出根据本文描述的一些实施例的用于实现点云数据的多分辨率流送的方法的操作;
图27示出根据本文描述的一些实施例的用于实现多维内容的可扩展压缩和解压的层级架构的方法的操作;
图28示出根据本文描述的一些实施例的用于实现多维内容的可扩展压缩和解压的层级架构的架构。
图29是根据本文描述的一些实施例的包括图形处理器的计算设备的框图。
具体实施方式
出于解释的目的,阐述了大量具体细节,以提供对以下描述的各个实施例的透彻理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一些细节的情况下实践实施例。在其他实例中,以框图形式示出公知的结构和设备,以避免掩盖基本原理,并且提供对实施例的更透彻理解。尽管参照图形处理器描述了以下实施例中的一些,但是本文描述的技术和教导可以应用于各种类型的电路或半导体设备,包括通用处理设备或图形处理设备。本文对“一个实施例”或“实施例”的引用指示,与实施例结合或关联地描述的特定特征、结构或特性可以包括于这些实施例中的至少一个中。然而,在说明书中各处出现的短语“在一个实施例中”并不一定全部指代同一实施例。
在以下描述和权利要求中,可以使用术语“耦合”和“连接”连同其派生词。应理解,这些术语并非意图彼此同义。“耦合”用于指示彼此可以或可以不直接物理或电接触的两个或更多个要素彼此协作或交互。“连接”用于指示在彼此耦合的两个或更多个要素之间建立通信。
在下面的描述中,图1-图14提供包括或涉及各个实施例的示例性数据处理系统和图形处理器逻辑的概述。图15-图25提供各个实施例的具体细节。关于图形处理器描述以下实施例的一些方面,而关于通用处理器(例如,中央处理单元(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,其可以包括用于促进其他指令集的仿真的指令。处理器核107还可以包括其他处理设备(例如,数字信号处理器(DSP))。
在一些实施例中,处理器102包括缓存存储器104。取决于架构,处理器102可以具有单个内部缓存或多级内部缓存。在一些实施例中,在处理器102的各种组件之间共享缓存存储器。在一些实施例中,处理器102还使用外部缓存(例如,三级(L3)缓存或最后一级缓存(LLC))(未示出),其可以使用已知的缓存一致性技术在处理器核107之间共享。在处理器102中还包括寄存器文件106,其可以包括用于存储不同类型数据的不同类型寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以对于处理器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的系统存储器,以存储数据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 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和/或存储器控制器160可以处于一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,其可以被配置作为与处理器102进行通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图2是具有一个或多个处理器核202A-202N、集成存储器控制器214和集成图形处理器208的处理器200的实施例的框图。图2中标号(或名称)与本文任何其他附图的要素相同的那些要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。处理器200可以包括多达(含)由虚线框表示的附加核202N的附加核。处理器核202A-202N中的每一个包括一个或多个内部缓存单元204A-204N。在一些实施例中,每个处理器核还可以访问一个或多个共享缓存单元206。
内部缓存单元204A-204N和共享缓存单元206表示处理器200内的缓存存储器层级。缓存存储器层级可以包括每个处理器核内的至少一级指令和数据缓存以及一级或多级共享的中间级缓存(例如,二级(L2)、三级(L3)、四级(L4)或其他级的缓存),其中,外部存储器之前的最高级缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各个缓存单元206与204A-204N之间的一致性。
在一些实施例中,处理器200还可以包括一个或多个总线控制器单元216和系统代理核210的集合。一个或多个总线控制器单元216管理一组外围总线(例如,一个或多个PCI或PCI Express总线)。系统代理核210为各种处理器组件提供管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各种外部存储器设备(未示出)的访问。
在一些实施例中,处理器核202A-202N中的一个或多个包括对同时多线程的支持。在该实施例中,系统代理核210包括用于在多线程处理期间协调和操作核202A-202N的组件。系统代理核210可以附加地包括功率控制单元(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互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块218(例如,eDRAM模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核202A-202N中的每一个和图形处理器208使用嵌入式存储器模块218作为共享的最后一级缓存。
在一些实施例中,处理器核202A-202N是执行相同指令集架构的同构核。在另一实施例中,处理器核202A-202N在指令集架构(ISA)方面是异构的,其中,处理器核202A-202N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N在微架构方面是异构的,其中,功耗相对较高的一个或多个核与功耗较低的一个或多个核耦合。此外,处理器200可以实现于一个或多个芯片上,或者实现为具有除了其他组件之外还有所示组件的SoC集成电路。
图3是图形处理器300的框图,其可以是分立式图形处理单元,或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由存储器映射的至图形处理器上的寄存器的I/O接口并且用放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是对本地存储器、一个或多个内部缓存、一个或多个共享外部缓存的接口,和/或对系统存储器的接口。
在一些实施例中,图形处理器300还包括显示控制器302,以将显示输出数据驱动到显示设备320。显示控制器302包括用于一个或多个覆盖平面的硬件,以用于显示和合成多层视频或用户界面元素。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备(例如,虚拟现实(VR)显示设备或增强现实(AR)显示设备)。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码为、解码自一种或多种媒体编码格式(包括但不限于运动图像专家组(MPEG)格式(例如,MPEG-2)、高级视频编码(AVC)格式(例如,H.264/MPEG-4AVC)以及电影电视工程师协会(SMPTE)421M/VC-1和联合图像专家组(JPEG)格式(例如,JPEG和Motion JPEG(MJPEG)格式)),或者在其之间进行转码。
在一些实施例中,图形处理器300包括块图像传送(BLIT)引擎304,以执行包括例如位边界块传送的二维(2D)光栅化器操作。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件执行2D图形操作。在一些实施例中,GPE 310是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。
在一些实施例中,GPE 310包括3D管线312,以用于执行3D操作(例如,使用对3D基元形状(例如,矩形、三角形等)作用的处理功能渲染三维图像和场景)。3D管线312包括可编程功能元件和固定功能元件,其执行元件内的各种任务和/或对3D/媒体子系统315产生执行线程。虽然3D管线312可以用于执行媒体操作,但是GPE 310的实施例还包括媒体管线316,其具体地用于执行媒体操作(例如,视频后处理和图像增强)。
在一些实施例中,媒体管线316包括固定功能或可编程逻辑单元,以代替或代表视频编解码器引擎306执行一个或多个专用媒体操作(例如,视频解码加速、视频解交错和视频编码加速)。在一些实施例中,媒体管线316附加地包括线程产生单元,以产生线程以用于在3D/媒体子系统315上执行。所产生的线程对3D/媒体子系统315中所包括的一个或多个图形执行单元上的媒体操作执行计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D管线312和媒体管线316产生的线程的逻辑。在一个实施例中,管线将线程执行请求发送到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耦合于或包括命令流送器403,其向3D管线312和/或媒体管线316提供命令流。在一些实施例中,命令流送器403与存储器(其可以是系统存储器,或者内部缓存存储器和共享缓存存储器中的一个或多个)耦合。在一些实施例中,命令流送器403从存储器接收命令,并且将命令发送到3D管线312和/或媒体管线316。命令是从存储用于3D管线312和媒体管线316的命令的环形缓冲区获取的指令(directive)。在一个实施例中,环形缓冲区可以附加地包括批命令缓冲区,其存储多个命令的批次。用于3D管线312的命令还可以包括对存储在存储器中的数据(例如但不限于用于3D管线312的顶点和几何数据和/或用于媒体管线316的图像数据和存储器对象)的引用。3D管线312媒体管线316通过经由各个管线内的逻辑执行操作,或者通过将一个或多个执行线程分派到图形核阵列414来处理命令和数据。在一个实施例中,图形核阵列414包括一块或多块图形核(例如,图形核415A、图形核415B),每个块包括一个或多个图形核。每个图形核包括一组图形执行资源,其包括用于执行图形和计算操作的通用和图形专用执行逻辑、以及固定功能纹理处理和/或机器学习和人工智能加速逻辑。
在各个实施例中,3D管线312包括固定功能和可编程逻辑,以通过处理指令并将执行线程分派到图形核阵列414来处理一个或多个着色器程序(例如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序)。图形核阵列414提供统一的执行资源块,以便在处理这些着色器程序中使用。图形核阵列414的图形核415A-414B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括用于执行媒体功能(例如,视频和/或图像处理)的执行逻辑。在一个实施例中,执行单元附加地包括可编程以执行除了图形处理操作之外的并行通用计算操作的通用逻辑。通用逻辑可以与图1的处理器核107或如图2中的核202A-202N内的通用逻辑并行地或结合地执行处理操作。
由图形核阵列414上执行的线程所生成的输出数据可以将数据输出到统一返回缓冲区(URB)418中的存储器。URB 418可以存储用于多个线程的数据。在一些实施例中,URB418可以用于在图形核阵列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内的所有逻辑元件。在一个实施例中,共享功能逻辑420被排除,以支持图形核阵列414内的共享功能逻辑416。
图5是根据本文描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5中标号(或名称)与本文任何其他附图的要素相同的要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。所示的图形处理器核500在一些实施例中被包括于图4的图形核阵列414内。图形处理器核500(有时称为核片)可以是模块化图形处理器内的一个或多个图形核。图形处理器核500是一个图形核片的示例,并且如本文所述的图形处理器基于目标功率和性能包络可以包括多个图形核片。每个图形核500可以包括与多个子核501A-501F(也称为子片)耦合的固定功能块530,子核包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块530包括几何/固定功能管线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经由对子核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,其可以包括由图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括在仅位置着色中使用的附加几何管线。在仅位置着色中,存在两种几何管线:几何/固定功能管线516、536内的全几何管线;以及裁剪管线,其为可以包括于附加固定功能逻辑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的概述,其可以包括图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能够多发单指令多数据(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包括第一EU 608A、第二EU 608B和对第一EU 608A和第二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 ALU635。GRF624和ARF 626包括与在图形执行单元608中可能是活动的每个同时硬件线程关联的通用寄存器文件和架构寄存器文件的集合。在一个实施例中,每线程架构状态保存在ARF 626中,而在线程执行期间使用的数据存储在GRF 624中。每个线程的执行状态,包括每个线程的指令指针,可以保存在ARF 626中的线程特定寄存器中。
在一个实施例中,图形执行单元608具有作为同时多线程(SMT)和细粒度交错多线程(IMT)的组合的架构。该架构具有能够在设计时基于同时线程的目标数量和每执行单元的寄存器的数量进行精细调节的模块化配置,其中,执行单元资源被划分在用于执行多个同时线程的逻辑上。
在一个实施例中,图形执行单元608可以并发多个指令,多个指令可以各自是不同的指令。图形执行单元608的线程仲裁器622可以将指令分派到发送单元630、分支单元642或SIMD FPU 634之一,以用于执行。每个执行线程可以访问GRF 624内的128个通用寄存器,其中,每个寄存器可以存储32个字节,可作为32位数据元素的SIMD8元素向量访问。在一个实施例中,每个执行单元线程可以访问GRF624内的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限制将并行执行的数据通道的数量。在一些实施例中,exec-size字段716对于64位紧凑指令格式730是不可用的。
一些执行单元指令具有多达三个操作数,其包括两个源操作数src0720、src1 722和一个目的操作数718。在一些实施例中,执行单元支持双目的操作数指令,其中,目的操作数之一是隐式的。数据操控指令可以具有第三源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数量。指令的最后源操作数可以是与指令一起传递的立即(例如,硬编码)值。
在一些实施例中,128位指令格式710包括指明例如使用直接寄存器寻址模式还是间接寄存器寻址模式的存取/地址模式字段726。当使用直接寄存器寻址模式时,一个或多个操作数的寄存器地址由指令中的位直接提供。
在一些实施例中,128位指令格式710包括指明用于指令的地址模式和/或存取模式的存取/地址模式字段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的操作,其从存储器读取顶点数据并执行由命令流送器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)。
在一些实施例中,全部的几何对象可以经由被分派到执行单元852A-852B的一个或多个线程由几何着色器819来处理,或者可以直接进入裁剪器(clipper)829。在一些实施例中,几何着色器可以对整个几何对象而不是图形管线的前级中的顶点或顶点片块进行操作。如果禁用曲面细分,则几何着色器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,其将基于顶点的对象转换为关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线形光栅化的加窗器/掩蔽器单元。关联的渲染缓存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(全都来自Khronos Group)提供支持。在一些实施例中,还可以为MicrosoftCorporation的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可以开始于管线清理(flush)命令912,以使任何活动图形管线完成用于管线的当前未决命令。在一些实施例中,3D管线922和媒体管线924不并发操作。执行管线清理,以使活动的图形管线完成任何未决命令。响应于管线清理,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘图引擎完成未决操作并且有关的读取缓存失效。可选地,渲染缓存中标记为“脏”的任何数据可以被清理到存储器。在一些实施例中,对于管线同步或在将图形处理器置于低功率状态之前,可以使用管线清理命令912。
在一些实施例中,当命令序列要求图形处理器显式地在管线之间切换时,使用管线选择命令913。在一些实施例中,在发出管线命令之前,在执行上下文内仅需要一次管线选择命令913,除非上下文要为两个管线发出命令。在一些实施例中,在经由管线选择命令913进行管线切换前一刻,需要管线清理命令912。
在一些实施例中,管线控制命令914配置用于操作的图形管线,并且用于对3D管线922和媒体管线924进行编程。在一些实施例中,管线控制命令914配置活动管线的管线状态。在一个实施例中,管线控制命令914用于管线同步并且在处理批命令之前清除来自活动管线内的一个或多个缓存存储器的数据。
在一些实施例中,返回缓冲区状态命令916用于为各个管线配置一组返回缓冲区以写入数据。一些管线操作需要分配、选择或配置操作在处理期间将中间数据写入的一个或多个返回缓冲区。在一些实施例中,图形处理器还使用一个或多个返回缓冲区来存储输出数据并执行跨线程通信。在一些实施例中,返回缓冲区状态916包括选择要用于一组管线操作的返回缓冲区的大小和数量。
命令序列中的其余命令基于用于操作的活动管线而不同。基于管线确定(920),命令序列被调整为:3D管线922开始于3D管线状态930或媒体管线924开始于媒体管线状态940。
用于配置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。来自媒体管线924的输出可以然后通过3D管线922或媒体管线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 Corporation的
Figure BDA0002112215220000281
操作系统、类似私有UNIX的操作系统、或使用Linux内核的变型的类似开源UNIX的操作系统。操作系统1020可以支持图形API 1022(例如,Direct3D API、OpenGL API或Vulkan API)。当Direct3D API处于使用中时,操作系统1020使用前端着色器编译器1024来将HLSL的任何着色器指令1012编译成更低级着色器语言。编译可以是即时(JIT)编译,或者应用可以执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间将高级着色器编译成低级着色器。在一些实施例中,以中间形式(例如,Vulkan API使用的标准便携式中间表示(SPIR)的版本)提供着色器指令1012。
在一些实施例中,用户模式图形驱动程序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,其可以处于硬件描述语言(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。此外,集成电路可以包括耦合到高清晰度多媒体接口(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。一个或多个MMU 1320A-1320B为图形处理器1310(包括为顶点处理器1305和/或片段处理器1315A-1315N)提供虚拟到物理地址映射,其除了存储在一个或多个缓存1325A-1325B中的顶点或图像/纹理数据之外还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其他MMU(包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220关联的一个或多个MMU)同步,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核进行接口。
如图13B所示,图形处理器1340包括图13A的图形处理器1310的一个或多个MMU1320A-1320B、缓存1325A-1325B和电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N(例如,1455A、1355B、1355C、1355D、1355E、1355F至1355N-1和1355N),其提供统一的着色器核架构,在其中,单核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以在实施例和实现方式之间变化。此外,图形处理器1340包括核间任务管理器1345,其充当线程分派器以将执行线程分派到一个或多个着色器内核1355A-1355N和平铺单元1358,以加速用于基于平铺块的渲染的平铺操作,在其中,用于场景的渲染操作在图像空间中细分(例如,以利用场景内的局部空间相干性或优化内部缓存的使用)。
图14A-图14B示出根据本文描述的实施例的附加示例性图形处理器逻辑。图14A示出图形核1400,其可以被包括于图12的图形处理器1210内,并且可以是如图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可以包括一组附加功能单元(AFU1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU1416-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU1415A-1415N)和矩阵处理单元(MPU 1417A-1417N)。
一些计算单元以特定精度操作。例如,FPU 1414A-1414N可以执行单精度(32位)和半精度(16位)浮点运算,而DPFPU 1415A-1415N执行双精度(64位)浮点运算。ALU 1416A-1416N可以按8位、16位和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。MPU 1417A-1417N还可以配置用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。MPU 1417-1417N可以执行各种矩阵运算以加速机器学习应用框架,包括使得对加速的通用矩阵到矩阵乘法(GEMM)的支持成为可能。AFU 1412A-1412N可以执行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如,正弦、余弦等)。
如图14B所示,通用处理单元(GPGPU)1430可以被配置为使得高度并行的计算操作能够由图形处理单元的阵列执行。此外,GPGPU 1430可以直接链接到GPGPU的其他实例,以生成多GPU集群,以提升用于特定深度神经网络的训练速度。GPGPU 1430包括主机接口1432,以使得与主机处理器的连接成为可能。在一个实施例中,主机接口1432是PCIExpress接口。然而,主机接口也可以是供应商特定的通信接口或通信构造。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,其将GPGPU 1430与GPU链路1440耦合,GPU链路1440使得至GPGPU的其他实例的直接连接成为可能。在一个实施例中,GPU链路1440耦合到专用GPU到GPU桥,其使得能够进行GPGPU 1430的多个实例之间的通信和同步。在一个实施例中,GPU链路1440与高速互连耦合,以对其他GPGPU或并行处理器发送和接收数据。在一个实施例中,GPGPU 1430的多个实例位于分离的数据处理系统中,并且经由可经由主机接口1432访问的网络设备进行通信。在一个实施例中,除了主机接口1432之外或作为对其的替代,GPU链路1440还可以被配置为使得至主机处理器的连接成为可能。
虽然GPGPU 1430的所示配置可以被配置为训练神经网络,但一个实施例提供可以被配置用于部署在高性能或低功率推理平台内的GPGPU 1430的替选配置。在推理配置中,GPGPU 1430相对于训练配置包括更少的计算集群1436A-1436H。此外,与存储器1434A-1434B关联的存储器技术可以在推理配置与训练配置之间不同,其中,更高带宽存储器技术致力于训练配置。在一个实施例中,GPGPU 1430的推理配置可以支持推理特定指令。例如,推理配置可以提供对一个或多个8位整数点积指令的支持,这些指令在推理操作期间常用于所部署的神经网络。
图15A示出多种形式的沉浸式视频。取决于对观看者可用的自由度,可以以多种形式呈现沉浸式视频。自由度指代对象能够在3D空间中移动的不同方向的数量。示例形式包括3DoF、3DoF Plus和6DoF。6DoF视频可以包括全6DoF、全向6DoF和加窗6DoF。可以经由包括关于位置和取向进行跟踪的头戴式显示器观看沉浸式视频。
在3DoF视频(例如,360度视频)中,观看者可以改变取向(例如,偏航、俯仰、翻滚)而非位置。在3DoF Plus视频中,观看者可以改变取向并且对位置的改变进行小的改变。
在6DoF视频中,观看者可以改变取向并且改变位置。更受限形式的6DoF视频也是可用的。加窗6DoF允许观看者改变取向和位置,但观看者被约束到有限的视图区域。全向6DoF使得观看者能够在虚拟场景中采取多个步骤。
图15B示出用于沉浸式视频的图像投影和纹理平面。可以使用来自多个相机的数据生成视频内容的3D视图。可以为视频内容确定投影平面。可以从视频内容导出多个纹理平面,纹理平面可以应用于预先生成的或基于从视频数据导出的点云而生成的3D模型。
图16示出服务器基础架构可以生成沉浸式视频内容并且对其进行编码以用于传输到一个或多个客户端设备的客户端-服务器系统。客户端设备然后可以解压缩并渲染沉浸式视频内容。可以从光学相机和深度传感器生成沉浸式视频内容。并行计算资源可以将视频和深度数据分解为点云和/或纹理三角形。预先生成的场景的3D模型也可以提供纹理化三角形数据。点云和/或纹理化三角形可以被压缩,以用于传输到一个或多个客户端设备,其可以在本地渲染内容。
图17A-图17B示出用于对3DoF Plus内容进行编码和解码的系统。
如图17A所示,可以使用多个相机来捕获基本视图和附加视图的视频数据。每个相机可以提供视频数据和深度数据,其中,视频数据的每个帧可以被转换为纹理。可以对所提供的数据执行重新投影和遮挡检测,然后可以由片块形成模块形成为片块。然后,片块封装单元封装各个片块。可以连同封装的片块数据和基本视频视图一起对用于封装的片块的元数据进行编码。
如图17B所示,可以接收视频数据的多个流并且对其进行解码。多个视频流包括基本视频的流,以及包含附加视图的封装的数据的流。还接收编码的元数据。对多个视频流和元数据进行解码。然后,解码的元数据用于对解码的附加视图进行解封。基本视图和附加视图可以用于执行视图生成,其中,基本视图和附加视图由客户端重构。解码的视频可以作为纹理和深度数据提供给中间视图渲染器,其可以用于渲染头戴式显示器的中间视图。头戴式显示器位置信息作为反馈提供给中间视图渲染器,中间视图渲染器可以渲染更新的视图,以用于经由头戴式显示器显示。
图18A-图18B示出用于使用纹理化几何数据对6DoF内容进行编码和解码的系统。图18A示出6DoF纹理化几何编码系统。图18B示出6DoF纹理化几何解码系统。6DoF纹理化几何编码和解码可以用于使得视频数据作为纹理应用于几何数据的6DoF沉浸式视频的变体成为可能,从而允许基于头戴式显示器的位置和取向来渲染新的中间视图。
如图18A所示,多个视频相机记录的数据可以与3D模型组合,特别是对于静态对象。可以基于也包括深度数据的捕获的视频数据来执行重新投影和遮挡检测,并且可以对包括基本视频流(视频0)的所有视频流进行片块分解。
如所示,视频纹理和深度数据、分解的片块数据和封装的片块数据被提供给几何图像生成器。视频纹理和深度数据连同封装的片块数据一起被提供给纹理图像生成器。封装的片块数据连同视频纹理和深度数据一起被提供给属性图像生成器。然后,几何数据、纹理数据和属性数据被提供给视频压缩器。
除了提供给视频压缩器的数据之外,还可以基于封装的片块数据生成占据图(occupancy map)。可以基于与分解的片块数据组合的视频纹理和深度数据生成辅助片块信息。占据图数据和辅助片块信息也可以被压缩。然后,视频压缩器数据连同压缩的占据图数据和辅助片块信息一起复用为比特流。然后,比特流可以被提供给客户端设备,以用于解压和浏览。
图18B示出可以用于使用图18A的编码系统对6DoF内容进行解码的6DoF纹理化几何解码。压缩的比特流被接收,并且解复用为多个视频解码流、占据图和辅助片块信息。对多个视频流和占据图数据进行解封。然后,辅助片块信息用于对未封装的数据执行遮挡填充。在遮挡填充之后,可以将文本和深度数据重构为独立的流。这些独立的流可以被提供给中间视图渲染,其可以渲染视图以用于在头戴式显示器上显示。
图19A-图19B示出用于经由点云数据对6DoF内容进行编码和解码的系统。图19A示出6DoF点云编码系统。图19B示出6DoF点云解码系统。
如图19A所示,点云数据的输入帧可以被分解为片块数据。可以按与图18A中的视频纹理和深度数据类似的方式对点云数据和分解的片块数据进行编码。然后,编码的信息可以被复用为压缩的比特流,以提供给客户端以用于观看。
图19B所示的系统可以对图19A的系统输出的压缩的比特流进行解码。如图19B所示,压缩的比特可以被解复用为多个视频流、占据图数据和辅助片块信息。然后可以执行几何重构、平滑和纹理重构,以重构提供给图19A的6DoF点云编码系统的点云数据。
数据处理系统
图20示出根据本文描述的实施例的数据处理系统。图20的数据处理系统2000是具有处理器2002、统一存储器2010和GPGPU 2020的异构处理系统。处理器2002和GPGPU 2020可以是如本文所述的处理器和GPGPU/并行处理器中的任何一个。统一存储器2010表示可以由处理器2002和GPGPU 2020访问的统一地址空间。统一存储器包括系统存储器2012以及GPGPU存储器2018。在一些实施例中,GPGPU存储器2018包括GPGPU 2020内的GPGPU本地存储器2028,并且还可以包括系统存储器2012中的一些或全部。例如,存储在系统存储器2012中的编译代码2014B也可以被映射到GPGPU存储器2018,以用于GPGPU 2020访问。在一个实施例中,系统存储器2012中的运行时库2016可以促进编译代码2014B的编译和/或执行。处理器2002可以执行存储在系统存储器2012中的用于编译器2015的指令。编译器2015可以将源代码2014A编译为编译代码2014B,以用于处理器2002和/或GPGPU 2020执行。在一个实施例中,编译器2015是或可以包括着色器编译器,以编译专门用于GPGPU 2020执行的着色器程序。
GPGPU 2020包括多个计算块2024A-2024N,其包括本文描述的执行逻辑的一个或多个实例。GPGPU 2020还包括一组寄存器2025、缓存存储器2027以及可以用作计算块2024A-2024N的共享资源的功率和性能模块2026。在一个实施例中,寄存器2025包括直接和间接可存取寄存器,其中,间接可存取寄存器可以被优化,以用于矩阵计算操作中。功率和性能模块2026可以被配置为调整计算块2024A-2024N的功率输送和时钟频率,以在重工作负荷下为计算块2024A-2024N内的门空闲组件供电。GPGPU 2020包括GPGPU本地存储器2028,其为与GPGPU 2020共享图形卡或多芯片模块的物理存储器模块。
在一个实施例中,GPGPU 2020包括硬件逻辑,其包括压缩单元2021、传送单元2022和层级编码单元2023。压缩单元2021可以包括至少部分地包含硬件逻辑的逻辑,以实现用于压缩点云数据的技术。流送单元2022可以包括至少部分地包含硬件逻辑的逻辑,以实现用于传送点云数据的技术。以下更详细地描述这些单元实现的层级编码单元2023操作。
使用原生3D运动向量和3D频率/空间变换的点云压缩
在一些示例中,预测编码技术可以用与压缩点云数据。宽泛地说,表示第一时间点时的场景的帧点云数据可以被划分为块,并且可以为场景中的一个或多个块确定原生三维(3D)运动向量。3D运动向量可以应用于帧,以生成第二时间点的所预测的点云数据集帧。可以比较所预测的点云数据集帧与来自第二时间点的实际点云集数据。如果所预测的点云数据集帧是实际点云数据集的足够精确的表示,则可以通过根据第一点云数据集和运动向量对实际点进行编码,来压缩实际点云数据集。
在一些示例中,可以通过图20中描绘的压缩单元2021实现并且将参照图21-图22描述这些用于压缩点云数据的技术。这些技术可以在例如图形处理中找到实用性。
首先参照图22,在一些示例中,第一点云数据集帧2210可以包括表示第一时间点时的三维空间中的场景的点云数据集。可以已经通过单独地或结合与可以用于映射场景中的对象的深度特征的其他传感器(例如,LIDAR传感器)组合来自多个不同图像获取设备(例如,相机)的图像来开发点云数据集,如上所述。类似地,,第二点云数据集帧2212可以包括表示在第一时间点之后的第二时间点时的三维空间中的场景的点云数据集。本领域技术人员将认识到,可以随着时间收集并且存储附加点云数据集帧(即,帧3、帧4、帧N)。
如图22所示,在一些示例中,在场景中运动中的一个或多个对象2220可以显现在帧2210中的第一位置,然后可以移动到帧2 2212中的第二位置。为了清楚和易于解释,将假设,在本文提出的示例中,对象2220处于运动状态,而场景的其余分量保持静止。在此情况下,可以通过结合描述对象2220在帧1 2210和帧2 2212之间的时间段中的运动的一个或多个运动向量,以第一帧为参考对第二帧进行编码,来压缩第二帧。
参照图21,在操作2110,第一点云数据集帧2210被划分为块矩阵2212。在图22中描绘的示例中,帧2210和块2212描绘为三维矩形棱柱,但本领域技术人员将认识到,帧2210和块2212的形状可以变化。
在操作2115,至少对于第一点云数据集帧2210中的块子集2212确定三维(3D)运动向量。在图22中所描绘的示例中,对象2220驻留在第一点云数据集帧2210中的单个块2212中。假设对象2220是场景中的运动中的唯一对象,那么3D运动向量2214可以表征对象2220在帧1 2210与帧2 2212之间的运动。在一些示例中,3D运动向量由X、Y和Z轴的有符号量值组成。作为示例,如果对象从一个帧到下一帧在负方向上沿着每个维度移动1个单元,则3D运动向量将是<-1.0,-1.0,-1.0>。存在可以用于计算3D运动向量的广泛各样技术。一种方法是系统性地尝试较大数量的不同运动向量并且将它们应用作为候选。然后,比较实际第二帧与通过使用候选运动向量预测的帧。与实际第二帧相比具有最低误差的任何候选是用于压缩的运动向量。
在操作2120中,通过将在操作2115中生成的3D运动向量应用于包括帧1中的对象2220的块2212,生成所预测的第二点云数据集帧2216。因此,所预测的第二点云数据集帧2116表示第一点云数据集帧2210和根据3D运动向量2214平移通过三维空间的对象2220的组合。
在操作2125中,比较所预测的第二点云数据集帧2216与第二点云数据集帧2212,以生成预测误差参数。在一些示例中,选择场景的子区域,并且比较运动向量所预测的该区域中的所有体素与实际帧。体素值的绝对差值之和将是误差项的示例。
如果在操作2130,在操作2125确定的预测误差参数小于阈值,则控制传递到操作2135,并且可以通过参照第一点云数据集帧2210和操作2120中生成的3D运动向量2214,对帧2214进行编码来压缩第二点云数据集帧2212。在操作2140,编码的第二点云数据集帧被存储在存储器中。相反,如果在操作2130,在操作2125确定的预测误差参数不小于阈值,则控制传递到操作2145,并且第二点云数据集帧2212可以被存储在存储器中。
在一些示例中,可以通过设置用于体素帧的整个序列的固定值来确定阈值。作为替选,阈值可以是动态的。该解决方案可以尝试瞄准压缩比率或比特率。可以通过起始阈值以及然后考虑得到的压缩帧大小来压缩帧。如果帧大小太高,则可以使用不同的阈值再次尝试压缩。可以重复该处理,直到实现目标压缩比率。
可选地,在操作2150,3D离散余弦变换可以应用于点云数据集中的至少一些数据,以进一步压缩数据。
可以在所收集的点云数据集的进展中对于随后点云数据集帧重复操作2115至2150。理论上,可以根据第一点云数据集帧2210与序列中的其余帧中的每一个之间的运动向量和第一点云数据集帧2210,对点云数据集的整个序列进行编码。
点云数据的多分辨率流送
各种情况可能在点云存储设备与显示器之间的带宽和/或时延方面产生限制。在一些示例中,用于解决这些问题的技术至少部分地基于确定点云存储设备与显示器之间的传送信道的带宽来实现点云数据的多分辨率流送。参照图23-图25描述各种技术。在一些示例中,可以通过参照图20描述的传送单元2022实现图23-图25中描绘的操作。
参照图23,在操作2310,确定点云存储设备与显示设备之间的传送信道的可用带宽。在一些示例中,点云存储设备可以作为处理设备(例如,图1或图20中描绘的数据处理设备)而实现为计算设备。显示设备可以实现为常规计算显示设备,或在一些示例中实现为头戴式显示器(HMD)。点云存储设备之间的传送信道可以包括有线连接或无线连接。在一些示例中,传送单元2022可以周期性地查询管理点云存储设备与显示设备之间的通信的输入/输出(I/O)接口,以确定传送信道的可用带宽。在其他示例中,传送单元2022可以使用关于点云存储设备与显示设备之间发送的数据的数据传送度量计算可用带宽。
如果在操作2315,可用带宽小于阈值带宽,则控制传递到操作2320,并且传送单元2022使用第一数据编码协议将点云数据从点云存储设备传送到显示设备。在一些示例中,第一个数据编码协议可以包括:将完整点云数据集从点云存储设备传送到显示设备。
相反,如果在操作2315,可用带宽不小于阈值带宽,则控制传递到操作2325,并且传送单元2022使用对于带宽受限的环境可以是适当的第二数据编码协议将点云数据从点云存储设备传送到显示设备。参照图24-图26描述的操作提供第二数据编码协议的三个不同示例。
参照图23,在第一示例中,传送单元2022可以接收(操作2410)点云数据集中的感兴趣区域的指示。例如,头戴式显示器可以包括眼睛跟踪技术,其监视用户的眼睛在场景中聚焦的位置,由此识别场景中的感兴趣区域。用于感兴趣区域的坐标可以从显示设备发送到传送单元2022。例如,基于视角,传送单元可以确定从发送自点云存储设备和显示设备的点云数据可能忽略了一个或多个观看平面。在操作2415,传送单元2022可以使用坐标以将仅用于感兴趣区域的点云数据从点云存储设备传送到显示设备。
参照图25,在第二示例中,传送单元2022可以按低分数率对点云数据集的一部分进行编码,以形成紧凑数据集合。在操作2515,传送单元可以在第一传输中将紧凑数据集从点云存储设备传送到显示设备。在操作2520,传送单元2022可以按完全分辨率比例对在操作2510编码的点云数据集的该部分进行编码,并且在操作2525,传送单元可以将完全分解率数据集传送到显示设备。图25中描绘的操作可以在场景中的用户的焦点区域突然改变的情形下找到实用性。紧凑数据集为显示设备提供足够的细节,以及时地以低分辨率渲染区域。然后,完全数据集可以用于按完全分辨率渲染场景。可能较好的是,首先以完全分辨率发送数据的一部分,然后按低分辨率发送数据的该部分。然而,关键构思是以多分辨率对图像进行编码,因此将较好的是,不指定顺序。
参照图26,在第三示例中,传送单元2022可以在点云数据集中确定(操作2610)一个或多个所预测的感兴趣区域。例如,传送单元可以如上所述从显示设备接收眼睛跟踪数据,并且基于眼睛跟踪数据,可以预测将吸引用户注意的场景中的感兴趣区域。在此的构思是:基于用户的眼睛轨迹预测她/他的将观看的位置,例如,如果用户已经正将他的头部旋传递到正确的方向,则传送可以使用先前少数帧的眼睛轨迹预测下一位置。在另一示例中,传送单元可以分析用于场景中的对象的运动向量,以预测哪些对象将吸引用户的注意力。一旦识别一个或多个感兴趣区域,传送单元2022可以对用于所预测的感兴趣区域的点云数据赋优先级,以用于从点云存储设备传送到显示设备。例如,可以在点云数据集中的任何其余数据之前发送点云数据集中的所预测的感兴趣区域。此外,如在下面所述的,所预测的感兴趣区域可以按高分辨率编码,而其余部分按低分辨率编码。
因此,图23-图26中描绘的操作提供不同的示例以实现点云数据的多分辨率流送,以容纳带宽受限的环境。
用于多维捕获和/或渲染内容的可扩展压缩和解压的层级架构
在一些示例中,提供用于实现用于多维捕获(例如,视频)和/或渲染(例如,由设备生成)内容的可扩展压缩和解压的层级架构的技术。宽泛地说,对场景的分量的各种维度进行编码,使得可以基于一个或多个操作参数以一个或多个离散质量等级发送定义维度的数据。参照图27-图28描述各种技术。在一个示例中,可以通过参照图20描述的层级编码单元2023实现图27-图28中描绘的操作。
参照图27-图28,在操作2710,层级编码单元2023识别定义场景中的多个分量的点云数据。例如,分量可以包括一个或多个图像捕获设备(即,相机)捕获的对象和/或插入到场景中(即,由电子设备渲染到场景中)的对象。在图28中所描绘的示例中,分析点云数据2810,以识别定义第一分量2820、第二分量2830,依此类推上至第N分量2840的点云数据。
在操作2715,层级编码单元2023定义与场景关联的多个维度。在一些示例中,维度可以与在操作2710中识别的分量关联。在图28中所描绘的示例中,维度包括几何分辨率、纹理分辨率、时间采样分辨率和残差量化参数。
在操作2720,为操作2715中定义的各种维度定义离散数量N的质量等级。例如,数量N的用于每个维度的质量等级可以表示渲染管线用以增强与分量关联的维度的质量的精细化轮次的数量。因此,零(0)的质量等级表示分量的粗渲染。一(1)的质量等级表示用于改进维度的质量的单个精细化轮次。二(2)的质量等级表示用于改进维的质量的两个精细化轮次。三(3)的质量等级表示用于改进维度的质量的三个精细化轮次。在图28中所描绘的示例中,可以按四个不同的质量等级表示每个维度。
在操作2725,层级编码单元2023将定义多个分量的点云数据封装为包含离散数量N的子比特流的父比特流。子比特流中的每一个以在操作2720中定义的N个离散质量等级之一完整地定义各种分量的维度。在一些示例中,数据被封装,使得子比特流是层级的。因此,第一子比特流包括以零(0)的质量等级渲染分量所需的点云数据。第二子比特流包括第一子比特流和以一(1)的质量等级渲染分量所需的附加点云数据。第三子比特流包括第二子比特流和以二(2)的质量等级渲染分量所需的附加点云数据。父比特流包括第三子比特流和以三(3)的质量等级渲染分量所需的点云数据。参照图28,作为示例,定义分量2820、2830、2840的点云数据如上所述以层级方式封装为比特流2850。不同的维度可以按任何顺序封装为比特流。
在操作2730,层级编码单元2023基于一个或多个参数将比特流数据编码为操作2725中定义的子比特流之一或父比特流。参照图28,层级编码器2860将用于比特流2850中的每个分量维度的数据编码为对应于操作2720中定义的质量等级(即,等级0、等级1、等级2、等级3)的四个不同比特流之一。
参数的一个示例可以是包括用于比特流数据的解码器的电子设备的功率状态。例如,比特流数据可以发送到头戴式显示器(HMD)以用于解码和后续渲染。如果头戴式显示器(HMD)(例如,归因于低电池)在低功率状态下正进行操作,则头戴式显示器(HMD)可以将指示发送到层级编码单元2023,以按等级0或等级1发送数据,以减少渲染处理中的功耗。
参数的另一示例可以是与包括用于比特流数据的解码器电子设备的通信连接的可用带宽。例如,如果通信连接具有高可用带宽,则层级编码单元2023可以发送父比特流以用于解码。反之,如果通信中的可用带宽是有限的,则层级编码单元2023可以发送子比特流之一以用于解码。
参数的另一示例可以是包括用于比特流数据的解码器的电子设备的性能参数。例如,比特流数据可以发送到头戴式显示器(HMD)以用于解码和后续渲染。如果头戴式显示器(HMD)具有用于处理图形内容的高能力,则层级编码单元2023可以发送父比特流以用于解码。反之,如果头戴式显示器(HMD)具有用于处理图形内容的有限能力,则层级编码单元2023可以发送子比特流之一以用于解码。
在一些示例中,编码设置可以是静态的。在其他示例中,编码设置可以随着各个参数改变而动态地变化。因此,随着包括用于比特流的解码器的电子设备的功率状态或处理能力改变,或随着可用带宽改变,可以调整比特流内容的质量等级。
图29是根据实施例的包括图形处理器2904的计算设备2900的框图。计算设备2900可以是如本文所述的计算设备(例如,图1中的数据处理系统100)。计算设备2900也可以是或包括于通信设备(例如,机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球位置系统(GPS)的设备等)内。计算设备2900也可以是或包括于移动计算设备(例如,蜂窝电话、智能电话、个人数字助理(PDA)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、可穿戴设备(例如,眼镜、手表、手镯、智能卡、珠宝、服装物品等)、媒体播放器等)内。例如,在一个实施例中,计算设备2900包括采用在单个芯片上集成计算设备2900的各种硬件和/或软件组件的集成电路(“IC”)(例如,片上系统(“SoC”或“SOC”))的移动计算设备。
计算设备2900包括图形处理器2904。图形处理器2904表示本文描述的任何图形处理器。图形处理器包括一个或多个图形引擎、图形处理器核以及如本文所述的其他图形执行资源。可以通过包括但不限于执行单元、着色器引擎、分段处理器、顶点处理器、流送多处理器、图形处理器聚类或适合于处理图形和图像资源的计算资源的任何集合的形式呈现这些图形执行资源。
在一个实施例中,图形处理器2904包括缓存2914,其可以是单个缓存或划分为缓存存储器的多个分段,包括但不限于任何数量的L1、L2、L3或L4缓存、渲染缓存、深度缓存、采样器缓存和/或着色器单元缓存。在一个实施例中,图形处理器2904包括调度器2924,其可以是图16的调度器单元1622的变体或本文描述的其他调度器逻辑。除了包括用于执行如本文所述的图形处理和通用指令执行的硬件逻辑的GPGPU引擎2944之外,图形处理器2904还可以附加地包括命令流送器2926、线程调度器2934和屏障/同步逻辑2936。
如所示,在一个实施例中,并且除了图形处理器2904之外,计算设备2900还可以包括任何数量和类型的硬件组件和/或软件组件,包括但不限于应用处理器2906、存储器2908和输入/输出(I/O)源2910。应用处理器2906可以与硬件图形管线进行交互、如参照图3所示,以共享图形管线功能。处理后的数据被存储在硬件图形管线的缓冲区中,并且状态信息被存储在存储器2908中。所得数据可以被传送到显示器控制器,以用于经由显示设备(例如,图3的显示设备323)输出。显示设备可以是各种类型的(例如,阴极射线管(CRT)、薄膜晶体管(TFT)、液晶显示器(LCD)、有机发光二极管(OLED)阵列等),并且可以被配置为经由图形用户界面向用户显示信息。
应用处理器2906可以包括一个或多个处理器(例如,图1的处理器102),并且可以是至少部分地用于执行计算设备2900的操作系统(OS)2902的中央处理单元(CPU)。OS 2902可以充当计算机设备2900的硬件和/或物理资源与一个或多个用户之间的接口。OS 2902可以包括图形驱动器逻辑2922(例如,图10的用户模式图形驱动器1026和/或内核模式图形驱动器1029)。
预期在一些实施例中,图形处理器2904可以作为应用处理器2906的一部分(例如,物理CPU封装的一部分)而存在,在此情况下,虽然存储器2908的至少一部分可以专用于图形处理器2904,但应用处理器2906和图形处理器2904可以共享存储器2908的至少一部分,或者图形处理器2904可以具有存储器的单独存储。存储器2908可以包括预先分配的缓冲区区域(例如,帧缓冲区);然而,本领域普通技术人员应该理解,实施例不限于此,并且可以使用下部图形管线可访问的任何存储器。存储器2908可以包括各种形式的随机存取存储器(RAM)(例如,SDRAM、SRAM等),其包括使用图形处理器2904来渲染桌面或3D图形场景的应用。存储器控制器可以用于访问存储器2908中的数据并且将数据转发到图形处理器2904,以用于图形管线处理。可以使得存储器2908对计算设备2900内的其他组件是可用的。例如,从计算设备2900的各种I/O源2910接收的任何数据(例如,输入图形数据),在软件程序或应用的实现方式中,在一个或多个处理器(例如,应用处理器2906)对其进行操作之前,可以临时排队到存储器2908中。类似地,软件程序确定应通过计算系统接口之一从计算设备2900发送到外部实体或存储到内部存储元件中的数据,在其被发送或存储之前,常常临时排队在存储器2908中。
I/O源可以包括例如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器、网络设备等的设备。此外,I/O源2910可以包括为了将数据传送去往和/或来自计算设备2900(例如,网络适配器)或为了计算设备2900内的大规模非易失性存储(例如,硬盘驱动器)而实现的一个或多个I/O设备。用户输入设备,包括字母数字和其他键,可以用于将信息和命令选择传递到图形处理器2904。另一类型的用户输入设备是光标控件(例如,鼠标、轨迹球、触摸屏、触摸板或光标方向键),以将方向信息和命令选择传递到GPU并且控制显示设备上的光标移动。可以采用计算机设备2900的相机和麦克风阵列来观测手势,记录音频和视频,以及接收和发送视觉和音频命令。
被配置作为网络接口的I/O源2910提供对网络(例如,LAN、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云网络、蜂窝或移动网络(例如,第3代(3G)、第4代(4G)等)、内联网、互联网等)的接入。网络接口可以包括例如具有一个或多个天线的无线网络接口。网络接口还可以包括例如有线网络接口,以经由网络缆线(其可以是例如以太网缆线、同轴缆线、光纤缆线、串行缆线或并行缆线)与远端设备进行通信。
网络接口可以例如通过符合IEEE 802.11标准提供对LAN的接入,和/或无线网络接口可以例如通过符合蓝牙标准提供对个域网的接入。还可以支持其他无线网络接口和/或协议,包括标准的先前版本和后续版本。除了或代替经由无线LAN标准的通信之外,网络接口可以使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议,码分多址(CDMA)协议和/或任何其他类型的无线通信协议提供无线通信。
应理解,对于特定实现方式,比上述示例更少或更多配备的系统可以是优选的。因此,计算设备2900的配置可以取决于多种因素(例如,价格约束、性能要求、技术改进或其他情况)随着实现方式而变化。示例包括(但不限于)移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手机、单向寻呼机、双向寻呼机、传信设备、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器群、web服务器、网络服务器、互联网服务器、工作站、迷你计算机、大型计算机、超级计算机、网络电器、web电器、分布式计算系统、多处理器系统、基于处理器的系统、消费者电子产品、可编程消费者电子产品、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线网络控制器、路由器、集线器、网关、网桥、交换机、机器或其组合。
实施例可以实现为以下的任何一个或组合:使用主板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并且由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可以包括例如软件或硬件和/或软件和硬件的组合。
实施例可以例如提供为计算机程序产品,其可以包括一个或多个机器可读介质,其上存储有机器可执行指令,指令当由一个或多个机器(例如,计算机、计算机的网络或其他电子设备)执行时可以使一个或多个机器根据本文描述的实施例执行操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(致密盘-只读存储器)和磁性光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存或适合于存储机器可执行指令的其他类型的介质/机器可读介质。
此外,实施例可以下载为计算机程序产品,其中,程序可以经由通信链路(例如,调制解调器和/或网络连接)通过载波或其他传播介质中所体现和/或由其调制的一个或多个数据信号从远端计算机(例如,服务器)传送到请求计算机(例如,客户端)。
以下条款和/或示例属于其具体实施例或示例。可以在一个或多个实施例中的任何地方使用示例中的细节。不同实施例或示例的各种特征可以与所包括的一些特征以及排除的其他特征不同地组合,以适合各种不同的应用。示例可以包括例如以下的主题:方法;用于执行方法的动作的模块;至少一种机器可读介质,包括指令,指令当由机器执行时使机器执行方法的动作;或根据本文描述的实施例和示例的装置或系统。各种组件可以是用于执行所描述的操作或功能的模块。
示例1是一种方法,包括:将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵;确定至少用于所述块矩阵中的块子集的至少一个三维(3D)运动向量;通过将所述至少一个3D运动向量应用于所述块矩阵中的块子集,生成表示第二时间点时的所述三维空间的预测的所预测的第二点云数据集帧;比较所预测的第二点云数据集帧与表示第二时间点时的所述三维空间的预测的第二点云数据集帧,以生成预测误差参数;以及当所述预测误差因子小于误差阈值时,根据所述第一点云数据集帧和所述至少一个三维(3D)运动向量,对所述第二点云数据集帧进行编码,以产生编码的第二点云数据集帧。
示例2可以包括示例1所述的主题,其中,所述块矩阵中的每个块包括至少一个体素。
示例3可以包括示例1-2中任一项所述的主题,还包括:将编码的点云数据集帧存储在存储器中。
示例4可以包括示例1-3中任一项所述的主题,还包括:应用三维(3D)离散余弦变换,以进一步压缩编码的第二点云数据集。
示例5是一种非瞬时性机器可读介质,存储有指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵;确定至少用于所述块矩阵中的块子集的至少一个三维(3D)运动向量;通过将所述至少一个3D运动向量应用于所述块矩阵中的块子集,生成表示第二时间点时的所述三维空间的预测的所预测的第二点云数据集帧;比较所预测的第二点云数据集帧与表示第二时间点时的所述三维空间的预测的第二点云数据集帧,以生成预测误差参数;以及当所述预测误差因子小于误差阈值时,根据所述第一点云数据集帧和所述至少一个三维(3D)运动向量,对所述第二点云数据集帧进行编码,以产生编码的第二点云数据集帧。
示例6可以包括示例5所述的主题,其中,所述块矩阵中的每个块包括至少一个体素。
示例7可以包括示例5-6中任一项所述的主题,所述操作附加地包括:将编码的点云数据集帧存储在存储器中。
示例8可以包括示例5-7中任一项所述的主题,所述操作附加地包括:应用三维(3D)离散余弦变换,以进一步压缩编码的第二点云数据集。
示例9是一种装置,包括处理器,用于:将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵,确定至少用于所述块矩阵中的块子集的至少一个三维(3D)运动向量,通过将所述至少一个3D运动向量应用于所述块矩阵中的块子集生成表示第二时间点时的所述三维空间的预测的所预测的第二点云数据集帧,比较所预测的第二点云数据集帧与表示第二时间点时的所述三维空间的预测的第二点云数据集帧,以生成预测误差参数,以及当所述预测误差因子小于误差阈值时,根据所述第一点云数据集帧和所述至少一个三维(3D)运动向量,对所述第二点云数据集帧进行编码,以产生编码的第二点云数据集帧;和存储器,以通信方式耦合到所述处理器。
示例10可以包括示例9所述的主题,其中,所述块矩阵中的每个块包括至少一个体素。
示例11可以包括示例9-10中任一项所述的主题,所述处理器用于:将编码的点云数据集帧存储在存储器中。
示例12可以包括示例9-11中任一项所述的主题,所述处理器用于:应用三维(3D)离散余弦变换,以进一步压缩编码的第二点云数据集。
示例13是一种方法,包括:在以通信方式耦合到存储点云数据集的点云存储设备的处理器中,确定所述点云存储设备与显示设备之间的传送信道的可用带宽;以及至少部分地基于所述传送信道的可用带宽,使用用于将点云数据从所述存储设备传送到所述显示设备的第一数据编码协议或用于将点云数据从所述存储设备传送到所述显示设备的第二数据编码协议之一,将所述点云数据集中的点云数据的至少一部分从所述点云存储设备传送到所述显示设备。
示例14可以包括示例13所述的主题,还包括:在以通信方式耦合到所述点云存储设备的处理器中,接收所述点云数据集中的感兴趣区域的指示;以及经由所述传送信道传送仅用于所述点云数据集合中的感兴趣区域的点云数据。
示例15可以包括示例13-14中任一项所述的主题,还包括:以低分辨率对点云数据的一部分进行编码,以生成紧凑点云数据集;在第一传输中,经由所述传送信道传送所述紧凑点云数据集;以及以完全分辨率对点云数据的所述一部分进行编码,以生成完全点云数据集;以及在第二传输中,经由所述传送信道传送所述完全点云数据集。
示例16可以包括示例13-15中任一项所述的主题,还包括:在以通信方式耦合到所述点云存储设备的处理器中,确定所述点云数据集中的所预测的感兴趣区域;以及经由所述传送信道传送用于所述点云数据集中的所预测的感兴趣区域的点云数据。
示例17是一种非瞬时性机器可读介质,存储有指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:在以通信方式耦合到存储点云数据集的点云存储设备的处理器中,确定所述点云存储设备与显示设备之间的传送信道的可用带宽;以及至少部分地基于所述传送信道的可用带宽,使用用于将点云数据从所述存储设备传送到所述显示设备的第一数据编码协议或用于将点云数据从所述存储设备传送到所述显示设备的第二数据编码协议之一,将所述点云数据集中的点云数据的至少一部分从所述点云存储设备传送到所述显示设备。
示例18可以包括示例16所述的主题,所述操作附加地包括:在以通信方式耦合到所述点云存储设备的处理器中,接收所述点云数据集中的感兴趣区域的指示;以及经由所述传送信道传送仅用于所述点云数据集中的感兴趣区域的点云数据。
示例19可以包括示例17-18中任一项所述的主题,所述操作附加地包括:以低分辨率对点云数据的一部分进行编码,以生成紧凑点云数据集;在第一传输中,经由所述传送信道传送所述紧凑点云数据集;以完全分辨率对点云数据的所述一部分进行编码,以生成完全点云数据集;以及在第二传输中,经由所述传送信道传送所述完全点云数据集。
示例20可以包括示例17-19中任一项所述的主题,所述操作附加地包括:在以通信方式耦合到所述点云存储设备的处理器中,确定所述点云数据集中的所预测的感兴趣区域;以及经由所述传送信道传送用于所述点云数据集中的所预测的感兴趣区域的点云数据。
示例21是一种装置,包括:处理器,以通信方式耦合到存储点云数据集的点云存储设备,所述处理器用于:确定所述点云存储设备与显示设备之间的传送信道的可用带宽,以及至少部分地基于所述传送信道的可用带宽,使用用于将点云数据从所述存储设备传送到所述显示设备的第一数据编码协议或用于将点云数据从所述存储设备传送到所述显示设备的第二数据编码协议之一,将所述点云数据集中的点云数据的至少一部分从所述点云存储设备传送到所述显示设备;和存储器,以通信方式耦合到所述处理器。
示例22可以包括示例21所述的主题,所述处理器用于:在以通信方式耦合到所述点云存储设备的处理器中,接收所述点云数据集中的感兴趣区域的指示;以及经由所述传送信道传送仅用于所述点云数据集中的感兴趣区域的点云数据。
示例23可以包括示例21-22中任一项所述的主题,所述处理器用于:以低分辨率对点云数据的一部分进行编码,以生成紧凑点云数据集;在第一传输中,经由所述传送信道传送所述紧凑点云数据集;以完全分辨率对点云数据的所述一部分进行编码,以生成完全点云数据集;以及在第二传输中,经由所述传送信道传送所述完全点云数据集。
示例24可以包括示例21-23中任一项所述的主题,所述处理器用于:确定所述点云数据集中的所预测的感兴趣区域;以及经由所述传送信道传送用于所述点云数据集中的所预测的感兴趣区域的点云数据。
示例25是一种方法,包括:在点云数据集中识别定义场景的多个分量的点云数据;定义与所述场景关联的多个维度,所述维度表征所述多个分量的属性;定义离散数量N的用于所述多个维度的质量等级;将定义所述多个分量的点云数据封装为包含所述离散数量N的子比特流的父比特流,每个子比特流按离散质量等级完整地定义所述分量;以及至少部分地基于一个或多个参数,将所述比特流数据编码为所述子比特流之一或所述父比特流。
示例26可以包括示例25所述的主题,还包括:至少部分地基于包括解码器的电子设备的功率状态,将所述父比特流或子比特流之一发送到所述解码器。
示例27可以包括示例25-26中任一项所述的主题,还包括:至少部分地基于与包括解码器的电子设备的通信连接的可用带宽,将所述父比特流或子比特流之一发送到所述解码器。
示例28可以包括示例25-27中任一项所述的主题,还包括:至少部分地基于包括解码器的电子设备的性能参数,将所述父比特流或子比特流之一发送到所述解码器。
示例29是一种非瞬时性机器可读介质,存储有指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:在点云数据集中识别定义场景的多个分量的点云数据;定义与所述场景关联的多个维度,所述维度表征所述多个分量的属性;定义离散数量N的用于所述多个维度的质量等级;将定义所述多个分量的点云数据封装为包含所述离散数量N的子比特流的父比特流,每个子比特流按离散质量等级完整地定义所述分量;以及至少部分地基于一个或多个参数,将所述比特流数据编码为所述子比特流之一或所述父比特流。
示例30可以包括示例29所述的主题,所述操作附加地包括:至少部分地基于包括解码器的电子设备的功率状态,将所述父比特流或子比特流之一发送到所述解码器。
示例31可以包括示例29-30中任一项所述的主题,所述操作附加地包括:至少部分地基于与包括解码器的电子设备的通信连接的可用带宽,将所述父比特流或子比特流之一发送到所述解码器。
示例32可以包括示例29-31中任一项所述的主题,所述操作附加地包括:至少部分地基于包括解码器的电子设备的性能参数,将所述父比特流或子比特流之一发送到所述解码器。
示例33是一种装置,包括:处理器,以通信方式耦合到存储点云数据集合的点云存储设备,所述处理器:识别在所述点云数据集中定义场景的多个分量的点云数据,定义与所述场景关联的多个维度,所述维度表征所述多个分量的属性,定义离散数量N的用于所述多个维度的质量等级,将定义所述多个分量的点云数据封装为包含所述离散数量N的子比特流的父比特流,每个子比特流按离散质量等级完整地定义所述分量,以及至少部分地基于一个或多个参数将所述比特流数据编码为所述子比特流之一或所述父比特流;和存储器,以通信方式耦合到所述处理器。
示例34可以包括示例33所述的主题,所述处理器用于:至少部分地基于包括解码器的电子设备的功率状态,将所述父比特流或子比特流之一发送到所述解码器。
示例35可以包括示例33-34中任一项所述的主题,所述处理器用于:至少部分地基于与包括解码器的电子设备的通信连接的可用带宽,将所述父比特流或子比特流之一发送到所述解码器。
示例36可以包括示例33-35中任一项所述的主题,所述处理器用于:至少部分地基于包括解码器的电子设备的性能参数,将所述父比特流或子比特流之一发送到所述解码器。
本领域技术人员根据前面的描述应理解,可以通过各种形式来实现实施例的广泛技术。因此,虽然已经结合实施例的特定示例描述了实施例,但实施例的真实范围并非受限于此,因为在研究附图、说明书和所附权利要求后,其它修改对于本领域技术人员将变得显而易见。

Claims (20)

1.一种方法,包括:
将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵;
确定至少用于所述块矩阵中的块子集的至少一个三维(3D)运动向量;
通过将所述至少一个3D运动向量应用于所述块矩阵中的块子集,生成表示第二时间点时的所述三维空间的预测的所预测的第二点云数据集帧;
比较所预测的第二点云数据集帧与表示第二时间点时的所述三维空间的预测的第二点云数据集帧,以生成预测误差参数;以及
当所述预测误差因子小于误差阈值时,根据所述第一点云数据集帧和所述至少一个三维(3D)运动向量,对所述第二点云数据集帧进行编码,以产生编码的第二点云数据集帧。
2.如权利要求1所述的方法,其中:
所述块矩阵中的每个块包括至少一个体素。
3.如权利要求1所述的方法,还包括:
将编码的点云数据集帧存储在存储器中。
4.如权利要求1所述的方法,还包括:
应用三维(3D)离散余弦变换,以进一步压缩编码的第二点云数据集。
5.一种装置,包括:
处理器,用于:
将表示第一时间点时的三维空间的第一点云数据集帧划分为块矩阵;
确定至少用于所述块矩阵中的块子集的至少一个三维(3D)运动向量;
通过将所述至少一个3D运动向量应用于所述块矩阵中的块子集,生成表示第二时间点时的所述三维空间的预测的所预测的第二点云数据集帧;
比较所预测的第二点云数据集帧与表示第二时间点时的所述三维空间的预测的第二点云数据集帧,以生成预测误差参数;以及
当所述预测误差因子小于误差阈值时,根据所述第一点云数据集帧和所述至少一个三维(3D)运动向量,对所述第二点云数据集帧进行编码,以产生编码的第二点云数据集帧;和
存储器,以通信方式耦合到所述处理器。
6.如权利要求5所述的装置,其中:
所述块矩阵中的每个块包括至少一个体素。
7.如权利要求5所述的装置,所述处理器用于:
将编码的点云数据集帧存储在存储器中。
8.如权利要求5所述的装置,所述处理器用于:
应用三维(3D)离散余弦变换,以进一步压缩编码的第二点云数据集。
9.一种方法,包括:
在以通信方式耦合到存储点云数据集的点云存储设备的处理器中,确定所述点云存储设备与显示设备之间的传送信道的可用带宽;以及
至少部分地基于所述传送信道的可用带宽,使用用于将点云数据从所述存储设备传送到所述显示设备的第一数据编码协议或用于将点云数据从所述存储设备传送到所述显示设备的第二数据编码协议之一,将所述点云数据集中的点云数据的至少一部分从所述点云存储设备传送到所述显示设备。
10.如权利要求9所述的方法,其中,所述第二数据编码协议包括:
在以通信方式耦合到所述点云存储设备的处理器中,接收所述点云数据集中的感兴趣区域的指示;以及
经由所述传送信道传送仅用于所述点云数据集中的感兴趣区域的点云数据。
11.如权利要求9所述的方法,其中,所述第二数据编码协议包括:
以低分辨率对点云数据的一部分进行编码,以生成紧凑点云数据集;
在第一传输中,经由所述传送信道传送所述紧凑点云数据集;
以完全分辨率对点云数据的所述一部分进行编码,以生成完全点云数据集;以及
在第二传输中,经由所述传送信道传送所述完全点云数据集。
12.如权利要求9所述的方法,其中,所述第二数据编码协议包括:
在以通信方式耦合到所述点云存储设备的处理器中,确定所述点云数据集中的所预测的感兴趣区域;以及
经由所述传送信道传送用于所述点云数据集中的所预测的感兴趣区域的点云数据。
13.一种装置,包括:
处理器,以通信方式耦合到存储点云数据集的点云存储设备,所述处理器用于:
确定所述点云存储设备与显示设备之间的传送信道的可用带宽;以及
至少部分地基于所述传送信道的可用带宽,使用用于将点云数据从所述存储设备传送到所述显示设备的第一数据编码协议或用于将点云数据从所述存储设备传送到所述显示设备的第二数据编码协议之一,将所述点云数据集中的点云数据的至少一部分从所述点云存储设备传送到所述显示设备;和
存储器,以通信方式耦合到所述处理器。
14.如权利要求13所述的装置,所述处理器用于:
接收所述点云数据集中的感兴趣区域的指示;以及
经由所述传送信道传送仅用于所述点云数据集中的感兴趣区域的点云数据。
15.如权利要求13所述的装置,所述处理器用于:
以低分辨率对用于所述感兴趣区域的点云数据的一部分进行编码,以生成紧凑点云数据集;
在第一传输中,经由所述传送信道传送所述紧凑点云数据集;以及
以完全分辨率对点云数据的所述一部分进行编码,以生成完全点云数据集;
在第二传输中,经由所述传送信道传送所述完全点云数据集。
16.如权利要求13所述的装置,所述处理器用于:
确定所述点云数据集中的所预测的感兴趣区域;以及
经由所述传送信道传送用于所述点云数据集中的所预测的感兴趣区域的点云数据。
17.一种方法,包括:
在点云数据集中识别定义场景的多个分量的点云数据;
定义与所述场景关联的多个维度,所述维度表征所述多个分量的属性;
定义离散数量N的用于所述多个维度的质量等级;
将定义所述多个分量的点云数据封装为包含所述离散数量N的子比特流的父比特流,每个子比特流按离散质量等级完整地定义所述分量;以及
至少部分地基于一个或多个参数,将所述比特流数据编码为所述子比特流之一或所述父比特流。
18.如权利要求17所述的方法,还包括:
至少部分地基于包括解码器的电子设备的功率状态,将所述父比特流或子比特流之一发送到所述解码器。
19.如权利要求17所述的方法,还包括:
至少部分地基于与包括解码器的电子设备的通信连接的可用带宽,将所述父比特流或子比特流之一发送到所述解码器。
20.如权利要求17所述的方法,还包括:
至少部分地基于包括解码器的电子设备的性能参数,将所述父比特流或子比特流之一发送到所述解码器。
CN201910576457.XA 2018-07-31 2019-06-28 点云视点和可扩展压缩/解压 Pending CN110796724A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/050,468 2018-07-31
US16/050,468 US11049266B2 (en) 2018-07-31 2018-07-31 Point cloud viewpoint and scalable compression/decompression

Publications (1)

Publication Number Publication Date
CN110796724A true CN110796724A (zh) 2020-02-14

Family

ID=69168113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910576457.XA Pending CN110796724A (zh) 2018-07-31 2019-06-28 点云视点和可扩展压缩/解压

Country Status (3)

Country Link
US (1) US11049266B2 (zh)
CN (1) CN110796724A (zh)
DE (1) DE102019117514A1 (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112509107A (zh) * 2020-12-03 2021-03-16 西安电子科技大学 一种点云属性重着色方法、装置及编码器
US11049266B2 (en) 2018-07-31 2021-06-29 Intel Corporation Point cloud viewpoint and scalable compression/decompression
US11151424B2 (en) 2018-07-31 2021-10-19 Intel Corporation System and method for 3D blob classification and transmission
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
CN113766343A (zh) * 2020-06-01 2021-12-07 辉达公司 使用一个或更多个神经网络进行视频合成
US11212506B2 (en) 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
CN114079781A (zh) * 2020-08-18 2022-02-22 腾讯科技(深圳)有限公司 一种点云媒体的数据处理方法、装置、设备及存储介质
US11284118B2 (en) 2018-07-31 2022-03-22 Intel Corporation Surface normal vector processing mechanism
CN115150384A (zh) * 2021-03-31 2022-10-04 腾讯科技(深圳)有限公司 点云编解码方法、装置、计算机可读介质及电子设备
CN115243053A (zh) * 2021-04-22 2022-10-25 腾讯科技(深圳)有限公司 点云编解码方法及相关设备
CN115428467A (zh) * 2020-04-14 2022-12-02 Lg电子株式会社 点云数据发送设备和方法、点云数据接收设备和方法
WO2023116188A1 (en) * 2021-12-20 2023-06-29 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/decoding point cloud geometry data sensed
US11800121B2 (en) 2018-10-10 2023-10-24 Intel Corporation Point cloud coding standard conformance definition in computing environments
US11863731B2 (en) 2018-07-31 2024-01-02 Intel Corporation Selective packing of patches for immersive video

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10839530B1 (en) * 2018-09-04 2020-11-17 Apple Inc. Moving point detection
WO2021025392A1 (ko) * 2019-08-02 2021-02-11 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법
US20210245047A1 (en) 2020-02-10 2021-08-12 Intel Corporation Continuum architecture for cloud gaming
WO2022050650A1 (ko) * 2020-09-03 2022-03-10 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11706450B2 (en) 2020-09-18 2023-07-18 Samsung Electronics Co., Ltd. Partial decoding and reconstruction of a video-based point cloud compression bitstream
WO2022092852A1 (ko) * 2020-10-30 2022-05-05 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US20230386088A1 (en) * 2020-10-30 2023-11-30 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
EP4329311A1 (en) * 2021-04-22 2024-02-28 LG Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US11683523B2 (en) * 2021-07-07 2023-06-20 Tencent America LLC Group of pictures based patch packing for video based point cloud coding
CN116091533B (zh) * 2023-01-03 2024-05-31 中国人民解放军海军航空大学 一种Qt开发环境下的激光雷达目标演示与提取方法

Family Cites Families (9)

* 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
WO2014075236A1 (en) * 2012-11-14 2014-05-22 Mediatek Singapore Pte. Ltd. Methods for residual prediction with pseudo residues in 3d video coding
JP2014241579A (ja) * 2013-05-13 2014-12-25 株式会社東芝 映像圧縮装置
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
US10165300B2 (en) * 2016-10-28 2018-12-25 Blackberry Limited 3D transform and inter prediction for video coding
EP3610647B1 (en) * 2017-04-26 2021-12-08 Huawei Technologies Co., Ltd. Apparatuses and methods for encoding and decoding a panoramic video signal
US11769275B2 (en) * 2017-10-19 2023-09-26 Interdigital Vc Holdings, Inc. Method and device for predictive encoding/decoding of a point cloud
US11049266B2 (en) 2018-07-31 2021-06-29 Intel Corporation Point cloud viewpoint and scalable compression/decompression

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568182B2 (en) 2018-07-31 2023-01-31 Intel Corporation System and method for 3D blob classification and transmission
US11049266B2 (en) 2018-07-31 2021-06-29 Intel Corporation Point cloud viewpoint and scalable compression/decompression
US11151424B2 (en) 2018-07-31 2021-10-19 Intel Corporation System and method for 3D blob classification and transmission
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US11758106B2 (en) 2018-07-31 2023-09-12 Intel Corporation Reduced rendering of six-degree of freedom video
US11212506B2 (en) 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
US11284118B2 (en) 2018-07-31 2022-03-22 Intel Corporation Surface normal vector processing mechanism
US11863731B2 (en) 2018-07-31 2024-01-02 Intel Corporation Selective packing of patches for immersive video
US11750787B2 (en) 2018-07-31 2023-09-05 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US11800121B2 (en) 2018-10-10 2023-10-24 Intel Corporation Point cloud coding standard conformance definition in computing environments
CN115428467B (zh) * 2020-04-14 2024-03-08 Lg电子株式会社 点云数据发送设备和方法、点云数据接收设备和方法
CN115428467A (zh) * 2020-04-14 2022-12-02 Lg电子株式会社 点云数据发送设备和方法、点云数据接收设备和方法
US11934959B2 (en) 2020-06-01 2024-03-19 Nvidia Corporation Video synthesis using one or more neural networks
CN113766343B (zh) * 2020-06-01 2024-04-09 辉达公司 使用一个或更多个神经网络进行视频合成
CN113766343A (zh) * 2020-06-01 2021-12-07 辉达公司 使用一个或更多个神经网络进行视频合成
CN114079781A (zh) * 2020-08-18 2022-02-22 腾讯科技(深圳)有限公司 一种点云媒体的数据处理方法、装置、设备及存储介质
CN114079781B (zh) * 2020-08-18 2023-08-22 腾讯科技(深圳)有限公司 一种点云媒体的数据处理方法、装置、设备及存储介质
CN112509107B (zh) * 2020-12-03 2024-02-20 西安电子科技大学 一种点云属性重着色方法、装置及编码器
CN112509107A (zh) * 2020-12-03 2021-03-16 西安电子科技大学 一种点云属性重着色方法、装置及编码器
CN115150384B (zh) * 2021-03-31 2023-08-18 腾讯科技(深圳)有限公司 点云编解码方法、装置、计算机可读介质及电子设备
CN115150384A (zh) * 2021-03-31 2022-10-04 腾讯科技(深圳)有限公司 点云编解码方法、装置、计算机可读介质及电子设备
CN115243053A (zh) * 2021-04-22 2022-10-25 腾讯科技(深圳)有限公司 点云编解码方法及相关设备
CN115243053B (zh) * 2021-04-22 2024-04-16 腾讯科技(深圳)有限公司 点云编解码方法及相关设备
WO2023116188A1 (en) * 2021-12-20 2023-06-29 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/decoding point cloud geometry data sensed

Also Published As

Publication number Publication date
US11049266B2 (en) 2021-06-29
DE102019117514A1 (de) 2020-02-06
US20200043182A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
US11049266B2 (en) Point cloud viewpoint and scalable compression/decompression
US11080611B2 (en) Compression for deep learning in case of sparse values mapped to non-zero value
US20200045344A1 (en) Video processing mechanism
US10911799B2 (en) Video refinement mechanism
US10685476B2 (en) Voxels sparse representation
US10922832B2 (en) Removal of projection noise and point-based rendering
US20200045288A1 (en) Six degree of freedom video transcoding mechanism
US11284118B2 (en) Surface normal vector processing mechanism
CN110796589A (zh) 点云操作
US10762592B2 (en) Point-based rendering and removal of projection noise
US11568182B2 (en) System and method for 3D blob classification and transmission
US11412198B2 (en) Bit depth coding mechanism
CN110784702A (zh) 六自由度视频的简化的渲染
US20200311042A1 (en) Hardware index mapping mechanism
US10969999B2 (en) Surface property tracking mechanism
CN111708718A (zh) 存储器压缩散列机制
US11416402B2 (en) Control surface access using flat memory mapping
CN111667396A (zh) 用于支持每命令多个遍历器的系统和方法
US20200311948A1 (en) Background estimation for object segmentation using coarse level tracking
US10831483B1 (en) Memory mapped virtual doorbell mechanism
US20230403391A1 (en) Weighted prediction mechanism

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