首页 > 其他分享 >高通AdrenoGPU简介(一)

高通AdrenoGPU简介(一)

时间:2025-01-20 16:44:05浏览次数:1  
标签:采样 渲染 简介 分块 高通 并发 AdrenoGPU 内存 顶点

3D渲染过程是一项计算密集型活动。屏幕分辨率越来越大,其中一些即将达到超高清分辨率。这意味着gpu需要在相同的固定时间段内光栅化更多的片段。假设目标帧率为30 fps,游戏在单个帧上的花费不能超过33.3 ms。如果出现这种情况,那么每秒的屏幕更新次数就会下降,用户就很难完全沉浸在游戏中。

基于块的渲染

为了优化低功耗和内存带宽有限的设备的渲染,Adreno gpu使用基于平铺的渲染架构。这种渲染机制将场景帧缓冲区分解成小的矩形区域进行渲染。区域大小是自动确定的(尽管开发人员可以影响块(bin、Tile)的数量——这也定义了块的大小),以便使用GPU上的本地低延迟内存(称为GMEM)最佳地呈现它们,而不是使用带宽有限的总线到系统内存。
Adreno GPU将一个帧分成若干个块,并一次渲染一个。在渲染过程中,它使用片上高性能图形内存(GMEM)来避免进入系统内存的成本。
在下面的图片中,您可以看到在渲染时执行的两次pass(Binning和Rendering)。在这个例子中,有三个三角形将在帧缓冲区中呈现。Binning Pass标志着在可见流(visibility stream)中哪个三角形是可见的。这个流被存储到系统内存中。在Rendering Pass中,只有每个块的可见图元才会通过读取可见流来处理。使用GMEM作为局部颜色和z缓冲区来渲染图元。

一旦该块渲染完成,GMEM颜色缓冲会被发送回(解析)到系统内存。对所有块重复此过程。

灵活渲染技术

FlexRender允许Adreno gpu在基于平铺的分块渲染和直接渲染到帧缓冲区之间切换。因为根据工作负载,直接或分块渲染可能提供更好的性能。驱动程序和GPU分析给定渲染目标的渲染参数并自动选择模式。
驱动决定使用哪种模式,且不会向开发人员暴露,但通常某些场合下会触发直接模式。

并发分块

并发分块是由adreno A7x系列引入的。对于每个rendering pass,如果没有依赖关系,并发分块允许binning pass在顶点着色器执行之前异步运行。

仅位置相关顶点着色

与(传统的)同步分块一样,编译器生成一个仅位置相关的顶点着色器(编译器试图简化为仅影响顶点位置的指令的顶点着色器版本)并被用于确定放置每个三角形的到哪个块上(或多个块上,在一个三角形横跨多个块的情况下)。
使用并发分块时仅位置相关顶点着色器的执行与其他操作是异步进行的。

如何使用

激活并发分块不需要额外的步骤,但某些情况会导致无法并发分块。

分析

Snapdragon Profiler可以帮助您确定并发分块何时处于活动状态。在捕获跟踪模式时,包括并发分块属性:

并发分块信息将在Render Pipe下显示为Bining Pipe:

请注意,同步分块位于Render Pipe上,并且在某些情况下,当GPR使用率较低时,驱动程序将尝试启动并发分块,即使具有顺序依赖关系。
SnapDragon Profilter的trace captrue模式将在不同的位置(在GPU stage下面,这是在使用captruing a trace且Vulkan|OpenGL ES->Rendering Stages勾选)上显示每个捕获选项的并发分块参数(其中可以包括顶点着色器使用,缓存丢失,纹理获取等)。

MSAA多采样抗锯齿

抗锯齿是提高生成图像质量的一项重要技术。
它减少了渲染成锯齿的离散像素。在各种抗锯齿技术中,多采样抗锯齿(MSAA)技术得到了Adreno gpu的有效支持。
如下图所示,多重采样将每个像素分成一组采样,每个采样在光栅化过程中被视为一个“迷你像素”。每个采样都有自己的颜色、深度和模板值。这些值将被保留,直到图像准备显示。当合成最终图像时,采样们被合成为最终的像素颜色。


对于小像素的介质(如智能手机),一些内容可能从抗锯齿中获得很少好处甚至没有视觉上的好处。

