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

Commit 3666fbe0 authored by Yiwei Zhang's avatar Yiwei Zhang Committed by android-build-merger
Browse files

Merge "GpuStats: Track ANGLE usage info" into qt-dev am: 2c930e94

am: 29b9cac3

Change-Id: I50b3ac998527c24987a1250377d70134da08dca2
parents 221a819b 29b9cac3
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,8 @@ status_t GpuStatsGlobalInfo::writeToParcel(Parcel* parcel) const {
    if ((status = parcel->writeInt32(vulkanVersion)) != OK) return status;
    if ((status = parcel->writeInt32(vulkanVersion)) != OK) return status;
    if ((status = parcel->writeInt32(cpuVulkanVersion)) != OK) return status;
    if ((status = parcel->writeInt32(cpuVulkanVersion)) != OK) return status;
    if ((status = parcel->writeInt32(glesVersion)) != OK) return status;
    if ((status = parcel->writeInt32(glesVersion)) != OK) return status;
    if ((status = parcel->writeInt32(angleLoadingCount)) != OK) return status;
    if ((status = parcel->writeInt32(angleLoadingFailureCount)) != OK) return status;
    return OK;
    return OK;
}
}


@@ -53,6 +55,8 @@ status_t GpuStatsGlobalInfo::readFromParcel(const Parcel* parcel) {
    if ((status = parcel->readInt32(&vulkanVersion)) != OK) return status;
    if ((status = parcel->readInt32(&vulkanVersion)) != OK) return status;
    if ((status = parcel->readInt32(&cpuVulkanVersion)) != OK) return status;
    if ((status = parcel->readInt32(&cpuVulkanVersion)) != OK) return status;
    if ((status = parcel->readInt32(&glesVersion)) != OK) return status;
    if ((status = parcel->readInt32(&glesVersion)) != OK) return status;
    if ((status = parcel->readInt32(&angleLoadingCount)) != OK) return status;
    if ((status = parcel->readInt32(&angleLoadingFailureCount)) != OK) return status;
    return OK;
    return OK;
}
}


@@ -64,6 +68,8 @@ std::string GpuStatsGlobalInfo::toString() const {
    StringAppendF(&result, "driverBuildTime = %" PRId64 "\n", driverBuildTime);
    StringAppendF(&result, "driverBuildTime = %" PRId64 "\n", driverBuildTime);
    StringAppendF(&result, "glLoadingCount = %d\n", glLoadingCount);
    StringAppendF(&result, "glLoadingCount = %d\n", glLoadingCount);
    StringAppendF(&result, "glLoadingFailureCount = %d\n", glLoadingFailureCount);
    StringAppendF(&result, "glLoadingFailureCount = %d\n", glLoadingFailureCount);
    StringAppendF(&result, "angleLoadingCount = %d\n", angleLoadingCount);
    StringAppendF(&result, "angleLoadingFailureCount = %d\n", angleLoadingFailureCount);
    StringAppendF(&result, "vkLoadingCount = %d\n", vkLoadingCount);
    StringAppendF(&result, "vkLoadingCount = %d\n", vkLoadingCount);
    StringAppendF(&result, "vkLoadingFailureCount = %d\n", vkLoadingFailureCount);
    StringAppendF(&result, "vkLoadingFailureCount = %d\n", vkLoadingFailureCount);
    StringAppendF(&result, "vulkanVersion = %d\n", vulkanVersion);
    StringAppendF(&result, "vulkanVersion = %d\n", vulkanVersion);
@@ -78,6 +84,7 @@ status_t GpuStatsAppInfo::writeToParcel(Parcel* parcel) const {
    if ((status = parcel->writeUint64(driverVersionCode)) != OK) return status;
    if ((status = parcel->writeUint64(driverVersionCode)) != OK) return status;
    if ((status = parcel->writeInt64Vector(glDriverLoadingTime)) != OK) return status;
    if ((status = parcel->writeInt64Vector(glDriverLoadingTime)) != OK) return status;
    if ((status = parcel->writeInt64Vector(vkDriverLoadingTime)) != OK) return status;
    if ((status = parcel->writeInt64Vector(vkDriverLoadingTime)) != OK) return status;
    if ((status = parcel->writeInt64Vector(angleDriverLoadingTime)) != OK) return status;
    return OK;
    return OK;
}
}


@@ -87,6 +94,7 @@ status_t GpuStatsAppInfo::readFromParcel(const Parcel* parcel) {
    if ((status = parcel->readUint64(&driverVersionCode)) != OK) return status;
    if ((status = parcel->readUint64(&driverVersionCode)) != OK) return status;
    if ((status = parcel->readInt64Vector(&glDriverLoadingTime)) != OK) return status;
    if ((status = parcel->readInt64Vector(&glDriverLoadingTime)) != OK) return status;
    if ((status = parcel->readInt64Vector(&vkDriverLoadingTime)) != OK) return status;
    if ((status = parcel->readInt64Vector(&vkDriverLoadingTime)) != OK) return status;
    if ((status = parcel->readInt64Vector(&angleDriverLoadingTime)) != OK) return status;
    return OK;
    return OK;
}
}


