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

Commit f2b7c868 authored by Trevor David Black's avatar Trevor David Black
Browse files

Add vkprofiles to gpuservice

Bug: 299537644
Test: adb shell cmd gpu vkprofiles
Change-Id: If0453261144150c7e8c554a6a6259a9fedb7c6d9
parent 0e2f1979
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -23,10 +23,11 @@ cc_defaults {
    name: "libgpuservice_defaults",
    defaults: [
        "gpuservice_defaults",
        "libvkjson_deps",
        "libgfxstats_deps",
        "libgpumem_deps",
        "libgpumemtracer_deps",
        "libvkjson_deps",
        "libvkprofiles_deps",
    ],
    cflags: [
        "-DLOG_TAG=\"GpuService\"",
@@ -46,6 +47,7 @@ cc_defaults {
        "libgpumemtracer",
        "libserviceutils",
        "libvkjson",
        "libvkprofiles",
    ],
    export_static_lib_headers: [
        "libserviceutils",
+11 −15
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <utils/String8.h>
#include <utils/Trace.h>
#include <vkjson.h>
#include <vkprofiles.h>

#include <thread>
#include <memory>
@@ -44,6 +45,7 @@ using base::StringAppendF;
namespace {
status_t cmdHelp(int out);
status_t cmdVkjson(int out, int err);
status_t cmdVkprofiles(int out, int err);
void dumpGameDriverInfo(std::string* result);
} // namespace

@@ -147,6 +149,7 @@ status_t GpuService::shellCommand(int /*in*/, int out, int err, std::vector<Stri

    if (args.size() >= 1) {
        if (args[0] == String16("vkjson")) return cmdVkjson(out, err);
        if (args[0] == String16("vkprofiles")) return cmdVkprofiles(out, err);
        if (args[0] == String16("help")) return cmdHelp(out);
    }
    // no command, or unrecognized command
@@ -213,31 +216,24 @@ namespace {
status_t cmdHelp(int out) {
    FILE* outs = fdopen(out, "w");
    if (!outs) {
        ALOGE("vkjson: failed to create out stream: %s (%d)", strerror(errno), errno);
        ALOGE("gpuservice: failed to create out stream: %s (%d)", strerror(errno), errno);
        return BAD_VALUE;
    }
    fprintf(outs,
            "GPU Service commands:\n"
            "  vkjson   dump Vulkan properties as JSON\n");
            "  vkjson      dump Vulkan properties as JSON\n"
            "  vkprofiles  print support for select Vulkan profiles\n");
    fclose(outs);
    return NO_ERROR;
}

void vkjsonPrint(FILE* out) {
    std::string json = VkJsonInstanceToJson(VkJsonGetInstance());
    fwrite(json.data(), 1, json.size(), out);
    fputc('\n', out);
}

status_t cmdVkjson(int out, int /*err*/) {
    FILE* outs = fdopen(out, "w");
    if (!outs) {
        int errnum = errno;
        ALOGE("vkjson: failed to create output stream: %s", strerror(errnum));
        return -errnum;
    dprintf(out, "%s\n", VkJsonInstanceToJson(VkJsonGetInstance()).c_str());
    return NO_ERROR;
}
    vkjsonPrint(outs);
    fclose(outs);

status_t cmdVkprofiles(int out, int /*err*/) {
    dprintf(out, "%s\n", android::vkprofiles::vkProfiles().c_str());
    return NO_ERROR;
}