Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca3bbac5 authored by Tim Van Patten's avatar Tim Van Patten Committed by Android (Google) Code Review
Browse files

Merge "IGpuService: Add getFeatureOverrides()" into main

parents 9a454e42 04502468
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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");
@@ -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);
    }
+5 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

#include <binder/IInterface.h>
#include <cutils/compiler.h>
#include <graphicsenv/FeatureOverrides.h>
#include <graphicsenv/GpuStatsInfo.h>

#include <vector>
@@ -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> {
@@ -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.
    };

+9 −0
Original line number Diff line number Diff line
@@ -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();
+2 −0
Original line number Diff line number Diff line
@@ -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>
@@ -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;