From a3ff33368b1e29491a8412c3b5021aed3ee12478 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 4 Jan 2019 16:59:26 +0000 Subject: [PATCH] Add some useful android logging for post-mortem debugging --- renderdoc/android/android.cpp | 4 ++++ renderdoc/android/android_utils.cpp | 16 +++++++++++++++- renderdoc/android/android_utils.h | 2 ++ renderdoc/android/jdwp.cpp | 9 +++++---- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/renderdoc/android/android.cpp b/renderdoc/android/android.cpp index c8b68ffca..fd415a77c 100644 --- a/renderdoc/android/android.cpp +++ b/renderdoc/android/android.cpp @@ -630,6 +630,10 @@ extern "C" RENDERDOC_API ReplayStatus RENDERDOC_CC RENDERDOC_StartAndroidRemoteS std::vector abis = Android::GetSupportedABIs(deviceID); + RDCLOG("Starting RenderDoc server, supported ABIs:"); + for(Android::ABI abi : abis) + RDCLOG(" - %s", ToStr(abi).c_str()); + if(abis.empty()) return ReplayStatus::UnknownError; diff --git a/renderdoc/android/android_utils.cpp b/renderdoc/android/android_utils.cpp index 2829a7cde..d146285b2 100644 --- a/renderdoc/android/android_utils.cpp +++ b/renderdoc/android/android_utils.cpp @@ -173,4 +173,18 @@ std::string GetFriendlyName(std::string deviceID) return combined; } -}; \ No newline at end of file +}; + +template <> +std::string DoStringise(const Android::ABI &el) +{ + BEGIN_ENUM_STRINGISE(Android::ABI); + { + STRINGISE_ENUM_CLASS(unknown); + STRINGISE_ENUM_CLASS(armeabi_v7a); + STRINGISE_ENUM_CLASS(arm64_v8a); + STRINGISE_ENUM_CLASS(x86); + STRINGISE_ENUM_CLASS(x86_64); + } + END_ENUM_STRINGISE(); +} \ No newline at end of file diff --git a/renderdoc/android/android_utils.h b/renderdoc/android/android_utils.h index 26321b61c..7d4878da9 100644 --- a/renderdoc/android/android_utils.h +++ b/renderdoc/android/android_utils.h @@ -69,3 +69,5 @@ std::string GetPathForPackage(const std::string &deviceID, const std::string &pa bool PatchManifest(std::vector &manifest); }; + +DECLARE_REFLECTION_ENUM(Android::ABI); \ No newline at end of file diff --git a/renderdoc/android/jdwp.cpp b/renderdoc/android/jdwp.cpp index 4737db3ff..213998f9a 100644 --- a/renderdoc/android/jdwp.cpp +++ b/renderdoc/android/jdwp.cpp @@ -157,6 +157,8 @@ bool InjectLibraries(const std::string &deviceID, Network::Socket *sock) case Android::ABI::x86: libPath += "lib/x86"; break; } + RDCLOG("Injecting RenderDoc from library in %s", libPath.c_str()); + if(conn.IsErrored()) return false; @@ -377,13 +379,12 @@ bool InjectLibraries(const std::string &deviceID, Network::Socket *sock) // call Runtime.load() on our library. This will load the library and from then on it's // responsible for injecting its hooks into GLES on its own. See android_hook.cpp for more // information on the implementation - value ret = - conn.InvokeInstance(thread, runtime, load, runtimeObject.Object, - {conn.NewString(thread, libPath + "/libVkLayer_GLES_RenderDoc.so")}); + value ret = conn.InvokeInstance(thread, runtime, load, runtimeObject.Object, + {conn.NewString(thread, libPath + "/" RENDERDOC_ANDROID_LIBRARY)}); if(ret.tag != Tag::Void) { - RDCERR("Failed to call load()!"); + RDCERR("Failed to call load(%s/%s)!", libPath.c_str(), RENDERDOC_ANDROID_LIBRARY); return false; }