@@ -99,6 +107,11 @@ std::string GpuStatsAppInfo::toString() const {
        StringAppendF(&result, " %d", loadingTime);
        StringAppendF(&result, " %d", loadingTime);
    }
    }
    result.append("\n");
    result.append("\n");
    result.append("angleDriverLoadingTime:");
    for (int32_t loadingTime : angleDriverLoadingTime) {
        StringAppendF(&result, " %d", loadingTime);
    }
    result.append("\n");
    result.append("vkDriverLoadingTime:");
    result.append("vkDriverLoadingTime:");
    for (int32_t loadingTime : vkDriverLoadingTime) {
    for (int32_t loadingTime : vkDriverLoadingTime) {
        StringAppendF(&result, " %d", loadingTime);
        StringAppendF(&result, " %d", loadingTime);
+2 −13
Original line number Original line Diff line number Diff line
@@ -228,9 +228,8 @@ void GraphicsEnv::setDriverLoaded(GraphicsEnv::Api api, bool isLoaded, int64_t d
    bool isIntendedDriverLoaded = false;
    bool isIntendedDriverLoaded = false;
    if (api == GraphicsEnv::Api::API_GL) {
    if (api == GraphicsEnv::Api::API_GL) {
        driver = mGpuStats.glDriverToLoad;
        driver = mGpuStats.glDriverToLoad;
        isIntendedDriverLoaded = isLoaded &&
        isIntendedDriverLoaded =
                ((mGpuStats.glDriverFallback == GraphicsEnv::Driver::NONE) ||
                isLoaded && (mGpuStats.glDriverFallback == GraphicsEnv::Driver::NONE);
                 (mGpuStats.glDriverToLoad == mGpuStats.glDriverFallback));
    } else {
    } else {
        driver = mGpuStats.vkDriverToLoad;
        driver = mGpuStats.vkDriverToLoad;
        isIntendedDriverLoaded =
        isIntendedDriverLoaded =
@@ -240,16 +239,6 @@ void GraphicsEnv::setDriverLoaded(GraphicsEnv::Api api, bool isLoaded, int64_t d
    sendGpuStatsLocked(driver, isIntendedDriverLoaded, driverLoadingTime);
    sendGpuStatsLocked(driver, isIntendedDriverLoaded, driverLoadingTime);
}
}


void GraphicsEnv::clearDriverLoadingInfo(GraphicsEnv::Api api) {
    ATRACE_CALL();

    std::lock_guard<std::mutex> lock(mStatsLock);
    if (api == GraphicsEnv::Api::API_GL) {
        mGpuStats.glDriverToLoad = GraphicsEnv::Driver::NONE;
        mGpuStats.glDriverFallback = GraphicsEnv::Driver::NONE;
    }
}

static sp<IGpuService> getGpuService() {
static sp<IGpuService> getGpuService() {
    const sp<IBinder> binder = defaultServiceManager()->checkService(String16("gpu"));
    const sp<IBinder> binder = defaultServiceManager()->checkService(String16("gpu"));
    if (!binder) {
    if (!binder) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -47,6 +47,8 @@ public:
    int32_t vulkanVersion = 0;
    int32_t vulkanVersion = 0;
    int32_t cpuVulkanVersion = 0;
    int32_t cpuVulkanVersion = 0;
    int32_t glesVersion = 0;
    int32_t glesVersion = 0;
    int32_t angleLoadingCount = 0;
    int32_t angleLoadingFailureCount = 0;
};
};


/*
/*
@@ -66,6 +68,7 @@ public:
    uint64_t driverVersionCode = 0;
    uint64_t driverVersionCode = 0;
    std::vector<int64_t> glDriverLoadingTime = {};
    std::vector<int64_t> glDriverLoadingTime = {};
    std::vector<int64_t> vkDriverLoadingTime = {};
    std::vector<int64_t> vkDriverLoadingTime = {};
    std::vector<int64_t> angleDriverLoadingTime = {};
};
};


} // namespace android
} // namespace android
+0 −1
Original line number Original line Diff line number Diff line
@@ -89,7 +89,6 @@ public:
                     const std::string& appPackageName, const int32_t vulkanVersion);
                     const std::string& appPackageName, const int32_t vulkanVersion);
    void setDriverToLoad(Driver driver);
    void setDriverToLoad(Driver driver);
    void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime);
    void setDriverLoaded(Api api, bool isDriverLoaded, int64_t driverLoadingTime);
    void clearDriverLoadingInfo(Api api);
    void sendGpuStatsLocked(Driver driver, bool isDriverLoaded, int64_t driverLoadingTime);
    void sendGpuStatsLocked(Driver driver, bool isDriverLoaded, int64_t driverLoadingTime);


    bool shouldUseAngle(std::string appName);
    bool shouldUseAngle(std::string appName);
+20 −15
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@


namespace android {
namespace android {


static bool addLoadingCount(GraphicsEnv::Driver driver, bool isDriverLoaded,
static void addLoadingCount(GraphicsEnv::Driver driver, bool isDriverLoaded,
                            GpuStatsGlobalInfo* const outGlobalInfo) {
                            GpuStatsGlobalInfo* const outGlobalInfo) {
    switch (driver) {
    switch (driver) {
        case GraphicsEnv::Driver::GL:
        case GraphicsEnv::Driver::GL:
@@ -40,13 +40,13 @@ static bool addLoadingCount(GraphicsEnv::Driver driver, bool isDriverLoaded,
            outGlobalInfo->vkLoadingCount++;
            outGlobalInfo->vkLoadingCount++;
            if (!isDriverLoaded) outGlobalInfo->vkLoadingFailureCount++;
            if (!isDriverLoaded) outGlobalInfo->vkLoadingFailureCount++;
            break;
            break;
        case GraphicsEnv::Driver::ANGLE:
            outGlobalInfo->angleLoadingCount++;
            if (!isDriverLoaded) outGlobalInfo->angleLoadingFailureCount++;
            break;
        default:
        default:
            // Currently we don't support GraphicsEnv::Driver::ANGLE because the
            break;
            // basic driver package info only belongs to system or updated driver.
            return false;
    }
    }

    return true;
}
}


static void addLoadingTime(GraphicsEnv::Driver driver, int64_t driverLoadingTime,
static void addLoadingTime(GraphicsEnv::Driver driver, int64_t driverLoadingTime,
@@ -54,13 +54,20 @@ static void addLoadingTime(GraphicsEnv::Driver driver, int64_t driverLoadingTime
    switch (driver) {
    switch (driver) {
        case GraphicsEnv::Driver::GL:
        case GraphicsEnv::Driver::GL:
        case GraphicsEnv::Driver::GL_UPDATED:
        case GraphicsEnv::Driver::GL_UPDATED:
            if (outAppInfo->glDriverLoadingTime.size() >= GpuStats::MAX_NUM_LOADING_TIMES) break;
            if (outAppInfo->glDriverLoadingTime.size() < GpuStats::MAX_NUM_LOADING_TIMES) {
                outAppInfo->glDriverLoadingTime.emplace_back(driverLoadingTime);
                outAppInfo->glDriverLoadingTime.emplace_back(driverLoadingTime);
            }
            break;
            break;
        case GraphicsEnv::Driver::VULKAN:
        case GraphicsEnv::Driver::VULKAN:
        case GraphicsEnv::Driver::VULKAN_UPDATED:
        case GraphicsEnv::Driver::VULKAN_UPDATED:
            if (outAppInfo->vkDriverLoadingTime.size() >= GpuStats::MAX_NUM_LOADING_TIMES) break;
            if (outAppInfo->vkDriverLoadingTime.size() < GpuStats::MAX_NUM_LOADING_TIMES) {
                outAppInfo->vkDriverLoadingTime.emplace_back(driverLoadingTime);
                outAppInfo->vkDriverLoadingTime.emplace_back(driverLoadingTime);
            }
            break;
        case GraphicsEnv::Driver::ANGLE:
            if (outAppInfo->angleDriverLoadingTime.size() < GpuStats::MAX_NUM_LOADING_TIMES) {
                outAppInfo->angleDriverLoadingTime.emplace_back(driverLoadingTime);
            }
            break;
            break;
        default:
        default:
            break;
            break;
@@ -90,17 +97,15 @@ void GpuStats::insert(const std::string& driverPackageName, const std::string& d


    if (!mGlobalStats.count(driverVersionCode)) {
    if (!mGlobalStats.count(driverVersionCode)) {
        GpuStatsGlobalInfo globalInfo;
        GpuStatsGlobalInfo globalInfo;
        if (!addLoadingCount(driver, isDriverLoaded, &globalInfo)) {
        addLoadingCount(driver, isDriverLoaded, &globalInfo);
            return;
        }
        globalInfo.driverPackageName = driverPackageName;
        globalInfo.driverPackageName = driverPackageName;
        globalInfo.driverVersionName = driverVersionName;
        globalInfo.driverVersionName = driverVersionName;
        globalInfo.driverVersionCode = driverVersionCode;
        globalInfo.driverVersionCode = driverVersionCode;
        globalInfo.driverBuildTime = driverBuildTime;
        globalInfo.driverBuildTime = driverBuildTime;
        globalInfo.vulkanVersion = vulkanVersion;
        globalInfo.vulkanVersion = vulkanVersion;
        mGlobalStats.insert({driverVersionCode, globalInfo});
        mGlobalStats.insert({driverVersionCode, globalInfo});
    } else if (!addLoadingCount(driver, isDriverLoaded, &mGlobalStats[driverVersionCode])) {
    } else {
        return;
        addLoadingCount(driver, isDriverLoaded, &mGlobalStats[driverVersionCode]);
    }
    }


    if (mAppStats.size() >= MAX_NUM_APP_RECORDS) {
    if (mAppStats.size() >= MAX_NUM_APP_RECORDS) {