Snapdragon硬件可以通过在内存中执行MSAA来有效地执行它,没有不必要的使用或操作系统内存

标签:采样,渲染,简介,分块,高通,并发,AdrenoGPU,内存,顶点
From: https://www.cnblogs.com/kelensdaggercd/p/18681840

相关文章

  • ATF引导启动流程整理-Part1:简介部分
    Ch1:背景与基础内容介绍1.1背景最近工作中使用U-boot进行内核引导启动调整,发现编译手册中对Uboot镜像编译流程和之前接触的不太一样,在完成U-boot编译流程后,需要单独再进行ATF编译。且ATF编译过程中需要使用U-boot.bin产物并且给出硬件配置。此工程的最终生成产物被分成......
  • Python的简介-课前甜点
    Python的简介-课前甜点1.`Python`需求的任务2.Python代码的实现3.代码修改的位置4.运行结果5.注意事项6.其他文章链接快来试试吧......
  • 【SQL教程】Day01-03: MySQL简介及安装指南
    MySQL是目前应用最广泛的开源关系数据库管理系统。它最初由瑞典的MySQLAB公司开发,后来该公司在2008年被SUN公司收购,紧接着在2009年SUN被Oracle公司收购,从而使得MySQL成为Oracle旗下的产品。MySQL的特点和发展历程使其成为全球许多企业和开发者的首选数据库。1.MySQL架构概览......
  • 网络攻击(一)--安全渗透简介
    1.安全渗透概述目标了解渗透测试的基本概念了解渗透测试从业人员的注意事项1.1.写在前面的话在了解渗透测试之前,我们先看看,信息安全相关的法律是怎么样的中华人民共和国网络安全法《中华人民共和国网络安全法》由全国人民代表大会常务委员会于2016年11月7日发......
  • 编译器设计史 | 工作原理 | C 编译器简介
    注:机翻,未校。HistoryofCompilerDesign编译器设计的历史PriteshPawarOct20,2021InthisblogI’llbetryingtoshadowthehistoryofcompilersindetailalongwiththebasicintroductiontocompilersandit’soptimization.在这篇博客中,我将尝试详......
  • STM32简介
    1、STM32是基于ARM-Cortex-M内核开发的32位微控制器。STM32分为高性能系列,主流系列,低功耗系列、无线系列:视频采用STM32F1系列高性能系列:STM32F2,F4,F7,H7(3224内核跑分,双核微控制器=550MHz的Cortex-M7+240MHz的Cortex-M4)2、ARM内核型号:经典ARM处理器:ARM7、ARM9、ARM11Corte......
  • 小程序云测服务简介
    MiniTest小程序云测服务简介MiniTest微信小程序云测是一套由微信测试团队自主研发,联合WeTest云真机能力,共同推出的小程序自动化测试服务。服务基于云真机,支持开发者简单快捷地实现小程序真机自动化测试和性能分析等能力。服务平台特色功能如下:丰富的自动化测试能力全面的性......
  • ArkTS简介与代码示例
    鸿蒙操作系统(HarmonyOS)是由华为技术有限公司开发的面向未来、面向全场景的分布式操作系统。它旨在为用户提供跨设备无缝协同体验,支持多种终端设备,如智能手机、平板电脑、智能穿戴设备等。为了适应不同的应用场景和硬件能力,鸿蒙提供了多语言编程的支持,其中包括ArkTS(ArkTypeScri......
  • [数据结构学习笔记13] 递归简介(Recursion)
    递归让我们把问题由大分小,小到我们能够轻松处理。递归方法有两个要注意的点:1.递归方法会重复的被调用;2.必须有一个终止条件,否则方法调用不停,会导致stackoverflow。看下面的一个例子,这个没有终止条件,会报错!functionhello(){console.log("I'malittlefunction,shorta......
  • Spring简介
    1.1Spring介绍根据学过的Mybatis框架,得出对于框架的理解:在原生的代码基础上,用一些优秀的设计模式和设计原则封装出来的便于开发人员使用的开发体系框架存在的意义:简化原生代码的开发;框架是因为企业级开发诞生的,在一些小型项目中,框架的应用是没有必要的,因为框架的起步搭建是......