Loading libs/graphicsenv/IGpuService.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,21 @@ public: } return driverPath; } FeatureOverrides getFeatureOverrides() override { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); FeatureOverrides featureOverrides; status_t error = remote()->transact(BnGpuService::GET_FEATURE_CONFIG_OVERRIDES, data, &reply); if (error != OK) { return featureOverrides; } featureOverrides.readFromParcel(&reply); return featureOverrides; } }; IMPLEMENT_META_INTERFACE(GpuService, "android.graphicsenv.IGpuService"); Loading Loading @@ -271,6 +286,15 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep toggleAngleAsSystemDriver(enableAngleAsSystemDriver); return OK; } case GET_FEATURE_CONFIG_OVERRIDES: { CHECK_INTERFACE(IGpuService, data, reply); // Get the FeatureOverrides from gpuservice, which implements the IGpuService interface // with GpuService::getFeatureOverrides(). FeatureOverrides featureOverrides = getFeatureOverrides(); featureOverrides.writeToParcel(reply); return OK; } default: return BBinder::onTransact(code, data, reply, flags); } Loading libs/graphicsenv/include/graphicsenv/IGpuService.h +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <binder/IInterface.h> #include <cutils/compiler.h> #include <graphicsenv/FeatureOverrides.h> #include <graphicsenv/GpuStatsInfo.h> #include <vector> Loading Loading @@ -55,6 +56,9 @@ public: // sets ANGLE as system GLES driver if enabled==true by setting persist.graphics.egl to true. virtual void toggleAngleAsSystemDriver(bool enabled) = 0; // Get the list of features to override. virtual FeatureOverrides getFeatureOverrides() = 0; }; class BnGpuService : public BnInterface<IGpuService> { Loading @@ -67,6 +71,7 @@ public: TOGGLE_ANGLE_AS_SYSTEM_DRIVER, SET_TARGET_STATS_ARRAY, ADD_VULKAN_ENGINE_NAME, GET_FEATURE_CONFIG_OVERRIDES, // Always append new enum to the end. }; Loading services/gpuservice/GpuService.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,15 @@ void GpuService::toggleAngleAsSystemDriver(bool enabled) { } } FeatureOverrides GpuService::getFeatureOverrides() { if (!graphicsenv_flags::feature_overrides()) { FeatureOverrides featureOverrides; return featureOverrides; } return mFeatureOverrideParser.getFeatureOverrides(); } void GpuService::setUpdatableDriverPath(const std::string& driverPath) { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); Loading services/gpuservice/include/gpuservice/GpuService.h +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <binder/IInterface.h> #include <cutils/compiler.h> #include <feature_override/FeatureOverrideParser.h> #include <graphicsenv/FeatureOverrides.h> #include <graphicsenv/GpuStatsInfo.h> #include <graphicsenv/IGpuService.h> #include <serviceutils/PriorityDumper.h> Loading Loading @@ -64,6 +65,7 @@ private: const uint64_t* values, const uint32_t valueCount) override; void setUpdatableDriverPath(const std::string& driverPath) override; std::string getUpdatableDriverPath() override; FeatureOverrides getFeatureOverrides() override; void toggleAngleAsSystemDriver(bool enabled) override; void addVulkanEngineName(const std::string& appPackageName, const uint64_t driverVersionCode, const char *engineName) override; Loading Loading
libs/graphicsenv/IGpuService.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,21 @@ public: } return driverPath; } FeatureOverrides getFeatureOverrides() override { Parcel data, reply; data.writeInterfaceToken(IGpuService::getInterfaceDescriptor()); FeatureOverrides featureOverrides; status_t error = remote()->transact(BnGpuService::GET_FEATURE_CONFIG_OVERRIDES, data, &reply); if (error != OK) { return featureOverrides; } featureOverrides.readFromParcel(&reply); return featureOverrides; } }; IMPLEMENT_META_INTERFACE(GpuService, "android.graphicsenv.IGpuService"); Loading Loading @@ -271,6 +286,15 @@ status_t BnGpuService::onTransact(uint32_t code, const Parcel& data, Parcel* rep toggleAngleAsSystemDriver(enableAngleAsSystemDriver); return OK; } case GET_FEATURE_CONFIG_OVERRIDES: { CHECK_INTERFACE(IGpuService, data, reply); // Get the FeatureOverrides from gpuservice, which implements the IGpuService interface // with GpuService::getFeatureOverrides(). FeatureOverrides featureOverrides = getFeatureOverrides(); featureOverrides.writeToParcel(reply); return OK; } default: return BBinder::onTransact(code, data, reply, flags); } Loading
libs/graphicsenv/include/graphicsenv/IGpuService.h +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <binder/IInterface.h> #include <cutils/compiler.h> #include <graphicsenv/FeatureOverrides.h> #include <graphicsenv/GpuStatsInfo.h> #include <vector> Loading Loading @@ -55,6 +56,9 @@ public: // sets ANGLE as system GLES driver if enabled==true by setting persist.graphics.egl to true. virtual void toggleAngleAsSystemDriver(bool enabled) = 0; // Get the list of features to override. virtual FeatureOverrides getFeatureOverrides() = 0; }; class BnGpuService : public BnInterface<IGpuService> { Loading @@ -67,6 +71,7 @@ public: TOGGLE_ANGLE_AS_SYSTEM_DRIVER, SET_TARGET_STATS_ARRAY, ADD_VULKAN_ENGINE_NAME, GET_FEATURE_CONFIG_OVERRIDES, // Always append new enum to the end. }; Loading
services/gpuservice/GpuService.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,15 @@ void GpuService::toggleAngleAsSystemDriver(bool enabled) { } } FeatureOverrides GpuService::getFeatureOverrides() { if (!graphicsenv_flags::feature_overrides()) { FeatureOverrides featureOverrides; return featureOverrides; } return mFeatureOverrideParser.getFeatureOverrides(); } void GpuService::setUpdatableDriverPath(const std::string& driverPath) { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); Loading
services/gpuservice/include/gpuservice/GpuService.h +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <binder/IInterface.h> #include <cutils/compiler.h> #include <feature_override/FeatureOverrideParser.h> #include <graphicsenv/FeatureOverrides.h> #include <graphicsenv/GpuStatsInfo.h> #include <graphicsenv/IGpuService.h> #include <serviceutils/PriorityDumper.h> Loading Loading @@ -64,6 +65,7 @@ private: const uint64_t* values, const uint32_t valueCount) override; void setUpdatableDriverPath(const std::string& driverPath) override; std::string getUpdatableDriverPath() override; FeatureOverrides getFeatureOverrides() override; void toggleAngleAsSystemDriver(bool enabled) override; void addVulkanEngineName(const std::string& appPackageName, const uint64_t driverVersionCode, const char *engineName) override; Loading