Loading libs/graphicsenv/GpuStatsInfo.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ status_t GpuStatsAppInfo::writeToParcel(Parcel* parcel) const { if ((status = parcel->writeInt64Vector(glDriverLoadingTime)) != OK) return status; if ((status = parcel->writeInt64Vector(vkDriverLoadingTime)) != OK) return status; if ((status = parcel->writeInt64Vector(angleDriverLoadingTime)) != OK) return status; if ((status = parcel->writeBool(cpuVulkanInUse)) != OK) return status; return OK; } Loading @@ -95,6 +96,7 @@ status_t GpuStatsAppInfo::readFromParcel(const Parcel* parcel) { if ((status = parcel->readInt64Vector(&glDriverLoadingTime)) != OK) return status; if ((status = parcel->readInt64Vector(&vkDriverLoadingTime)) != OK) return status; if ((status = parcel->readInt64Vector(&angleDriverLoadingTime)) != OK) return status; if ((status = parcel->readBool(&cpuVulkanInUse)) != OK) return status; return OK; } Loading @@ -102,6 +104,7 @@ std::string GpuStatsAppInfo::toString() const { std::string result; StringAppendF(&result, "appPackageName = %s\n", appPackageName.c_str()); StringAppendF(&result, "driverVersionCode = %" PRIu64 "\n", driverVersionCode); StringAppendF(&result, "cpuVulkanInUse = %d\n", cpuVulkanInUse); result.append("glDriverLoadingTime:"); for (int32_t loadingTime : glDriverLoadingTime) { StringAppendF(&result, " %d", loadingTime); Loading libs/graphicsenv/GraphicsEnv.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,17 @@ static sp<IGpuService> getGpuService() { return interface_cast<IGpuService>(binder); } void GraphicsEnv::setCpuVulkanInUse() { ATRACE_CALL(); // Use the same stats lock to protect getGpuService() as well. std::lock_guard<std::mutex> lock(mStatsLock); const sp<IGpuService> gpuService = getGpuService(); if (gpuService) { gpuService->setCpuVulkanInUse(mGpuStats.appPackageName, mGpuStats.driverVersionCode); } } void GraphicsEnv::sendGpuStatsLocked(GraphicsEnv::Api api, bool isDriverLoaded, int64_t driverLoadingTime) { ATRACE_CALL(); Loading libs/graphicsenv/IGpuService.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,17 @@ public: outStats->clear(); return reply.readParcelableVector(outStats); } virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); data.writeUtf8AsUtf16(appPackageName); data.writeUint64(driverVersionCode); remote()->transact(BnGpuService::SET_CPU_VULKAN_IN_USE, data, &reply, IBinder::FLAG_ONEWAY); } }; IMPLEMENT_META_INTERFACE(GpuService, "android.graphicsenv.IGpuService"); Loading Loading @@ -163,6 +174,19 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep return OK; } case SET_CPU_VULKAN_IN_USE: { CHECK_INTERFACE(IGpuService, data, reply); std::string appPackageName; if ((status = data.readUtf8FromUtf16(&appPackageName)) != OK) return status; uint64_t driverVersionCode; if ((status = data.readUint64(&driverVersionCode)) != OK) return status; setCpuVulkanInUse(appPackageName, driverVersionCode); return OK; } case SHELL_COMMAND_TRANSACTION: { int in = data.readFileDescriptor(); int out = data.readFileDescriptor(); Loading libs/graphicsenv/include/graphicsenv/GpuStatsInfo.h +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ public: std::vector<int64_t> glDriverLoadingTime = {}; std::vector<int64_t> vkDriverLoadingTime = {}; std::vector<int64_t> angleDriverLoadingTime = {}; bool cpuVulkanInUse = false; }; } // namespace android libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +1 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ public: void setGpuStats(const std::string& driverPackageName, const std::string& driverVersionName, uint64_t versionCode, int64_t driverBuildTime, const std::string& appPackageName, const int32_t vulkanVersion); void setCpuVulkanInUse(); void setDriverToLoad(Driver driver); void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime); void sendGpuStatsLocked(Api api, bool isDriverLoaded, int64_t driverLoadingTime); Loading Loading
libs/graphicsenv/GpuStatsInfo.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ status_t GpuStatsAppInfo::writeToParcel(Parcel* parcel) const { if ((status = parcel->writeInt64Vector(glDriverLoadingTime)) != OK) return status; if ((status = parcel->writeInt64Vector(vkDriverLoadingTime)) != OK) return status; if ((status = parcel->writeInt64Vector(angleDriverLoadingTime)) != OK) return status; if ((status = parcel->writeBool(cpuVulkanInUse)) != OK) return status; return OK; } Loading @@ -95,6 +96,7 @@ status_t GpuStatsAppInfo::readFromParcel(const Parcel* parcel) { if ((status = parcel->readInt64Vector(&glDriverLoadingTime)) != OK) return status; if ((status = parcel->readInt64Vector(&vkDriverLoadingTime)) != OK) return status; if ((status = parcel->readInt64Vector(&angleDriverLoadingTime)) != OK) return status; if ((status = parcel->readBool(&cpuVulkanInUse)) != OK) return status; return OK; } Loading @@ -102,6 +104,7 @@ std::string GpuStatsAppInfo::toString() const { std::string result; StringAppendF(&result, "appPackageName = %s\n", appPackageName.c_str()); StringAppendF(&result, "driverVersionCode = %" PRIu64 "\n", driverVersionCode); StringAppendF(&result, "cpuVulkanInUse = %d\n", cpuVulkanInUse); result.append("glDriverLoadingTime:"); for (int32_t loadingTime : glDriverLoadingTime) { StringAppendF(&result, " %d", loadingTime); Loading
libs/graphicsenv/GraphicsEnv.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,17 @@ static sp<IGpuService> getGpuService() { return interface_cast<IGpuService>(binder); } void GraphicsEnv::setCpuVulkanInUse() { ATRACE_CALL(); // Use the same stats lock to protect getGpuService() as well. std::lock_guard<std::mutex> lock(mStatsLock); const sp<IGpuService> gpuService = getGpuService(); if (gpuService) { gpuService->setCpuVulkanInUse(mGpuStats.appPackageName, mGpuStats.driverVersionCode); } } void GraphicsEnv::sendGpuStatsLocked(GraphicsEnv::Api api, bool isDriverLoaded, int64_t driverLoadingTime) { ATRACE_CALL(); Loading
libs/graphicsenv/IGpuService.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,17 @@ public: outStats->clear(); return reply.readParcelableVector(outStats); } virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); data.writeUtf8AsUtf16(appPackageName); data.writeUint64(driverVersionCode); remote()->transact(BnGpuService::SET_CPU_VULKAN_IN_USE, data, &reply, IBinder::FLAG_ONEWAY); } }; IMPLEMENT_META_INTERFACE(GpuService, "android.graphicsenv.IGpuService"); Loading Loading @@ -163,6 +174,19 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep return OK; } case SET_CPU_VULKAN_IN_USE: { CHECK_INTERFACE(IGpuService, data, reply); std::string appPackageName; if ((status = data.readUtf8FromUtf16(&appPackageName)) != OK) return status; uint64_t driverVersionCode; if ((status = data.readUint64(&driverVersionCode)) != OK) return status; setCpuVulkanInUse(appPackageName, driverVersionCode); return OK; } case SHELL_COMMAND_TRANSACTION: { int in = data.readFileDescriptor(); int out = data.readFileDescriptor(); Loading
libs/graphicsenv/include/graphicsenv/GpuStatsInfo.h +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ public: std::vector<int64_t> glDriverLoadingTime = {}; std::vector<int64_t> vkDriverLoadingTime = {}; std::vector<int64_t> angleDriverLoadingTime = {}; bool cpuVulkanInUse = false; }; } // namespace android
libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +1 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ public: void setGpuStats(const std::string& driverPackageName, const std::string& driverVersionName, uint64_t versionCode, int64_t driverBuildTime, const std::string& appPackageName, const int32_t vulkanVersion); void setCpuVulkanInUse(); void setDriverToLoad(Driver driver); void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime); void sendGpuStatsLocked(Api api, bool isDriverLoaded, int64_t driverLoadingTime); Loading