android: Add function to push layer directly to application

This commit is contained in:
Cody Northrop
2017-08-15 09:36:20 -07:00
committed by Baldur Karlsson
parent 5c99b4fe15
commit 6c40e4e651
2 changed files with 33 additions and 0 deletions
+4
View File
@@ -1579,6 +1579,10 @@ extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_CheckAndroidPackage(const c
const char *exe,
AndroidFlags *flags);
DOCUMENT("Internal function that attempts to push Vulkan layer to Android application.");
extern "C" RENDERDOC_API bool RENDERDOC_CC RENDERDOC_PushLayerToAndroidApp(const char *host,
const char *exe);
DOCUMENT("Internal function that attempts to modify APK contents, adding Vulkan layer.");
extern "C" RENDERDOC_API bool RENDERDOC_CC RENDERDOC_AddLayerToAndroidPackage(const char *host,
const char *exe,
+29
View File
@@ -1395,6 +1395,35 @@ string FindAndroidLayer(const string &abi, const string &layerName)
return layer;
}
extern "C" RENDERDOC_API bool RENDERDOC_CC RENDERDOC_PushLayerToAndroidApp(const char *host,
const char *exe)
{
Process::ProcessResult result = {};
string packageName(basename(string(exe)));
RDCLOG("Attempting to push RenderDoc layer to %s", packageName.c_str());
int index = 0;
std::string deviceID;
Android::extractDeviceIDAndIndex(host, index, deviceID);
// Detect which ABI was installed on the device
string abi = DetermineInstalledABI(deviceID, packageName);
// Find the layer on host
string layerName("libVkLayer_GLES_RenderDoc.so");
string layerPath = FindAndroidLayer(abi, layerName);
if(layerPath.empty())
return false;
string layerDst = "/data/data/" + packageName + "/lib/";
result = adbExecCommand(deviceID, "push " + layerPath + " " + layerDst);
// Ensure the push succeeded
return SearchForAndroidLayer(deviceID, layerDst, layerName);
}
extern "C" RENDERDOC_API bool RENDERDOC_CC RENDERDOC_AddLayerToAndroidPackage(const char *host,
const char *exe,
float *progress)