Loading libs/graphicsenv/GraphicsEnv.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -269,14 +269,14 @@ static sp<IGpuService> getGpuService() { return interface_cast<IGpuService>(binder); } void GraphicsEnv::setCpuVulkanInUse() { void GraphicsEnv::setTargetStats(const Stats stats, const uint64_t value) { 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); gpuService->setTargetStats(mGpuStats.appPackageName, mGpuStats.driverVersionCode, stats, value); } } Loading libs/graphicsenv/IGpuService.cpp +14 −5 Original line number Diff line number Diff line Loading @@ -92,15 +92,17 @@ public: return reply.readParcelableVector(outStats); } virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { virtual void setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value) { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); data.writeUtf8AsUtf16(appPackageName); data.writeUint64(driverVersionCode); data.writeInt32(static_cast<int32_t>(stats)); data.writeUint64(value); remote()->transact(BnGpuService::SET_CPU_VULKAN_IN_USE, data, &reply, IBinder::FLAG_ONEWAY); remote()->transact(BnGpuService::SET_TARGET_STATS, data, &reply, IBinder::FLAG_ONEWAY); } }; Loading Loading @@ -174,7 +176,7 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep return OK; } case SET_CPU_VULKAN_IN_USE: { case SET_TARGET_STATS: { CHECK_INTERFACE(IGpuService, data, reply); std::string appPackageName; Loading @@ -183,7 +185,14 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep uint64_t driverVersionCode; if ((status = data.readUint64(&driverVersionCode)) != OK) return status; setCpuVulkanInUse(appPackageName, driverVersionCode); int32_t stats; if ((status = data.readInt32(&stats)) != OK) return status; uint64_t value; if ((status = data.readUint64(&value)) != OK) return status; setTargetStats(appPackageName, driverVersionCode, static_cast<GraphicsEnv::Stats>(stats), value); return OK; } Loading libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +5 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ public: ANGLE = 5, }; enum Stats { CPU_VULKAN_IN_USE = 0, }; private: struct GpuStats { std::string driverPackageName; Loading Loading @@ -96,7 +100,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 setTargetStats(const Stats stats, const uint64_t value = 0); void setDriverToLoad(Driver driver); void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime); void sendGpuStatsLocked(Api api, bool isDriverLoaded, int64_t driverLoadingTime); Loading libs/graphicsenv/include/graphicsenv/IGpuService.h +4 −4 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public: const int32_t vulkanVersion, GraphicsEnv::Driver driver, bool isDriverLoaded, int64_t driverLoadingTime) = 0; // set CPU Vulkan in use signal from GraphicsEnvironment. virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) = 0; // set target stats. virtual void setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value = 0) = 0; // get GPU global stats from GpuStats module. virtual status_t getGpuStatsGlobalInfo(std::vector<GpuStatsGlobalInfo>* outStats) const = 0; Loading @@ -57,7 +57,7 @@ public: SET_GPU_STATS = IBinder::FIRST_CALL_TRANSACTION, GET_GPU_STATS_GLOBAL_INFO, GET_GPU_STATS_APP_INFO, SET_CPU_VULKAN_IN_USE, SET_TARGET_STATS, // Always append new enum to the end. }; Loading services/gpuservice/GpuService.cpp +3 −13 Original line number Diff line number Diff line Loading @@ -53,33 +53,23 @@ void GpuService::setGpuStats(const std::string& driverPackageName, int64_t driverBuildTime, const std::string& appPackageName, const int32_t vulkanVersion, GraphicsEnv::Driver driver, bool isDriverLoaded, int64_t driverLoadingTime) { ATRACE_CALL(); mGpuStats->insert(driverPackageName, driverVersionName, driverVersionCode, driverBuildTime, appPackageName, vulkanVersion, driver, isDriverLoaded, driverLoadingTime); } status_t GpuService::getGpuStatsGlobalInfo(std::vector<GpuStatsGlobalInfo>* outStats) const { ATRACE_CALL(); mGpuStats->pullGlobalStats(outStats); return OK; } status_t GpuService::getGpuStatsAppInfo(std::vector<GpuStatsAppInfo>* outStats) const { ATRACE_CALL(); mGpuStats->pullAppStats(outStats); return OK; } void GpuService::setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { ATRACE_CALL(); mGpuStats->setCpuVulkanInUse(appPackageName, driverVersionCode); void GpuService::setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value) { mGpuStats->insertTargetStats(appPackageName, driverVersionCode, stats, value); } status_t GpuService::shellCommand(int /*in*/, int out, int err, std::vector<String16>& args) { Loading Loading
libs/graphicsenv/GraphicsEnv.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -269,14 +269,14 @@ static sp<IGpuService> getGpuService() { return interface_cast<IGpuService>(binder); } void GraphicsEnv::setCpuVulkanInUse() { void GraphicsEnv::setTargetStats(const Stats stats, const uint64_t value) { 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); gpuService->setTargetStats(mGpuStats.appPackageName, mGpuStats.driverVersionCode, stats, value); } } Loading
libs/graphicsenv/IGpuService.cpp +14 −5 Original line number Diff line number Diff line Loading @@ -92,15 +92,17 @@ public: return reply.readParcelableVector(outStats); } virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { virtual void setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value) { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); data.writeUtf8AsUtf16(appPackageName); data.writeUint64(driverVersionCode); data.writeInt32(static_cast<int32_t>(stats)); data.writeUint64(value); remote()->transact(BnGpuService::SET_CPU_VULKAN_IN_USE, data, &reply, IBinder::FLAG_ONEWAY); remote()->transact(BnGpuService::SET_TARGET_STATS, data, &reply, IBinder::FLAG_ONEWAY); } }; Loading Loading @@ -174,7 +176,7 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep return OK; } case SET_CPU_VULKAN_IN_USE: { case SET_TARGET_STATS: { CHECK_INTERFACE(IGpuService, data, reply); std::string appPackageName; Loading @@ -183,7 +185,14 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep uint64_t driverVersionCode; if ((status = data.readUint64(&driverVersionCode)) != OK) return status; setCpuVulkanInUse(appPackageName, driverVersionCode); int32_t stats; if ((status = data.readInt32(&stats)) != OK) return status; uint64_t value; if ((status = data.readUint64(&value)) != OK) return status; setTargetStats(appPackageName, driverVersionCode, static_cast<GraphicsEnv::Stats>(stats), value); return OK; } Loading
libs/graphicsenv/include/graphicsenv/GraphicsEnv.h +5 −1 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ public: ANGLE = 5, }; enum Stats { CPU_VULKAN_IN_USE = 0, }; private: struct GpuStats { std::string driverPackageName; Loading Loading @@ -96,7 +100,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 setTargetStats(const Stats stats, const uint64_t value = 0); void setDriverToLoad(Driver driver); void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime); void sendGpuStatsLocked(Api api, bool isDriverLoaded, int64_t driverLoadingTime); Loading
libs/graphicsenv/include/graphicsenv/IGpuService.h +4 −4 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public: const int32_t vulkanVersion, GraphicsEnv::Driver driver, bool isDriverLoaded, int64_t driverLoadingTime) = 0; // set CPU Vulkan in use signal from GraphicsEnvironment. virtual void setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) = 0; // set target stats. virtual void setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value = 0) = 0; // get GPU global stats from GpuStats module. virtual status_t getGpuStatsGlobalInfo(std::vector<GpuStatsGlobalInfo>* outStats) const = 0; Loading @@ -57,7 +57,7 @@ public: SET_GPU_STATS = IBinder::FIRST_CALL_TRANSACTION, GET_GPU_STATS_GLOBAL_INFO, GET_GPU_STATS_APP_INFO, SET_CPU_VULKAN_IN_USE, SET_TARGET_STATS, // Always append new enum to the end. }; Loading
services/gpuservice/GpuService.cpp +3 −13 Original line number Diff line number Diff line Loading @@ -53,33 +53,23 @@ void GpuService::setGpuStats(const std::string& driverPackageName, int64_t driverBuildTime, const std::string& appPackageName, const int32_t vulkanVersion, GraphicsEnv::Driver driver, bool isDriverLoaded, int64_t driverLoadingTime) { ATRACE_CALL(); mGpuStats->insert(driverPackageName, driverVersionName, driverVersionCode, driverBuildTime, appPackageName, vulkanVersion, driver, isDriverLoaded, driverLoadingTime); } status_t GpuService::getGpuStatsGlobalInfo(std::vector<GpuStatsGlobalInfo>* outStats) const { ATRACE_CALL(); mGpuStats->pullGlobalStats(outStats); return OK; } status_t GpuService::getGpuStatsAppInfo(std::vector<GpuStatsAppInfo>* outStats) const { ATRACE_CALL(); mGpuStats->pullAppStats(outStats); return OK; } void GpuService::setCpuVulkanInUse(const std::string& appPackageName, const uint64_t driverVersionCode) { ATRACE_CALL(); mGpuStats->setCpuVulkanInUse(appPackageName, driverVersionCode); void GpuService::setTargetStats(const std::string& appPackageName, const uint64_t driverVersionCode, const GraphicsEnv::Stats stats, const uint64_t value) { mGpuStats->insertTargetStats(appPackageName, driverVersionCode, stats, value); } status_t GpuService::shellCommand(int /*in*/, int out, int err, std::vector<String16>& args) { Loading