当前位置: 首页 > news >正文

Android 常用命令和工具解析之GPU相关

目录

1、GPU基本信息

1.1 获取GPU基本信息

1.2 伪造GPU基本信息

2、GPU内存信息

3、经典案例

案例1:GPU伪造信息方案

案例2:GPU内存统计算法


GPU 指的是 Graphics Processing Unit,即图形处理单元。GPU 是一种专门用于处理图形和图像相关计算任务的处理器,广泛应用于图形渲染、游戏设计、视频编辑、科学计算等领域。
与传统的中央处理单元(CPU)相比,GPU 在处理大规模并行计算时表现更加出色。GPU 可以同时处理多个数据流,执行大量相似的计算任务,适合处理需要高度并行计算能力的工作负载。
在图形应用方面,GPU 通常被用于加速三维图形渲染,使得游戏、虚拟现实(VR)、电影特效等内容的表现更加流畅和真实。此外,GPU 也被广泛应用于机器学习、人工智能等领域,用于加速深度学习网络的训练和推断过程。

1、GPU基本信息

1.1 获取GPU基本信息

可以通过如下命令来获取当前系统或者手机的GPU信息

adb shell "dumpsys SurfaceFlinger | grep "GLES""

如上可以分为三部分,其中第一部分可以理解为此GPU生产公司,ARM表示此GPU采用了ARM架构,Imagination Technologies为另一个平台或者公司的架构,通常简称为IMG

1.2 伪造GPU基本信息

可以通过如下命令来伪造当前系统或者手机的GPU信息,伪造就是认为的更改GPU相关信息:

adb root
adb shell "setprop vendor.debug.gpud.enable '1'"
adb shell "setprop vendor.debug.gpud.process.name ''"
adb shell "setprop vendor.debug.gpud.gl.vendor 'ARM'"
adb shell "setprop vendor.debug.gpud.gl.renderer 'Mali-G52 MC2'"
adb shell "stop;start"
adb shell "dumpsys SurfaceFlinger | grep "GLES""

我们为什么要伪造GPU的信息,因为很多三分应用或者进程,特别是游戏应用会根据不同的GPU,来做出不同的渲染流程,例如MIR4游戏在低端GPU的手机里面调用了不同的opengl纹理来进行图像渲染。来保证兼容一些低端机型的画面流畅,但是这些难免会存在一些bug,例如部分应用在某些机型上出现闪屏或者图像显示不正常,此时我们可以通过伪造来排除GPU的不同导致的问题。

2、GPU内存信息

可以通过如下命令获取GPU内存相关信息:

adb shell cat proc/mtk_mali/gpu_memory   //此条命令只针对MTK,不同平台路径不一样

  • 第一行mali0   141867表示第一块GPU暂时代名为mali0,其总共使用了141867个内存页,注意单位是页,因此转换为kb的计算方法:141867 * 4  =  567468 kb。注意他不是gpu内存容量大小,而是统计了当前系统所有使用gpu mali0的进程的内存页数之和,因此它的数值也是实时在变化。
  • 之后的kctx,表示一个 Kernel Context,具有 ID 0x0000000061e8bc12(可能是某个进程的句柄对象的HASH值)。其中红色框部分表示每个kctx(进程)使用了gpu内存页数,所有的kctx的内存页数之和等于mali0的内存页个数;后面绿色框部分表示每个kctx对应的进程PID,大多数进程通常只会存在一个kctx,但是也有个别应用或者进程拥有多个kctx,例如上图中的PID为25212进程。

3、经典案例

案例1:GPU伪造信息方案

问题描述:com.wemade.mir4global游戏在google play第一次启动的时候出现不支持纹理的提示框,且游戏界面人物显示异常打上了马赛克

问题分析:此游戏在google等对比机上面能够正常使用和显示,并没有此类弹框,根据弹框可以支持提示的此平台的opengl部分纹理格式,且有如下异常日志

最后结论:经过大量测试发现此现象只出现在IMG平台上,MTK做了如下实验,将img的gpu fake to mali(fake的意思就是伪造GPU的型号信息,即三方应用读取GPU的型号出来就不再是IMG二手MAILI)之后就能正常启动

问题总结:此题是APP问题,fake GPU以后游戏显示正常。所以和DDK修改无关。fake GPU有效果。是APP将img的gpu fake to mali的,游戏显示正常了。是MIR4对GPU的型号做了区分,所以表现形式不一样

修改方案:通过代码方式伪造GPU信息为ARM

案例2:GPU内存统计算法

问题描述:Pizza Ready 12.0.0 Screen record in Game mode assist disappear after playing

问题分析:在Android 14的手机上玩Pizza Ready游戏过程中,出现screen record进程被杀,此时dump了该应用内存使用情况,并与对比机进行了对比,发现GL占用相差500M

后对比了多款机器此应用adb shell dumpsys meminfo io.supercent.pizzaidle的表现如下,从此结果可以看出来在Dimensity 6300+kernel 5.15+android 14的平台上必现,在Helio系列的机器均不出现,初步怀疑此问题为平台基线共性问题

后对比了多款机器在其他应用的表现,是否也存在差异如下表,从此表结果可以看出pizzaidle单独应用存在:

