renderdoc流程分析
启动
- Renderdoc qt进程启动时,开了一个m_RemoteProbe线程,进行轮循并adb forward连接remote端


将PC端的数据,转发到手机端的server端口

- Install renderdoc apk



- Launch render apk


由于2中启动时传的command name是 remoteserver,因此会走到

自此apk进程为server端已经创建好
重放:
client端:
- 拷贝rdc文件

- Load rdc文件

server端:
- 拷贝rdc文件

- Load rdc文件

- 创建rdc driver

WrappedOpenGL→GLReplay
- 重放draw call

抓流:
server:

Client:


补充
android有两个服务端,第一个是renderdoc.apk,第二个是目标apk,目标apk通过此函数来创建server tcp,并与client交互

Egl hook流程:
- 入口

- 该函数是由宏定义,具体位置:




GL.function在图1处赋值,为实际的gl函数地址
编译:
- PC端编译
cd renderdoc-1.13
mkdir build
cd build
cmake ..
cmake --build . -j 16- Android编译
#!/bin/bash
rootDir=$( pwd )
echo "rootDir:"$rootDir
#build host
export PATH=/usr/local/opt/qt@5/bin:$PATH
rm -rf build
mkdir -p build
cd ./build
cmake -G Ninja .. -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
ninja
cd $rootDir
#build apk
rm -rf build-android
mkdir -p build-android
cd $rootDir
cd ./build-android
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a ..
make -j8
rm CMakeCache.txt
rm cmake_install.cmake
cmake -DBUILD_ANDROID=On -DANDROID_ABI=arm64-v8a ..
make -j8