自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 renderdoc源码分析(四) 重放

先贴下飞书文档,后续找时间再整理到这。

2023-08-15 11:18:17 533

原创 renderdoc 命令行说明

本文主要说明renderdoc 的2个命令 renderdoccmd、qrenderdoc 常见用法

2023-04-05 15:44:48 1043

原创 renderdoc源码分析(二) resource manager

写在前面 1. 只针对renderdoc opengl es 场景进行说明, vukan的没有,不过其实应该也差不多啦,若有必要后面再考虑补上。2. 本文使用 文字+图+代码 的方式叙述,若只想了解原理过程,可忽略代码部分,由于renderdoc代码还算复杂和乱,代码部分主要是辅助有兴趣阅读源码的同学去抓住代码主要逻辑。3. 对一帧抓流时, 1. 开始时机:前一帧swapbuffer时,具体逻辑做在StartFrameCapture()接口; 2. 结束

2023-04-04 18:02:35 1628

原创 renderdoc源码分析(三) 抓流

renderdoc抓流过程

2023-04-04 17:48:52 755 1

原创 renderdoc 相关名词说明

renderdoc 相关名词说明

2023-04-04 17:17:45 568

原创 Android SurfaceTexture说明

Android SurfaceTexture、EGLImage、GL_TEXTURE_EXTERNAL_OES、外部纹理、YUV等相关技术

2023-03-07 22:40:46 3528

原创 GraphicBuffer、AHardwareBuffer、ANativeWindowBuffer关系

GraphicBuffer、AHardwareBuffer、ANativeWindowBuffer关系

2022-10-21 11:09:40 3235

原创 renderdoc 源码分析(一) 编译

