summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Trevor David Black <vantablack@google.com> 2024-02-15 23:12:22 +0000
committer Trevor David Black <vantablack@google.com> 2024-02-21 05:43:07 +0000
commitf2b7c868d2f5d8401fadb54a14b64561b1afed5e (patch)
tree00cdecc1e6d45f4fea526c8bfb00444186da6cb9
parent0e2f19797f36fda3a74a5890a9f8c638ef1bca7c (diff)
Add vkprofiles to gpuservice
Bug: 299537644 Test: adb shell cmd gpu vkprofiles Change-Id: If0453261144150c7e8c554a6a6259a9fedb7c6d9
-rw-r--r--services/gpuservice/Android.bp4
-rw-r--r--services/gpuservice/GpuService.cpp26
2 files changed, 14 insertions, 16 deletions
diff --git a/services/gpuservice/Android.bp b/services/gpuservice/Android.bp
index e5b1e44b44..ca9fe5ea43 100644
--- a/services/gpuservice/Android.bp
+++ b/services/gpuservice/Android.bp
@@ -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",
diff --git a/services/gpuservice/GpuService.cpp b/services/gpuservice/GpuService.cpp
index 48d793a4d4..79f22c1ac7 100644
--- a/services/gpuservice/GpuService.cpp
+++ b/services/gpuservice/GpuService.cpp
@@ -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*/) {
+ dprintf(out, "%s\n", VkJsonInstanceToJson(VkJsonGetInstance()).c_str());
+ return NO_ERROR;
}
-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;
- }
- vkjsonPrint(outs);
- fclose(outs);
+status_t cmdVkprofiles(int out, int /*err*/) {
+ dprintf(out, "%s\n", android::vkprofiles::vkProfiles().c_str());
return NO_ERROR;
}