CN116348904A - 用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小 - Google Patents
用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小 Download PDFInfo
- Publication number
- CN116348904A CN116348904A CN202180068474.8A CN202180068474A CN116348904A CN 116348904 A CN116348904 A CN 116348904A CN 202180068474 A CN202180068474 A CN 202180068474A CN 116348904 A CN116348904 A CN 116348904A
- Authority
- CN
- China
- Prior art keywords
- input
- pixels
- pixel region
- output
- image
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 241001168730 Simo Species 0.000 title description 3
- 238000012545 processing Methods 0.000 claims abstract description 105
- 230000015654 memory Effects 0.000 claims abstract description 70
- 238000003672 processing method Methods 0.000 claims 1
- 238000009877 rendering Methods 0.000 description 33
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 230000008901 benefit Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000009467 reduction Effects 0.000 description 8
- 238000012935 Averaging Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
本公开内容涉及用于图形处理的方法和设备,包括装置。在一些方面,该装置可以确定输入图像的第一输入像素区域和输入图像的第二输入像素区域。该装置还可以转换多个第一输入像素中的一个或多个第一输入像素或多个第二输入像素中的一个或多个第二输入像素中的至少一项。另外,该装置可以在至少一个高速缓存或存储器中存储所转换的一个或多个第一输入像素或一个或多个第二输入像素中的至少一项。该装置还可以配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项。
Description
相关申请的交叉引用
本申请要求享有于2020年10月13日提交的题为“METHODS AND APPARATUS FOROPTIMIZING GPU KERNEL WITH SIMO APPROACH FOR DOWNSCALING UTILIZING GPU CACHE”的美国专利申请No.17/069,734的权益,其明确地通过引用的方式整体并入本文。
技术领域
本公开内容总体上涉及处理系统,并且更具体而言,涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常利用图形处理单元(GPU)来加速图形数据的渲染以供显示。这样的计算设备可以包括:例如,计算机工作站、诸如所谓的智能电话之类的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏机。GPU执行图形处理管线,所述图形处理管线包括一起操作以执行图形处理命令并输出帧的一个或多个处理级。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制GPU的操作。现代CPU通常能够同时执行多个应用,每个应用可能需要在执行期间利用GPU。提供用于在显示器上视觉呈现的内容的设备通常包括GPU。
通常,设备的GPU被配置为执行图形处理管线中的过程。然而,随着无线通信和更小的手持设备的出现,对改进的图形处理的需求增加。
发明内容
以下给出了一个或多个方面的简要概述,以便提供对这些方面的基本理解。该概述不是对所有预期方面的广泛综述,并且既不旨在标识所有方面的关键元素,也不旨在描绘任何或所有方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。
在本公开内容的一方面,提供了一种方法、一种计算机可读介质和一种装置。所述装置可以是中央处理单元(CPU)、图形处理单元(GPU)或可以执行图形处理的任何装置。所述装置可以基于至少一个内核来配置与输入图像相关联的信息,其中,所述输入图像与多个线程中的每一个线程相关联。所述装置还可以确定输入图像的第一输入像素区域和所述输入图像的第二输入像素区域,第一输入像素区域包括多个第一输入像素,并且第二输入像素区域包括多个第二输入像素,第一输入像素区域和第二输入像素区域与至少一个内核相关联。所述装置还可以转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程。另外,所述装置可以在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项。所述装置还可以基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素。所述装置还可以基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。此外,所述装置可以配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。所述装置还可以显示所述第一输出图像或所述第二输出图像中的至少一项。
在附图和以下描述中阐述本公开内容的一个或多个示例的细节。根据说明书和附图以及权利要求书,本公开内容的其他特征、目的和优点将是显而易见的。
附图说明
图1是示出根据本公开内容的一种或多种技术的示例内容生成系统的方框图。
图2示出了根据本公开内容的一种或多种技术的示例GPU。
图3示出了根据本公开内容的一种或多种技术的用于缩小操作的示例方法的示例流程图。
图4示出了根据本公开内容的一种或多种技术的缩小操作的示例示意图。
图5示出了根据本公开内容的一种或多种技术的用于缩小操作的示例方法的示例流程图。
图6示出了根据本公开内容的一种或多种技术的缩小操作的示例示意图。
图7示出了根据本公开内容的一种或多种技术的包括CPU和GPU组件的示例示意图。
图8示出了根据本公开内容的一种或多种技术的示例方法的示例流程图。
具体实施方式
在一些情况下,GPU可以采取单次输入并使用内核来执行缩小。例如,如果使用GPU的单个实例来执行缩小操作,则它可能多次执行缩小内核,即,针对每个缩小实例执行所述内核。此外,对于每个缩小操作,每个操作可以读取一次输入。例如,如果GPU执行三(3)个不同缩小操作,则会三(3)次读取输入。这可能导致双倍数据速率(DDR)带宽(BW)消耗增加和/或CPU利用率增加。进而,这可能是某些类型的芯片组(例如,低层级芯片组)的瓶颈。另外,可以将每个内核从CPU携带到GPU内核以供执行。因此,对于每个缩小操作,可以将数据从CPU传送到GPU内核,并且从GPU内核传送到GPU硬件。因此,如果执行三(3)个缩小操作,则会三(3)次将数据从CPU传递到GPU。因此,如果针对每个缩小每次都调用或执行内核,则这可能导致开销增加。本公开内容的各方面可以减少在缩小操作中读取输入图像的次数。本公开内容的各方面还可以减少内核或平均操作被调用的次数。另外,本公开内容的各方面可以针对各个缩小操作调用内核一次。此外,本公开内容的各方面可以包括用于利用单次内核调用进行缩小的单次输入和多次输出。
在下文中参照附图更全面地描述了系统、装置、计算机程序产品和方法的各个方面。然而,本公开内容可以以许多不同的形式来体现,并且不应当被解释为限于贯穿本公开内容给出的任何特定结构或功能。相反,提供这些方面使得本公开内容将是透彻和完整的,并且将向本领域技术人员充分传达本公开内容的范围。基于本文的教导,本领域技术人员应当理解,本公开内容的范围旨在覆盖本文公开的系统、装置、计算机程序产品和方法的任何方面,无论其是独立于本公开内容的其他方面实现的还是与本公开内容的其他方面组合实现的。例如,可以使用本文阐述的任何数量的方面来实现装置或实践方法。另外,本公开内容的范围旨在覆盖使用除了本文所阐述的本公开内容的各个方面之外或不同于本文所阐述的本公开内容的各个方面的其他结构、功能或者结构和功能来实践的这种装置或方法。本文公开的任何方面可以由权利要求的一个或多个元素来体现。
尽管本文描述了各个方面,但是这些方面的许多变型和排列属于本公开内容的范围内。尽管提及了本公开内容的各方面的一些潜在益处和优点,但是本公开内容的范围不旨在限于特定益处、用途或目标。相反,本公开内容的各方面旨在广泛地适用于不同的无线技术、系统配置、网络和传输协议,其中的一些在附图和以下描述中通过示例的方式示出。详细描述和附图仅仅是对本公开内容的说明而不是限制,本公开内容的范围由所附权利要求及其等同方案来限定。
参照各种装置和方法给出了若干方面。这些装置和方法通过各种框、组件、电路、过程、算法等(统称为“元素”)在以下具体实施方式中描述并在附图中示出。这些元素可以使用电子硬件、计算机软件或其任何组合来实现。这些元素是实现为硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。
作为示例,元素、或元素的任何部分、或元素的任何组合可被实现为包括一个或多个处理器(其也可被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GP GPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SOC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路、以及被配置为执行贯穿本公开内容描述的各种功能的其他合适的硬件。处理系统中的一个或多个处理器可以执行软件。软件可以被广义地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等,无论是被称为软件、固件、中间件、微代码、硬件描述语言还是其他术语。术语应用程序可以指代软件。如本文所述,一种或多种技术可以指被配置为执行一个或多个功能的应用程序,即软件。在这样的示例中,应用程序可以存储在存储器上,例如,处理器的片上存储器、系统存储器或任何其他存储器。本文描述的硬件(诸如处理器)可以被配置为执行应用程序。例如,应用程序可以被描述为包括当由硬件执行时使硬件执行本文描述的一种或多种技术的代码。作为示例,硬件可以从存储器访问代码并执行从存储器访问的代码以执行本文描述的一种或多种技术。在一些示例中,在本公开内容中标识了组件。在这样的示例中,组件可以是硬件、软件或其组合。组件可以是单独的组件或单个组件的子组件。
相应地,在本文所描述的一个或多个示例中,所描述的功能可以用硬件、软件或其任何组合来实现。如果在软件中实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或编码在计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是可由计算机访问的任何可用介质。作为示例而非限定,此类计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储装置、磁盘存储装置、其他磁存储设备、前述类型的计算机可读介质的组合、或可被用来存储可由计算机访问的指令或数据结构形式的计算机可执行代码的任何其他介质。
总体而言,本公开内容描述用于在单个设备或多个设备中具有图形处理管线、改进图形内容的渲染和/或减少处理单元(即,被配置为执行本文中所描述的一种或多种技术的任何处理单元,例如GPU)的负载的技术。例如,本公开内容描述用于利用图形处理的任何设备中的图形处理的技术。贯穿本公开内容描述了其他示例益处。
如本文所使用的,术语“内容”的实例可以指“图形内容”、“图像”,反之亦然。无论术语是用于形容词、名词还是其他词性,都是如此。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理管线的一个或多个过程产生的内容。在一些示例中,如本文中所使用,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文所使用的,术语“显示内容”可以指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由显示处理单元生成的内容。图形内容可以被处理以成为显示内容。例如,图形处理单元可以将诸如帧之类的图形内容输出到缓冲器(其可以被称为帧缓冲器)。显示处理单元可以从缓冲器读取图形内容(诸如一个或多个帧),并且对其执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置为对一个或多个经渲染的层执行合成以生成帧。作为另一示例,显示处理单元可以被配置为将两个或更多个层合成、混合或以其他方式结合在一起成为单个帧。显示处理单元可以被配置为对帧执行缩放,例如,放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已经混合在一起以形成帧的两个或更多个层,即,该帧包括两个或更多个层,并且可以随后混合包括两个或更多个层的帧。
图1是示出被配置为实现本公开内容的一种或多种技术的示例内容生成系统100的方框图。内容生成系统100包括设备104。设备104可以包括用于执行本文描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SoC的组件。设备104可以包括被配置为执行本公开内容的一种或多种技术的一个或多个组件。在所示的示例中,设备104可以包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面,设备104可以包括数个任选组件,例如通信接口126、收发机132、接收机128、发射机130、显示处理器127和一个或多个显示器131。对显示器131的引用可以指一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,并且第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收不同的帧以在其上呈现。在其他示例中,第一显示器和第二显示器可以接收相同的帧以在其上呈现。在另外的示例中,图形处理的结果可以不显示在设备上,例如,第一显示器和第二显示器可以不接收用于在其上呈现的任何帧。相反,可以将帧或图形处理结果传送到另一设备。在一些方面,这可以被称为分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置为执行图形处理,诸如在图形处理管线107中。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括显示处理器,诸如显示处理器127,以在由一个或多个显示器131呈现之前对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。一个或多个显示器131可以被配置为显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下中的一个或多个:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
处理单元120和内容编码器/解码器122外部的存储器(诸如系统存储器124)可以是处理单元120和内容编码器/解码器122可访问的。例如,处理单元120和内容编码器/解码器122可以被配置为从外部存储器(诸如系统存储器124)读取和/或向外部存储器写入。处理单元120和内容编码器/解码器122可以通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或不同的连接彼此通信地耦合。
内容编码器/解码器122可以被配置为从诸如系统存储器124和/或通信接口126的任何源接收图形内容。系统存储器124可以被配置为存储所接收的经编码或经解码的图形内容。内容编码器/解码器122可以被配置为例如从系统存储器124和/或通信接口126以编码像素数据的形式接收经编码或经解码的图形内容。内容编码器/解码器122可以被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可以包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据介质或光学存储介质,或任何其他类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂时性存储介质。术语“非暂时性”可以指存储介质不体现在载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着内部存储器121或系统存储器124是不可移动的或者其内容是静态的。作为一个示例,系统存储器124可以从设备104移除并移动到另一设备。作为另一示例,系统存储器124可以是不可从设备104移除的。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GP GPU)或可被配置为执行图形处理的任何其他处理单元。在一些示例中,处理单元120可以被集成到设备104的母板中。在一些示例中,处理单元120可以存在于被安装在设备104的母板中的端口中的图形卡上,或可以其他方式并入被配置为与设备104互操作的外围设备内。处理单元120可以包括一个或多个处理器,例如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效集成或分立逻辑电路,或其任何组合。如果所述技术部分地以软件实施,则处理单元120可以将用于软件的指令存储于合适的非暂时性计算机可读存储介质(例如,内部存储器121)中,且可以使用一个或多个处理器以硬件执行指令以执行本公开内容的技术。前述中的任何一项,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以被集成到设备104的母板中。内容编码器/解码器122可以包括一个或多个处理器,例如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、分立逻辑、软件、硬件、固件、其他等效集成或分立逻辑电路,或其任何组合。如果所述技术部分地以软件实施,则内容编码器/解码器122可将用于软件的指令存储于合适的非暂时性计算机可读存储介质(例如,内部存储器123)中,且可使用一个或多个处理器以硬件执行指令以执行本公开内容的技术。前述中的任何一项,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
在一些方面,内容生成系统100可以包括可选的通信接口126。通信接口126可以包括接收机128和发射机130。接收机128可以被配置为执行本文中针对设备104所描述的任何接收功能。另外,接收机128可以被配置为从另一设备接收信息,例如眼睛或头部位置信息、渲染命令或位置信息。发射机130可以被配置为执行本文中针对设备104所描述的任何发射功能。例如,发射机130可以被配置为将信息发送到另一装置,所述信息可以包括对内容的请求。接收机128和发射机130可以组合成收发机132。在此类示例中,收发机132可以被配置为执行本文中针对设备104所描述的任何接收功能和/或发射功能。
再次参考图1,在某些方面,图形处理管线107可以包括确定组件198,其被配置为基于至少一个内核来配置与输入图像相关联的信息,其中,输入图像与多个线程中的每一个线程相关联。确定组件198还可以被配置为确定输入图像的第一输入像素区域和输入图像的第二输入像素区域,第一输入像素区域包括多个第一输入像素,并且第二输入像素区域包括多个第二输入像素,第一输入像素区域和第二输入像素区域与至少一个内核相关联。确定组件198还可以被配置为转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程。确定组件198还可以被配置为在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项。确定组件198还可以被配置为基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素。确定组件198还可以被配置为基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。确定组件198还可以被配置为配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。确定组件198还可以被配置为显示所述第一输出图像或所述第二输出图像中的至少一项。
如本文中所描述的,设备(诸如设备104)可以指被配置为执行本文中所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、终端产品、装置、电话、智能电话、服务器、视频游戏平台或游戏机、手持设备(例如,便携式视频游戏设备或个人数字助理(PDA)、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、不可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备、或被配置为执行本文描述的一种或多种技术的任何设备。本文中的过程可以被描述为由特定组件(例如,GPU)执行,但是在另外的实施例中,可以使用与所公开的实施例一致的其他组件(例如,CPU)来执行。
GPU可以在GPU管线中处理多种类型的数据或数据分组。例如,在一些方面,GPU可以处理两种类型的数据或数据分组,例如上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是一组全局状态信息,例如关于全局寄存器、着色程序或常数数据的信息,其可以对将如何处理图形上下文进行调节。例如,上下文寄存器分组可以包括关于颜色格式的信息。在上下文寄存器分组的一些方面,可以存在指示哪个工作负荷属于上下文寄存器的比特。而且,可以存在同时和/或并行运行的多个功能或编程。例如,功能或编程可以描述某个操作,例如颜色模式或颜色格式。因此,上下文寄存器可以定义GPU的多个状态。
上下文状态可以用于确定单个处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何处理器)如何操作,和/或处理单元以什么模式操作。为了这样做,GPU可以使用上下文寄存器和编程数据。在一些方面,GPU可以基于模式或状态的上下文寄存器定义来生成在管线中的工作负荷,例如顶点或像素工作负荷。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可以改变,因此GPU可能需要改变对应的上下文。另外,与模式或状态相对应的工作负荷可以遵循变化的模式或状态。
图2示出了根据本公开内容的一种或多种技术的示例GPU 200。如图2所示,GPU200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS 222、顶点高速缓存(VPC)224、三角形设置引擎(TSE)226、光栅化器(RAS)228、Z处理引擎(ZPE)230、像素内插器(PI)232、片段着色器(FS)234、渲染后端(RB)236、L2高速缓存(UCHE)238和系统存储器240。尽管图2显示GPU 200包括处理单元220-238,但是GPU 200可以包括多个附加处理单元。另外,处理单元220-238仅仅是示例,并且根据本公开内容的GPU可以使用任何组合或顺序的处理单元。GPU 200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2所示,GPU可以利用CP(例如CP 210)或硬件加速器来将命令缓冲器解析成上下文寄存器分组(例如上下文寄存器分组260)和/或绘制调用数据分组(例如绘制调用分组212)。然后,CP 210可以通过单独的路径将上下文寄存器分组260或绘制调用数据分组212发送到GPU中的处理单元或块。此外,命令缓冲器250可以交替上下文寄存器和绘制调用的不同状态。例如,命令缓冲器可以以以下方式构造:上下文N的上下文寄存器、上下文N的一个(或多个)绘制调用、上下文N+1的上下文寄存器、以及上下文N+1的一个(或多个)绘制调用。
GPU可以以各种不同的方式渲染图像。在一些情况下,GPU可以使用渲染或图块渲染(tiled rendering)来渲染图像。在图块渲染GPU中,图像可以被划分或分离成不同的区段或图块。在划分图像之后,可以单独地渲染每个区段或图块。图块渲染GPU可以将计算机图形图像划分为网格格式,使得网格的每个部分(即,图块)被单独渲染。在一些方面,在图格编次(bin pass)期间,可以将图像划分成不同图格或图块。在一些方面,在图格遍次期间,可构造可见性流,其中可标识可见图元或绘制调用。
在一些方面,GPU可以将绘制或渲染过程应用于不同的图格或图块。例如,GPU可渲染到一个图格,且对该图格中的图元或像素执行所有绘制。在渲染到图格的过程期间,渲染目标可以位于GMEM中。在一些情况下,在渲染到一个图格之后,可将渲染目标的内容移动到系统存储器,且可释放GMEM以用于渲染下一图格。另外,GPU可渲染到另一图格,且对该图格中的图元或像素执行绘制。因此,在一些方面,可能存在覆盖一个表面中的所有绘制的少量图格,例如四个图格。此外,GPU可以循环通过一个图格中的所有绘制,但是对可见的绘制调用(即,包括可见几何形状的绘制调用)执行绘制。在一些方面,可以例如在图格遍次中生成可见性流,以确定图像或场景中的每个图元的可见性信息。例如,该可见性流可以标识某个图元是否可见。在一些方面,该信息可用于移除不可见的图元,例如,在渲染遍次中。而且,可以在渲染遍次中渲染被标识为可见的图元中的至少一些图元。
在图块渲染的一些方面,可以存在多个处理阶段或多个处理遍次。例如,可以在两个遍次(例如,可见性或图格可见性遍次以及渲染或图格渲染遍次)中执行渲染。在可见性遍次期间,GPU可以输入渲染工作负荷,记录图元或三角形的位置,然后确定哪些图元或三角形落入哪个图格或区域中。在可见性遍次的一些方面,GPU还可标识或标记可见性流中的每个图元或三角形的可见性。在渲染遍次期间,GPU可输入可见性流且一次处理一个图格或区域。在一些方面,可以分析可见性流以确定哪些图元或图元的顶点可见或不可见。因而,可以处理可见的图元或图元的顶点。通过这样做,GPU可以减少处理或渲染不可见的图元或三角形的不必要的工作负荷。
在一些方面,在可见性遍次期间,可以处理某些类型的图元几何形状,例如,仅位置几何形状。另外,取决于图元或三角形的位置或定位,图元可被分类到不同的图格或区域中。在一些情况下,可以通过确定这些图元或三角形的可见性信息,来执行将图元或三角形分类到不同的图格中。例如,GPU可以确定或写入(例如,在系统存储器中)每个图格或区域中的每个图元的可见性信息。该可见性信息可用于确定或生成可见性流。在渲染遍次中,可以单独渲染每个图格中的图元。在这些情况下,可以从存储器中取出可见性流,其被用于丢弃对该图格不可见的图元。
GPU或GPU架构的一些方面可以提供用于渲染(例如,软件渲染和硬件渲染)的许多不同选项。在软件渲染中,驱动器或CPU可以通过处理每个视图一次来复制整个帧几何形状。另外,可以根据视图改变一些不同的状态。因此,在软件渲染中,软件可以通过改变可被用于针对图像中的每个视点进行渲染的一些状态,来复制整个工作负荷。在某些方面,由于GPU可能针对图像中的每个视点多次提交相同的工作负荷,因此可能存在增加的开销量。在硬件渲染中,硬件或GPU可以负责针对图像中的每个视点复制或处理几何形状。因此,硬件可以管理针对图像中每个视点的图元或三角形的复制或处理。
如本文所指示,在一些方面,例如在图格或图块渲染架构中,帧缓冲器可能具有被重复地存储或写入到其中的数据,例如,当从不同类型的存储器渲染时。这可以被称为对帧缓冲器或系统存储器进行解析和反解析(unresolving)。例如,当对一个帧缓冲器进行存储或写入并随后切换到另一帧缓冲器时,帧缓冲器上的数据或信息可以从GPU处的GPU内部存储器(GMEM)解析到系统存储器(即双倍数据速率(DDR)RAM或动态RAM(DRAM)中的存储器)。
在一些方面,系统存储器还可以是片上系统(SoC)存储器或另一基于芯片的存储器,以例如在设备或智能电话上存储数据或信息。系统存储器还可以是由CPU和/或GPU共享的物理数据存储装置。在一些方面,系统存储器可以是例如在设备或智能电话上的DRAM芯片。因此,SoC存储器可以是一种基于芯片的用于存储数据的方式。
在一些方面,GMEM可以是GPU处的片上存储器,其可以由静态RAM(SRAM)实现。另外,GMEM可以存储在设备(例如,智能电话)上。如本文所指示的,数据或信息可以在系统存储器或DRAM与例如设备处的GMEM之间传递。在一些方面,系统存储器或DRAM可以在CPU或GPU处。另外,数据可以存储在DDR或DRAM处。在一些方面,例如在图格或图块渲染中,存储器的一小部分可以存储在GPU处,例如在GMEM处。在一些示例中,与在帧缓冲器或系统存储器处存储数据相比,在GMEM处存储数据可以利用更大的处理工作负荷和/或功耗。
在图形处理的各方面,一些组件(例如,相机)可以包括多个用例,其中图形处理单元(GPU)可以被用于使用程序或计算语言(例如,开放计算语言(OpenCL))的其缩小能力。GPU可以用于不同类型的缩小因子,诸如以因子4进行缩小(DS4)或以因子16进行缩小(DS16)。GPU还可以用于缩小任何量,例如以因子M/N进行缩小(DS M/N)。这些不同的缩小操作可以对应于不同的操作,例如,不同的相机操作,诸如预览模式或视频模式。
在一些情况下,GPU可以采用单次输入,并使用基于OpenCL的内核来执行缩小。如本文所指示的,内核可以是编程操作管理器或编程线程。例如,如果使用GPU的单个实例来执行缩小操作,例如DS4或DS16的缩小,则其可能多次执行缩小OpenCL内核,即,针对每个缩小实例执行该内核。此外,对于每个缩小操作,每个操作可以读取一次输入。例如,如果GPU执行三(3)个不同缩小操作,则会三(3)次读取输入。这可能导致双倍数据速率(DDR)带宽(BW)消耗增加和/或CPU利用率增加。进而,这可能是某些类型的芯片组(例如,低层级芯片组)的瓶颈。
另外,可以将每个内核(例如,OpenCL内核)从CPU携带到GPU内核以供执行。因此,对于每个缩小操作,可以将数据从CPU传送到GPU内核,并且从GPU内核传送到GPU硬件。因此,如果执行三(3)个缩小操作,则会三(3)次将数据从CPU传递到GPU。因此,如果针对每个缩小每次都调用或执行OpenCL内核,则这可能导致开销增加。
在一些方面,利用现有内核(例如,OpenCL内核)进行GPU缩小可以假定目标输出图像,例如,经缩小的图像‘a’(DSa)或经缩小的图像‘b’(DSb)。该经缩小的图像DSa或DSb可以对应于某个缩小因子,例如,第一缩小因子(S1)或第二缩小因子(S2)。此外,工作组大小可以是由缩小操作调用的每帧的GPU线程数量。工作组大小可以包括具有输出图像的宽度和高度的区域,例如,W×H的尺寸。对于每个输出线程,该线程可以调用内核并读取与缩小因子相对应的输入图像,然后写入输出图像。因此,对于每个缩小操作,可以调用内核并且可以读取输入图像。
图3示出了用于缩小操作的示例方法的流程图300。如图3的示意图300所示,在302处,可以开始缩小操作。在304处,缩小操作可以包括输入图像、DSa输出图像、第一缩放因子(S1)和DSa输出图像的工作组大小W×H。在306处,被编程到GPU的缩小指令可以是:(1)为DSa图像中的每个像素创建一个GPU线程,(2)基于线程标识符(ID)和第一缩放因子S1读取输入图像的对应部分,以及(3)对每个读取的输入像素应用映射函数(即,平均)。在308处,缩小操作可以使用用于每个线程的以上指令执行GPU操作以生成DSa输出图像。在310处,缩小操作可以停止。
图4示出了缩小操作的示意图400。如图4所示,示意图400包括第一输入图像410、第一输入像素区域412、第二输入图像420、第二输入像素区域422、DSa输出图像430和DSb输出图像440。第一输入像素区域412可以包括多个像素,例如4×4像素块。此外,第二输入像素区域422可以包括多个像素,例如,16×16像素块。第一输入像素区域412中的像素可以被缩小到DSa输出图像430中的至少一个像素。此外,第二输入像素区域422中的像素可以被缩小到DSb输出图像440中的至少一个像素。
图4显示了图形处理的一些方面可以通过多次读取一个或多个输入图像来执行缩小操作。在输出图像(例如DSa输出图像430或DSb输出图像440)中,每个像素可以对应于一个线程,即执行单元。此外,内核可以包括针对特定大小的像素(例如,针对第一输入像素区域412的4×4块或像素,或者针对第二输入像素区域422的16×16块或像素)的平均操作。
如图4所示,第一输入图像410的第一输入像素区域412可以按某个因子S1(例如,因子四(4))缩小。在缩小操作期间,当调用内核时,可以确定第一输入像素区域412(例如,4×4像素块)中的每个输入像素到DSa输出图像430的至少一个输出像素的平均。因此,输出像素可以对应于第一输入像素区域412(例如,4×4像素块)中的像素的平均。如上所指示的,对于每个缩小操作,会存在从CPU到GPU的数据传递。
如图4中进一步所示,第二输入图像420的第二输入像素区域422可以按某个因子S2(例如,因子16)缩小。在缩小操作期间,当调用内核时,可以确定第二输入像素区域422(例如,16×16像素块)中的每个输入像素到DSb输出图像440的至少一个输出像素的平均。因此,输出像素可以对应于第二输入像素区域422(例如,16×16像素块)中的像素的平均。
基于上述内容,减少在缩小操作中读取输入图像的次数可能是有益的。减少针对每个缩小操作调用内核的次数也可能是有益的。例如,对于所有缩小操作而单次调用内核可能是有益的。
本公开内容的各方面可以减少在缩小操作中读取输入图像的次数。本公开内容的各方面还可以减少调用内核或平均操作的次数。另外,本公开内容的各方面可以针对所有缩小操作而单次调用内核。此外,本公开内容的各方面可以包括用于利用单次内核调用进行缩小的单次输入和多次输出方法。
图5示出了用于缩小操作的示例方法的流程图500。如图5的图500所示,在502处,可以开始缩小操作。在504处,缩小操作可以包括输入图像、具有第一缩放因子(S1)的DSa输出图像、具有第二缩放因子(S2)的DSb输出图像、以及可以与输出尺寸的最大数量相对应的工作组大小W×H。在506处,对于工作组大小的每个GPU线程,DSa的第一缩小操作可以读取S1×S1的方形框,执行平均操作,并将其存储在DSa输出缓冲器中。这些像素可以存在于GPU高速缓存中。另外,在同一GPU线程中,DSb的第二缩小操作可以读取S2×S2的方形框,且大部分像素可以存在于GPU高速缓存中。此外,DSb的第二缩小操作可以执行平均操作并写入DSb输出缓冲器。可以用单个内核来调用这些多个缩小操作。在510处,缩小操作可以停止。
图6示出了缩小操作的示意图600。如图6所示,示意图600包括第一输入图像610、第一输入像素区域612、第二输入像素区域614、第三输入像素区域616、DSa输出图像630和DSb输出图像640。第一输入像素区域612可以包括多个像素,例如4×4像素块。此外,第三输入像素区域616可以包括多个像素,例如4×4像素块。第二输入像素区域614还可以包括多个像素,例如,16×16像素块。可以将第一输入像素区域612中的像素缩小到DSa输出图像630中的至少一个像素。同样可以将第三输入像素区域616中的像素缩小到DSa输出图像630中的至少一个像素。此外,可以将第二输入像素区域614中的像素缩小到DSb输出图像640中的至少一个像素。
图6显示了本公开内容的一些方面可以通过单次读取输入图像来执行缩小操作。例如,如图6所示,本公开内容的各方面可以利用单次内核调用针对单次输入和多次输出执行缩小。如图6所示,第一输入像素区域612和第三输入像素区域616的第一缩小因子(S1)可以等于四(4)。第二输入像素区域614的第二缩小因子(S2)可以等于16。此外,在输出图像(例如DSa输出图像630或DSb输出图像640)中,每个像素可以对应于一个线程,即一个执行单元。内核可以包括针对特定尺寸的像素(例如,第一输入像素区域612的4×4块或像素、第三输入像素区域616的4×4像素块或第二输入像素区域614的16×16块或像素)的平均操作。
如图6所示,第一输入图像610的第一输入像素区域612可以按某个因子S1(例如,因子四(4))缩小。第三输入像素区域616同样可以按S1(例如,因子四(4))缩小。在缩小操作期间,当调用内核时,其可以确定第一输入像素区域612或第三输入像素区域616(例如,4×4像素块)中的每个输入像素的平均,然后按某个因子(例如,因子四(4))缩小到DSa输出图像630的至少一个输出像素。因此,输出像素可以对应于第一输入像素区域612或第三输入像素区域616(例如,4×4像素块)中的像素的平均。如图6中进一步所示,第一输入图像610的第二输入像素区域614可以按某个因子S2(例如,因子16)缩小。在缩小操作期间,当调用内核时,其可以确定第二输入像素区域614(例如,16×16像素块)中的每个输入像素的平均值,然后按某个因子(例如,因子16)缩小到DSb输出图像640的至少一个输出像素。因此,输出像素可以对应于第二输入像素区域614(例如,16×16像素块)中的像素的平均。如上所指示的,对于每个缩小操作,可能存在从CPU到GPU的数据传递。
如图6所示,在本公开内容的各方面,可以用单个内核读取输入图像。例如,可以读取输入图像610的第一输入像素区域612(例如,4×4像素块),然后可以为DSa输出图像630写入第一像素。此外,可以读取第三输入像素区域616(例如,4×4像素块),然后可以为DSa输出图像630写入第二像素。因此,内核可以读取包括与DSa 630的第一像素对应的多个第一像素的第一输入像素区域612,并且确保该多个第一像素存储在高速缓存中。这同样可以针对第三输入像素区域616发生。此外,可以读取输入图像610的第二输入像素区域614(例如,16×16像素块),然后可以为DSb输出图像640写入第一像素。即,内核可以读取与DSb640的第一像素相对应的16×16块,并且确保该16×16块存储在高速缓存中。此外,由于第一输入像素区域612和第三输入像素区域616是4×4,并且第二输入像素区域614是16×16,因此第二输入像素区域614可以是第一输入像素区域612或第三输入像素区域616的16倍大。因此,对于DSb 640中的每个输出像素,在DSa 630中可以存在16个输出像素。
在一些情况下,可以与用于DSb输出图像640的第二输入像素区域614同时地读取用于DSa输出图像630的输入像素区域612/616。因此,当针对DSa输出630的第一像素读取第一输入像素区域612的4×4块时,可以针对DSb输出640的第一像素读取第二输入像素区域614的16×16块。因此,单个内核可以同时调用多个缩小操作。即,本公开内容可以在单个线程中并且在单个实例处为多个输出图像生成多个像素。此外,在读取来自第二输入像素区域614的16×16块的数据同时,来自输入像素区域612/616的4×4块的数据可以存在于高速缓存中。因此,内核可以确定在读取第二输入像素区域614时来自第一输入像素区域612的数据存在于高速缓存中,这可以增加高速缓存命中量。此外,如果来自第一输入像素区域612的数据存在于高速缓存中,则可以对第二输入像素区域614的对应数据进行平均。因而,本公开内容的各方面可以改进对于DSa输出630或DSb输出640的下一线程的高速缓存命中,这是因为要由GPU读取的大部分像素可能由于DSa线程或DSb线程的执行而已经存在于高速缓存中。
如上所述,在读取输入像素区域612/616的4×4块和/或第二输入像素区域614的16×16块之后,可以将对应的数据存储在高速缓存中。因此,当正在计算DSa输出图像630的像素时,来自第二输入像素区域614的16×16块的对应数据可能已经存储在高速缓存中。因此,内核可以确定在读取用于DSa 630的第二像素时来自第二输入像素区域614或16×16块的数据存在于高速缓存中,这可以增加高速缓存命中的量。
如图6所示,可以存在与第一输入像素区域612相邻的第三输入像素区域616。第三输入像素区域616可以用于填充DSa输出图像630中的第二像素。因此,第一输入像素区域612可以对应于DSa输出图像630中的第一像素,并且第三输入像素区域616可以对应于DSa输出图像630中的第二像素。第二输入像素区域614可以对应于DSb输出图像640中的第一像素。DSa输出图像630和DSb输出图像640可以与多个输出图像相关联,其中,该多个输出图像可以包括任何数量的输出图像,例如,两个、四个、八个、十六个、等等。
另外,多个线程中的第一线程可以与例如DSa输出图像630中的第一输出像素中的至少一个像素以及例如DSb输出图像640的第二输出像素中的至少一个像素相关联。在一些方面,多个线程中的第一线程可以与第一输出像素的多个像素和第二输出像素的一个像素相关联。此外,与第一线程相关联的第一输出像素中的至少一个像素可以对应于第一输入像素区域612和第三输入像素区域616。此外,第二输出像素中的至少一个像素可以对应于第二输入像素区域614。
图7示出了包括CPU 710、GPU内核720、GPU硬件730和显示器740的示意图700。如图7所示,示意图700示出了用于缩小操作的流程图。如图7所示,用于缩小操作的内核执行(例如,OpenCL内核执行)可以从CPU 710到GPU内核720进行,然后从GPU内核720到GPU硬件730进行,并且最后GPU硬件730可以完成该缩小操作的执行。然后可以将缩小的图像发送到显示器740。
在本公开内容的一些方面,当针对每个缩小操作两次调用内核(例如,OpenCL内核)时,图7中的上述步骤中的每个步骤都会发生两次。在一些芯片组(例如,低层级芯片组)中,从CPU 710到GPU内核720以及从GPU内核720到GPU硬件730的开销可能增加。在本公开内容的各方面,例如,在单个OpenCL内核中,可以执行两个缩小操作,因此可以减少从CPU 710到GPU内核720以及从GPU内核720到GPU硬件730的开销,例如,减少一半。
本公开内容的各方面可以包括多个益处或优点,诸如关键性能指标(KPI)的改进。例如,本公开内容的各方面可以减少用于缩小操作的处理时间。对于某些缩小操作,例如,1024×768输入图像导致1024×768和640×480的输出图像,本公开内容的各方面可以减少处理时间,例如,从8-11ms减少到5-7ms。本公开内容的各方面还可以改进以兆字节每秒(Mbps)为单位的DDR带宽消耗。例如,对于某些缩小操作,例如,1024×768输入图像导致1024×768和640×480的输出图像,本公开内容的各方面可以将DDR带宽消耗改善一定量的Mbps,例如,40Mbps的改善。此外,前述缩小操作可以扩展到多个其他GPU操作,例如图像翻转、旋转、等等。
图3-7示出了用于缩小操作的上述方法和过程的示例。如图3-7中所示,本公开内容的各方面(例如,本文中的GPU和CPU)可以执行用于缩小操作的多个不同步骤或过程以便减少处理时间。例如,本文中的CPU和GPU可以基于至少一个内核来配置与输入图像(例如,第一输入图像610)相关联的信息,其中输入图像与多个线程中的每一个线程相关联。该多个线程可以对应于包括第一输出图像(例如DSa输出图像630)和第二输出图像(例如DSb输出图像640)的多个输出图像。
本文中的CPU和GPU还可以确定输入图像(例如,第一输入图像610)的第一输入像素区域(例如,第一输入像素区域612)和输入图像的第二输入像素区域(例如,第二输入像素区域614),第一输入像素区域包括多个第一输入像素,并且第二输入像素区域包括多个第二输入像素,第一输入像素区域和第二输入像素区域与至少一个内核相关联。此外,第一输入像素区域(例如,第一输入像素区域612)可以对应于多个第一输出像素(例如,对应于DSa输出图像630)中的至少一个第一像素,并且第二输入像素区域(例如,第二输入像素区域614)可以对应于多个第二输出像素(例如,对应于DSb输出图像640)中的至少一个第一像素。
在一些方面,第一输入像素区域(例如,第一输入像素区域612)可以对应于第一缩放因子,例如,S1=4,并且第二输入像素区域可以对应于第二缩放因子,例如,S2=16。一个或多个第一输入像素可以按第一缩放因子(例如,S1=4)来转换,并且一个或多个第二像素可以按第二缩放因子(例如,S2=16)来转换。此外,第二输入像素区域(例如,第二输入像素区域614)可以大于第一输入像素区域(例如,第一输入像素区域612),并且多个第二像素中与第一输入像素区域不对应的至少一些第二像素可以与至少一个第三像素区域(例如,第三输入像素区域616)相关联。第一输入像素区域(例如,第一输入像素区域612)可以与至少一个第三输入像素区域(例如,第三输入像素区域616)相邻,第一输入像素区域可以对应于多个第一输出像素(例如,对应于DSa输出图像630)中的至少一个第一像素,并且至少一个第三输入像素区域可以对应于多个第一输出像素(例如,对应于DSa输出图像630)中的至少一个第二像素。
本文中的CPU和GPU还可以转换所述多个第一输入像素(例如,对应于第一输入像素区域612)中的一个或多个第一输入像素或者所述多个第二输入像素(例如,对应于第二输入像素区域614)中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与至少一个内核相关联的多个线程中的第一线程。在一些情况下,转换所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项可以包括:缩小所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项。此外,可以在转换所述一个或多个第二输入像素之前转换所述一个或多个第一输入像素,和/或可以在转换所述一个或多个第二输入像素之后转换所述一个或多个第一输入像素。
本文中的CPU和GPU还可以在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素(例如,对应于第一输入像素区域612)或所述一个或多个第二输入像素(例如,对应于第二输入像素区域614)中的所述至少一项。
本文中的CPU和GPU还可以基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来获得所述多个第二输入像素(例如,对应于第二输入像素区域614)中的至少一个第二输入像素或者所述多个第一输入像素(例如,对应于第一输入像素区域612)中的至少一个第一输入像素。在一些方面,所获得的所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素可以是基于所述至少一个高速缓存或存储器的命中数量的。
本文中的CPU和GPU还可以基于所存储的一个或多个第一输入像素或一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素(例如,对应于DSa输出图像630)中的一个或多个第一输出像素或多个第二输出像素(例如,对应于DSb输出图像640)中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。
本文中的CPU和GPU还可以配置基于所述多个第一输出像素的第一输出图像(例如,DSa输出图像630)或基于所述多个第二输出像素的第二输出图像(例如,DSb输出图像640)中的至少一项,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。
本文中的CPU和GPU还可以显示所述第一输出图像(例如,DSa输出图像630)或所述第二输出图像(例如,DSb输出图像640)中的至少一个,其中,所述第一输出图像和/或所述第二输出图像可以显示在显示器或显示面板处。
图8示出了根据本公开内容的一种或多种技术的示例方法的流程图800。该方法可以由诸如CPU、GPU的装置或用于图形处理的装置来执行。
在802处,装置可以基于至少一个内核来配置与输入图像相关联的信息,其中,输入图像与多个线程中的每一个线程相关联,如结合图3-7中的示例所描述的。所述多个线程可以对应于包括第一输出图像和第二输出图像的多个输出图像,如结合图3-7中的示例所描述的。
在804处,装置可以确定输入图像的第一输入像素区域和输入图像的第二输入像素区域,第一输入像素区域包括多个第一输入像素,并且第二输入像素区域包括多个第二输入像素,第一输入像素区域和第二输入像素区域与至少一个内核相关联,如结合图3-7中的示例所描述的。此外,第一输入像素区域可以对应于多个第一输出像素中的至少一个第一像素,且第二输入像素区域可以对应于多个第二输出像素中的至少一个第一像素,如结合图3-7中的示例所描述。
在一些方面,第一输入像素区域可以对应于第一缩放因子,且第二输入像素区域可以对应于第二缩放因子,如结合图3-7中的示例所描述的。所述一个或多个第一输入像素可以按第一缩放因子转换,且所述一个或多个第二像素可以按第二缩放因子转换,如结合图3-7中的示例所描述的。此外,第二输入像素区域可以大于第一输入像素区域,且所述多个第二像素中与第一输入像素区域不对应的至少一些第二像素可以与至少一个第三像素区域相关联,如结合图3-7中的示例所描述的。第一输入像素区域可以与至少一个第三输入像素区域相邻,第一输入像素区域可以对应于所述多个第一输出像素中的至少一个第一像素,并且至少一个第三输入像素区域可以对应于所述多个第一输出像素中的至少一个第二像素,如结合图3-7中的示例所描述的。
在806处,装置可以转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程,如结合图3-7中的示例所描述的。在一些情况下,转换所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项可以包括缩小所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项,如结合图3-7中的示例所描述的。此外,可以在所述转换一个或多个第二输入像素之前转换所述一个或多个第一输入像素,和/或可以在转换所述一个或多个第二输入像素之后转换所述一个或多个第一输入像素,如结合图3-7中的示例所描述的。
在808处,装置可以在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,如结合图3-7中的示例所描述的。
在810处,装置可以基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项,来获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素,如结合图3-7中的示例所描述的。在一些方面,所获得的所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素可以是基于至少一个高速缓存或存储器的命中数量的,如结合图3-7中的示例所描述的。
在812处,装置可以基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程,如结合图3-7中的示例所描述的。
在814处,装置可以配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项,其中,第一输出图像和第二输出图像与所述多个线程相关联,如结合图3-7中的示例所描述。
在816处,装置可以显示第一输出图像或第二输出图像中的至少一项,如结合图3-7中的示例所描述的。
在一种配置中,提供了一种用于图形处理的方法或装置。该装置可以是CPU、GPU或可执行图形处理的某一其他处理器。在一个方面,该装置可以是设备104内的处理单元120,或可以是设备104或另一设备内的某一其他硬件。该装置可以包括:用于确定输入图像的第一输入像素区域和输入图像的第二输入像素区域的单元,第一输入像素区域包括多个第一输入像素,并且第二输入像素区域包括多个第二输入像素,第一输入像素区域和第二输入像素区域与至少一个内核相关联。该装置还可以包括:用于转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项的单元,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程。该装置还可以包括:用于将所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项存储在至少一个高速缓存或存储器中的单元。该装置还可以包括:用于基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项的单元,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。该装置还可以包括:用于配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项的单元,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。该装置还可以包括:用于显示所述第一输出图像或所述第二输出图像中的至少一项的单元。该装置还可以包括:用于基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项,来获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素的单元。该装置还可以包括:用于基于所述至少一个内核来配置与所述输入图像相关联的信息的单元,其中,所述输入图像与所述多个线程中的每一个线程相关联。
可以实现本文描述的主题以实现一个或多个益处或优点。例如,所描述的图形处理技术可由CPU、GPU或可执行图形处理以实施本文中所描述的缩小操作技术的某一其他处理器使用。与其他图形处理技术相比,这也可以以低成本实现。此外,本文的图形处理技术可以改进或加速数据处理或执行。此外,本文的图形处理技术可以提高资源或数据利用率和/或资源效率。另外,本公开内容的各方面可以利用缩小操作技术,以便改善处理时间和/或减少性能开销。
根据本公开内容,在上下文没有另外指示的情况下,术语“或”可以被解释为“和/或”。另外,虽然诸如“一个或多个”或“至少一个”等等的短语可能已经用于本文公开的一些特征而不是其他特征,但是在上下文没有另外指示的情况下,没有使用这种语言的特征可以被解释为具有暗示的这种含义。
在一个或多个示例中,本文中所描述的功能可以实施于硬件、软件、固件、或其任何组合中。例如,尽管贯穿本公开内容已使用术语“处理单元”,但此类处理单元可以以硬件、软件、固件或其任何组合实施。如果本文中所描述的任何功能、处理单元、技术或其他模块以软件实施,则本文中所描述的功能、处理单元、技术或其他模块可以作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质发送。计算机可读介质可以包括计算机数据存储介质或通信介质,包括促进将计算机程序从一处传递到另一处的任何介质。以此方式,计算机可读介质通常可以对应于(1)有形计算机可读存储介质,其是非暂时性的,或(2)通信介质,例如信号或载波。数据存储介质可以是可由一个或多个计算机或一个或多个处理器存取以获取用于实施本公开内容中所描述的技术的指令、代码和/或数据结构的任何可用介质。作为示例而非限定,此类计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁存储设备。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述的组合也应当包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可以由一个或多个处理器执行,所述一个或多个处理器例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)、或其他等效集成或分立逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其他结构中的任一项。而且,所述技术可以完全实施于一个或多个电路或逻辑元件中。
本公开内容的技术可以实施于广泛的多种设备或装置中,包括无线手持机、集成电路(IC)或一组IC(例如芯片组)。在本公开内容中描述了各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但未必需要由不同硬件单元实现。相反,如上所述,各种单元可以结合合适的软件和/或固件而组合在任何硬件单元中或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。
已经描述了各种示例。这些示例和其他示例在所附权利要求的范围内。
Claims (43)
1.一种图形处理方法,包括:
确定输入图像的第一输入像素区域和所述输入图像的第二输入像素区域,所述第一输入像素区域包括多个第一输入像素,并且所述第二输入像素区域包括多个第二输入像素,所述第一输入像素区域和所述第二输入像素区域与至少一个内核相关联;
转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程;
在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项;以及
基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。
2.根据权利要求1所述的方法,还包括:
配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。
3.根据权利要求2所述的方法,还包括:
显示所述第一输出图像或所述第二输出图像中的至少一项。
4.根据权利要求1所述的方法,还包括:
基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素。
5.根据权利要求4所述的方法,其中,所获得的所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素是基于所述至少一个高速缓存或存储器的命中数量的。
6.根据权利要求1所述的方法,其中,所述第一输入像素区域对应于第一缩放因子,并且所述第二输入像素区域对应于第二缩放因子。
7.根据权利要求6所述的方法,其中,所述一个或多个第一输入像素被按所述第一缩放因子转换,并且所述一个或多个第二像素被按所述第二缩放因子转换。
8.根据权利要求1所述的方法,其中,所述第二输入像素区域大于所述第一输入像素区域,并且所述多个第二像素中与所述第一输入像素区域不对应的至少一些第二像素与至少一个第三像素区域相关联。
9.根据权利要求8所述的方法,其中,所述第一输入像素区域与所述至少一个第三输入像素区域相邻,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述至少一个第三输入像素区域对应于所述多个第一输出像素中的至少一个第二像素。
10.根据权利要求1所述的方法,其中,转换所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项包括:缩小所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项。
11.根据权利要求1所述的方法,还包括:
基于所述至少一个内核来配置与所述输入图像相关联的信息,其中,所述输入图像与所述多个线程中的每个线程相关联。
12.根据权利要求11所述的方法,其中,所述多个线程对应于包括第一输出图像和第二输出图像的多个输出图像。
13.根据权利要求1所述的方法,其中,在转换所述一个或多个第二输入像素之前转换所述一个或多个第一输入像素,或者在转换所述一个或多个第二输入像素之后转换所述一个或多个第一输入像素。
14.根据权利要求1所述的方法,其中,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述第二输入像素区域对应于所述多个第二输出像素中的至少一个第一像素。
15.一种用于图形处理的装置,包括:
存储器;以及
至少一个处理器,所述至少一个处理器耦合到所述存储器并且被配置为:
确定输入图像的第一输入像素区域和所述输入图像的第二输入像素区域,所述第一输入像素区域包括多个第一输入像素,并且所述第二输入像素区域包括多个第二输入像素,所述第一输入像素区域和所述第二输入像素区域与至少一个内核相关联;
转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程;
在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项;以及
基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。
16.根据权利要求15所述的装置,其中,所述至少一个处理器还被配置为:
配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。
17.根据权利要求16所述的装置,其中,所述至少一个处理器还被配置为:
显示所述第一输出图像或所述第二输出图像中的至少一项。
18.根据权利要求15所述的装置,其中,所述至少一个处理器还被配置为:
基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素。
19.根据权利要求18所述的装置,其中,所获得的所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素是基于所述至少一个高速缓存或存储器的命中数量的。
20.根据权利要求15所述的装置,其中,所述第一输入像素区域对应于第一缩放因子,并且所述第二输入像素区域对应于第二缩放因子。
21.根据权利要求20所述的装置,其中,所述一个或多个第一输入像素被按所述第一缩放因子转换,并且所述一个或多个第二像素被按所述第二缩放因子转换。
22.根据权利要求15所述的装置,其中,所述第二输入像素区域大于所述第一输入像素区域,并且所述多个第二像素中与所述第一输入像素区域不对应的至少一些第二像素与至少一个第三像素区域相关联。
23.根据权利要求22所述的装置,其中,所述第一输入像素区域与所述至少一个第三输入像素区域相邻,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述至少一个第三输入像素区域对应于所述多个第一输出像素中的至少一个第二像素。
24.根据权利要求15所述的装置,其中,转换所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项包括:缩小所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项。
25.根据权利要求15所述的装置,其中,所述至少一个处理器还被配置为:
基于所述至少一个内核来配置与所述输入图像相关联的信息,其中,所述输入图像与所述多个线程中的每个线程相关联。
26.根据权利要求25所述的装置,其中,所述多个线程对应于包括第一输出图像和第二输出图像的多个输出图像。
27.根据权利要求15所述的装置,其中,在转换所述一个或多个第二输入像素之前转换所述一个或多个第一输入像素,或者在转换所述一个或多个第二输入像素之后转换所述一个或多个第一输入像素。
28.根据权利要求15所述的装置,其中,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述第二输入像素区域对应于所述多个第二输出像素中的至少一个第一像素。
29.一种用于图形处理的装置,包括:
用于确定输入图像的第一输入像素区域和所述输入图像的第二输入像素区域的单元,所述第一输入像素区域包括多个第一输入像素,并且所述第二输入像素区域包括多个第二输入像素,所述第一输入像素区域和所述第二输入像素区域与至少一个内核相关联;
用于转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项的单元,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程;
用于在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项的单元;以及
用于基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项的单元,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。
30.根据权利要求29所述的装置,还包括:
用于配置基于所述多个第一输出像素的第一输出图像或基于所述多个第二输出像素的第二输出图像中的至少一项的单元,其中,所述第一输出图像和所述第二输出图像与所述多个线程相关联。
31.根据权利要求30所述的装置,还包括:
用于显示所述第一输出图像或所述第二输出图像中的至少一项的单元。
32.根据权利要求29所述的装置,还包括:
用于基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,获得所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素的单元。
33.根据权利要求32所述的装置,其中,所获得的所述多个第二输入像素中的至少一个第二输入像素或所述多个第一输入像素中的至少一个第一输入像素是基于所述至少一个高速缓存或存储器的命中数量的。
34.根据权利要求29所述的装置,其中,所述第一输入像素区域对应于第一缩放因子,并且所述第二输入像素区域对应于第二缩放因子。
35.根据权利要求34所述的装置,其中,所述一个或多个第一输入像素被按所述第一缩放因子转换,并且所述一个或多个第二像素被按所述第二缩放因子转换。
36.根据权利要求29所述的装置,其中,所述第二输入像素区域大于所述第一输入像素区域,并且所述多个第二像素中与所述第一输入像素区域不对应的至少一些第二像素与至少一个第三像素区域相关联。
37.根据权利要求36所述的装置,其中,所述第一输入像素区域与所述至少一个第三输入像素区域相邻,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述至少一个第三输入像素区域对应于所述多个第一输出像素中的至少一个第二像素。
38.根据权利要求29所述的装置,其中,转换所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项包括:缩小所述一个或多个第一输入像素或所述一个或多个第二输入像素中的至少一项。
39.根据权利要求29所述的装置,还包括:
用于基于所述至少一个内核来配置与所述输入图像相关联的信息的单元,其中,所述输入图像与所述多个线程中的每个线程相关联。
40.根据权利要求39所述的装置,其中,所述多个线程对应于包括第一输出图像和第二输出图像的多个输出图像。
41.根据权利要求29所述的装置,其中,在转换所述一个或多个第二输入像素之前转换所述一个或多个第一输入像素,或者在转换所述一个或多个第二输入像素之后转换所述一个或多个第一输入像素。
42.根据权利要求29所述的装置,其中,所述第一输入像素区域对应于所述多个第一输出像素中的至少一个第一像素,并且所述第二输入像素区域对应于所述多个第二输出像素中的至少一个第一像素。
43.一种存储用于图形处理的计算机可执行代码的计算机可读介质,所述代码在由处理器执行时使所述处理器:
确定输入图像的第一输入像素区域和所述输入图像的第二输入像素区域,所述第一输入像素区域包括多个第一输入像素,并且所述第二输入像素区域包括多个第二输入像素,所述第一输入像素区域和所述第二输入像素区域与至少一个内核相关联;
转换所述多个第一输入像素中的一个或多个第一输入像素或所述多个第二输入像素中的一个或多个第二输入像素中的至少一项,所述多个第一输入像素或所述多个第二输入像素中的至少一项对应于与所述至少一个内核相关联的多个线程中的第一线程;
在至少一个高速缓存或存储器中存储所转换的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项;以及
基于所存储的所述一个或多个第一输入像素或所述一个或多个第二输入像素中的所述至少一项,来配置多个第一输出像素中的一个或多个第一输出像素或多个第二输出像素中的一个或多个第二输出像素中的至少一项,所述多个第一输出像素和所述多个第二输出像素对应于与所述至少一个内核相关联的所述多个线程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/069,734 US11574380B2 (en) | 2020-10-13 | 2020-10-13 | Methods and apparatus for optimizing GPU kernel with SIMO approach for downscaling utilizing GPU cache |
US17/069,734 | 2020-10-13 | ||
PCT/US2021/050127 WO2022081286A1 (en) | 2020-10-13 | 2021-09-13 | Optimizing gpu kernel with simo approach for downscaling utilizing gpu cache |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116348904A true CN116348904A (zh) | 2023-06-27 |
Family
ID=78080536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180068474.8A Pending CN116348904A (zh) | 2020-10-13 | 2021-09-13 | 用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11574380B2 (zh) |
EP (1) | EP4229586A1 (zh) |
KR (1) | KR102645239B1 (zh) |
CN (1) | CN116348904A (zh) |
BR (1) | BR112023006276A2 (zh) |
TW (1) | TW202219885A (zh) |
WO (1) | WO2022081286A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024044936A1 (en) * | 2022-08-30 | 2024-03-07 | Qualcomm Incorporated | Composition for layer roi processing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2473615A (en) | 2009-09-16 | 2011-03-23 | Sharp Kk | Display privacy image processing method with main image compression depending on off-axis luminance |
EP3021191B1 (en) * | 2010-08-13 | 2018-06-06 | LG Electronics Inc. | Mobile terminal, display device, and control method therefor |
EP3090381B1 (en) | 2013-12-31 | 2024-02-28 | Ventana Medical Systems, Inc. | Systems and methods for spectral unmixing of microscopic images using pixel grouping |
US9704217B2 (en) * | 2015-04-20 | 2017-07-11 | Intel Corporation | Apparatus and method for non-uniform frame buffer rasterization |
GB2553744B (en) * | 2016-04-29 | 2018-09-05 | Advanced Risc Mach Ltd | Graphics processing systems |
US20180007302A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
CN107846597B (zh) * | 2016-09-20 | 2019-12-10 | 上海澜至半导体有限公司 | 用于视频解码器的数据缓存方法和装置 |
US11062424B2 (en) * | 2019-10-09 | 2021-07-13 | Microsoft Technology Licensing, Llc | Systems and methods for motion adaptive filtering as pre-process to video encoding |
-
2020
- 2020-10-13 US US17/069,734 patent/US11574380B2/en active Active
-
2021
- 2021-09-11 TW TW110133903A patent/TW202219885A/zh unknown
- 2021-09-13 EP EP21787202.7A patent/EP4229586A1/en active Pending
- 2021-09-13 CN CN202180068474.8A patent/CN116348904A/zh active Pending
- 2021-09-13 KR KR1020237011565A patent/KR102645239B1/ko active IP Right Grant
- 2021-09-13 WO PCT/US2021/050127 patent/WO2022081286A1/en unknown
- 2021-09-13 BR BR112023006276A patent/BR112023006276A2/pt unknown
Also Published As
Publication number | Publication date |
---|---|
KR102645239B1 (ko) | 2024-03-07 |
TW202219885A (zh) | 2022-05-16 |
WO2022081286A1 (en) | 2022-04-21 |
BR112023006276A2 (pt) | 2023-05-09 |
EP4229586A1 (en) | 2023-08-23 |
US20220114694A1 (en) | 2022-04-14 |
KR20230052988A (ko) | 2023-04-20 |
US11574380B2 (en) | 2023-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116917927A (zh) | 用于机器学习工作负载中张量对象支持的方法和装置 | |
US20220101479A1 (en) | Apparatus and method for graphics processing unit hybrid rendering | |
US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
CN116529772A (zh) | 经压缩的几何形状渲染与流式传输 | |
KR102645239B1 (ko) | Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화 | |
WO2022095010A1 (en) | Methods and apparatus for rasterization of compute workloads | |
US11080928B2 (en) | Methods and apparatus for visibility stream management | |
TW202137141A (zh) | 用於邊緣壓縮抗混疊的方法和裝置 | |
US11087431B2 (en) | Methods and apparatus for reducing draw command information | |
US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
US11893654B2 (en) | Optimization of depth and shadow pass rendering in tile based architectures | |
US20220172695A1 (en) | Methods and apparatus for plane planning for overlay composition | |
CN117616398A (zh) | Gpu范围界定中的性能开销优化 | |
CN116457830A (zh) | 基于区域不连续性的运动估计 | |
CN117980955A (zh) | 与样本空间相关联的聚焦分箱渲染 | |
CN116324896A (zh) | 用于扩展分箱的可配置围边支持 | |
CN117980956A (zh) | 动态可变速率着色 | |
CN116368527A (zh) | 基于gpu硬件的深度缓冲器方向跟踪 |
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 |