本文分析说明renderdoc一些主要功能,包括编译,launch apk, hook opengl es 库流程,抓流流程,rdc文件从设备端传到host端流程,重放流程,org.renderdoc.renderdoccmd.arm64.apk, target apk 分别负责的事情等。由于笔者使用renderdoc 抓流分析的对象是Android11 移动设备,所以所有场景均基于此说明,同学们勿对所有场景对号入座。文章讲的比较基础,面向初级读者,文章若有不对的地方欢迎指正,也欢迎加V交流(155

2022-06-05 11:54:06 1970

原创 Android Studio 添加jni代码

昨天要写个apk 练习用opengl es 画图, 不想在java里边直接调opengles, 想通过jni在cpp里边去调, 所以需要加上jni代码, 弄了3小时才搞出来,感觉坑还有点多, 遂记录一下步骤方便后面使用, 添加jni的方法有多种,这里只记录下本人搞出来的那种.1. 编写声明native 接口的java文件声明3个native 接口 public native void initImpl(); public native void resizeImpl();...

2021-12-23 16:01:00 2545

原创 android touch事件传递/inputflinger流程分析

由于项目需要,需要了解下android touch数据的传递流程,看了下代码后把过程记录下来,方便后面查阅。本文章基于Android11开源源码,所有代码均可以在aosp官方提供的地址去查阅下载,Android11具体流程可能和其他Android版本有点不一致,如果文中有不对的地方欢迎同学们指出一起讨论交流~从4条线(4个方向)来分析android 的touch 数据传送机制,沿途主要关注touch数据从kernel出来到app的路线,把这条路打通,不关注细节,以及touch数据是如何决定给到哪

2021-08-02 16:58:46 2002 1

原创 Android oom机制浅析

本文主要基于android11,整理了android关于 oom killer, lowmemorykiller(lmk lmkd), kswapd的知识,还未深入去分析源码。目录linux oomoom_adj、oom_score、oom_score_adj三者的关系android low memory killer(lmk)android app oomkswapdzRAMkswapd 和lmkd总结linux oom杀进程规则:按优先级,/proc/pid/

2021-07-07 20:33:00 2609 3

原创 下载Android源码

本文参考了https://www.jianshu.com/p/001335490061,感谢作者分享。git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifestcd manifestgit tag#切到需要的分支git checkout android-11.0.0_r9#以要下载frameworks/base 为例# 打开manifest目录下的default.xml文件# 找到 <project pat.

2021-02-11 17:18:51 274

原创 android 使用ninja编译单个模块

适用android8/9/10在android源码根目录下source.lunch后,./prebuilts/build-tools/linux-x86/bin/ninja -f ./out/combined-******.ninja module-namenote:ninja用prebuilts 底下的那个就行, -f 指定ninja文件, out目录下选择对应的ninja文件, module-name为需要编译的目标文件。...

2020-06-10 20:00:23 2442

原创 android 里边添加hidl服务

笔者在Android 9 通过以下方式添加hidl服务,理论上对Android 8/9/10 都适用,对于为何要有hidl这个东西以及如何添加hidl服务,google在https://source.android.google.cn/devices/architecture/hidl 里边有说明,只是添加步骤不够详细,本人之前踩过一些坑折腾了好一会儿才添加成功,所以才想写这篇文章和同学们一起交流学习,本文目前只描述如何做不描述底层原理(底层也是用来binder),文章内容全部是基于android开源技

2020-06-05 21:43:46 3851 2

原创 编译出现 unused parameter [-Werror,-Wunused-parameter]

编译时出现 unused parameter [-Werror,-Wunused-parameter]可通过在 cflags里边 添加"-Wno-unused-parameter" 进行解决

2020-05-28 16:01:43 13036

原创 linux epoll 源码分析

本文章源码基于kernel 5.5版本,主要分析epoll在kernel的实现原理,主要源码在 kernel/fs/eventpoll.c。一,关键结构体关键结构体主要有以下2个需要留意,里边包含的成员用来干嘛同学们看代码应该看得懂,在此只是简单提一下。struct eventpoll ,struct epitem,这边需要留意的主要就这2个结构体,eventpoll每个进程调e...

2020-04-15 15:49:14 645

原创 深入分析Android SensorService

四个多月前就想写这个了文章了,一直没空写,今天把有空就写一下吧。本篇文章主要内容如下目录1,Android 各模块关系基本流程图2, SensorService启动3, 应用注册一个sensor流程4, SensorService如何将sensor数据给到应用5,待机后SensorService行为6,融合sensor(SensorFusion)7,...

2019-07-27 13:47:36 13338 4

原创 linux kernel prink 打印格式

          int                      %d or %x        unsigned int             %u or %x        long                     %ld or %lx        unsigned long            %lu or %lx        long long      ...

2019-01-28 15:03:43 637

原创 linux kernel workqueue 简单使用

struct work_struct work;struct workqueue_struct* work_wq;static void run_work(struct work_struct* work){ //do something}//创建工作队列work_wq = create_singlethread_workque...

2019-01-26 23:35:43 409

原创 linux kerner 获取当前时间和时间差

 struct timeval current_time;struct timeval last_time;unsigned long distance_time = 0;do_gettimeofday(&amp;last_time);//do somethingdo_gettimeofday(&amp;current_time);distance_time...

2019-01-26 21:25:04 815

原创 Android 打印调用栈

1,javaLog.d(TAG, Log.getStackTraceString(new Throwable()));2,c++ #include &lt;utils/CallStack.h&gt;android::CallStack stack("your log tag");android.bp 添加shared_libs: ["libutilscallst...

2018-12-13 15:47:54 1344

原创 linux input event简单使用

最近需要在kernel  的驱动里边将事件传到用户空间,打算用input子系统做,用户空间开一个线程用epoll方式来读取数据,记录一下如何快速简单使用input子系统上报事件。//定义一个input_dev 类型结构体变量static struct input_dev* test_input_dev = NULL;//创建并初始化 test_input_dev = input...

2018-11-02 07:52:54 5601

原创 linux device tree 摘要

1, dtsi与dts的关系dtsi相当于c语言的.h头文件,放置soc共有的内容和各machine共同的内容,一个.dts文件对应一个ARM的machine,可以include 需要的dtsi文件。并且dtsi也可以include其他的dtsi文件(好比如c语言的.h也可以include其他.h)。2, compatible 属性在dts 里边的每个设备都有一个compati...

2018-09-09 16:01:14 1350

原创 linux 驱动probe 被调用流程分析

前言: 对于linux platform device 和driver,一个driver可对应多个device,通过名字进行匹配,调用驱动里边实现的probe函数,本文以一个i2c设备为例,从驱动的i2c_add_driver()开始看源码以及用比较笨的打log的方式分析如何一步一步调用的probe()函数。分析的代码基于linux kernel msm-4.9。/************...

2018-08-26 16:53:13 14881 7

原创 Android C++获取线程id,进程id

Android 在c++代码里边获取pid,tid:#include &lt;sys/syscall.h&gt;int tid = (int)syscall(SYS_gettid);int pid = (int)syscall(SYS_getpid);

2018-05-14 21:06:21 4562 6

原创 Android Framework SensorService 分析

1 SensorService  的启动1.1 SensorService:onFirsrRef()SensorService 运行在 system_server 里边,在android/frameworks/base/services/core/jni/com_android_server_SystemServer.cpp通过实例化一个 SensorService 对象启动,如下:1. stat...

2018-05-09 21:43:44 4197

原创 Android的 google hal层 sensor分析

分析的Android版本为:Android 8.0,Android 8.11.,google-hal层的sensor作为一个server在运行,通过ps |grep sensor可以看到如下进程名字,通过hidl机制与framework的SensorService(的SensorDevice)通信,源码位于android/hardware/interfaces/sensors/1.0/defaul...

2018-05-09 20:43:07 5570 1

原创 Android SensorManager,SystemSensorManager,SensorService调用过程分析

本文主要分析android 在应用层register一个sensor后从应用层调用到framework SensorService的过程。版本:android 8.0.0,abdroid 8.1.0大致调用顺序为:appliction ===&gt;SensorManager===&gt;SystemSeneorManager===&gt;Sensorservice1,对于应用层,举个使用的小例子...

2018-03-04 19:04:59 3183

原创 Android framework层获取调用者(app)的pid,uid

java里边可以使用 int pid = Binder.getCallingPid(); int uid = Binder.getCallingUid(); String callingApp = mContext.getPackageManager().getNameForUid(uid);C++里边可以使用 IPCThreadSt...

2018-02-24 21:03:46 6099 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除