最后MTK和Arm给到的回复为GPU统计BUG,即pizzaidle存在多个kctx,之前的统计方式只计算了第一个kctx,因此只有几M,后加入修复patch,轮询统计某进程对应的所有kctx,所以计算出来有500多M,patch如下:

相关文章:

Android 常用命令和工具解析之GPU相关

目录 1、GPU基本信息 1.1 获取GPU基本信息 1.2 伪造GPU基本信息 2、GPU内存信息 3、经典案例 案例1:GPU伪造信息方案 案例2:GPU内存统计算法 GPU 指的是 Graphics Processing Unit,即图形处理单元。GPU 是一种专门用于处理图形和图像相…...

刷题——【模板】二维前缀和

前缀和 题目题目链接题解方法一方法二 题目 描述 给你一个 n 行 m 列的矩阵 A ,下标从1开始。 接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2 请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和, 输入描述&#x…...

Xilinx 7 系列 FPGA的各引脚外围电路接法

Xilinx 7系列FPGA的外围电路接法涉及到多个方面,包括电源引脚、时钟输入引脚、FPGA配置引脚、JTAG调试引脚,以及其他辅助引脚。 本文参考资料: ds180 - 7 Series FPGAs Data Sheet - Overview ds181 - Artix 7 FPGAs Data Sheet - DC and AC…...

Python 爬虫 (1)基础 | 目标网站

一、目标网站 1、加密网站 1.1、关键字比较明确 企名片:https://wx.qmpsee.com/articleDetail?idfeef62bfdac45a94b9cd89aed5c235be 1.2、关键字比较泛 烯牛数据:https://www.xiniudata.com/project/event/lib/invest...

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者,如果前面的lab还没掌握好的,可以直接跳过这节内容。有时间的同学,可以熟悉掌握下这个flow。 数字后端…...

量子卷积神经网络

量子神经网络由量子卷积层、量子池化层和量子全连接层组成 量子卷积层和量子池化层交替放置,分别实现特征提取和特征降维,之后通过量子全连接层进行特征综合 量子卷积层、量子池化层和量子全连接层分别由量子卷积单元、量子池化单元和量子全连接单元组…...

储能电站构成及控制原理

系列文章目录 能量管理系统(EMS)储能充放电策略 文章目录 系列文章目录一、储能电站构成二、储能系统关键部件及作用1.电池储能系统2.功率变换系统(Power Conversion System,PCS)3.变配电系统4.后台监控系统5.继电保护及安全自动装置 三、储能电站的功能四、储能电站控制策略 …...

Rocky Linux 系统安装/部署 Docker

1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

12 —— Webpack中向前端注入环境变量

需求:开发模式下打印语句生效,生产模式下打印语句失效 使用Webpack内置的DefinePlugin插件 const webpack require(webpack) module.exports { plugins: [ new webpack.DefinePlugin({ process.env.NODE_ENV:JSON.stringify(process.env.NODE_ENV) }…...

uniapp接入BMapGL百度地图

下面代码兼容安卓APP和H5 百度地图官网:控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...

外卖系统开发实战:从架构设计到代码实现

开发一套外卖系统,需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例,展示如何构建一个基础的外卖系统,从需求梳理到核心模块的实现,帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...

神经网络反向传播算法公式推导

要推导反向传播算法,并了解每一层的参数梯度如何计算,以及每一层的梯度受到哪些值的影响,我们使用一个简单的神经网络结构: 输入层有2个节点一个有2个节点的隐藏层,激活函数是ReLU一个输出节点,激活函数是…...

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种...

【shodan】(三)vnc漏洞利用

shodan基础(三) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...

每日OJ_牛客_游游的字母串_枚举_C++_Java

目录 牛客_游游的字母串_枚举 题目解析 C代码 Java代码 牛客_游游的字母串_枚举 游游的字母串 描述: 对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。a和b相邻,b和c相邻,以此类推。特殊的&#xff0…...

51c深度学习~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」,主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…...

嵌入式:Flash的分类以及Jlink/J-flash的编程支持

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 常见的Flash大致可以分为以下大类: Serial Nor FlashSerial Nand FlashParallel Nor FlashParallel Nand FlashSerial EEPROM Serial Nor Flash 介绍 Se…...

【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)

项目地址 GitHub - mendableai/firecrawl: 🔥 Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API. Firecrawl更多是使用在LLM大模型知识库的构建,是大模型数据准备中的一环(在…...

遗传算法(Genetic Algorithm, GA)

简介 遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传机制的优化算法,由 John Holland 于20世纪70年代提出。它是一种模拟生物进化过程的启发式搜索算法,被广泛应用于函数优化、机器学习、调度问题等领域。 代码说明 …...

【二分答案+倍增快速幂】课堂练习

P1678 烦恼的高考志愿 #include<bits/stdc.h> using namespace std; const int N1e55; int n,m,a[N];long long bs(int x){int l1,rn;while(l<r){int midlr>>1;if(a[mid]x) return 0;if(a[mid]>x) rmid-1;else lmid1;}//根据前驱后继返回最小差值//printf(&…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

使用python进行图像处理—图像滤波(5)

图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值&#xff0c;以达到平滑&#xff08;去噪&#xff09;、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算&#xff0c;…...