aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ethannicholas <ethannicholas@google.com>2016-02-22 08:59:57 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-02-22 08:59:57 -0800
commit3ff5d8c63d567f36da72fba499439ae87a8e469b (patch)
tree8fd69a5ee34e95f44934c3b1ad98ccd961d69086
parent31c45bbd5a4129b73843872e00b3bd86bd32008f (diff)
added mode=cpu|gpu to skiaserve JSON
-rw-r--r--tools/skiaserve/skiaserve.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/tools/skiaserve/skiaserve.cpp b/tools/skiaserve/skiaserve.cpp
index 18a522a4c1..427ce4b8f3 100644
--- a/tools/skiaserve/skiaserve.cpp
+++ b/tools/skiaserve/skiaserve.cpp
@@ -67,13 +67,18 @@ struct UploadContext {
};
struct Request {
- Request(SkString rootUrl) : fUploadContext(nullptr), fUrlDataManager(rootUrl) {}
+ Request(SkString rootUrl)
+ : fUploadContext(nullptr)
+ , fUrlDataManager(rootUrl)
+ , fGPUEnabled(false) {}
+
UploadContext* fUploadContext;
SkAutoTUnref<SkPicture> fPicture;
SkAutoTUnref<SkDebugCanvas> fDebugCanvas;
SkAutoTDelete<GrContextFactory> fContextFactory;
SkAutoTUnref<SkSurface> fSurface;
UrlDataManager fUrlDataManager;
+ bool fGPUEnabled;
};
static void write_png_callback(png_structp png_ptr, png_bytep data, png_size_t length) {
@@ -226,9 +231,12 @@ static int SendData(MHD_Connection* connection, const SkData* data, const char*
return ret;
}
-static int SendJSON(MHD_Connection* connection, SkCanvas* canvas, SkDebugCanvas* debugCanvas,
- UrlDataManager* urlDataManager, int n) {
+static int SendJSON(MHD_Connection* connection, Request* request, int n) {
+ SkCanvas* canvas = getCanvasFromRequest(request);
+ SkDebugCanvas* debugCanvas = request->fDebugCanvas;
+ UrlDataManager* urlDataManager = &request->fUrlDataManager;
Json::Value root = debugCanvas->toJSON(*urlDataManager, n, canvas);
+ root["mode"] = Json::Value(request->fGPUEnabled ? "gpu" : "cpu");
SkDynamicMemoryWStream stream;
stream.writeText(Json::FastWriter().write(root).c_str());
@@ -292,8 +300,7 @@ public:
} else {
sscanf(commands[1].c_str(), "%d", &n);
}
- return SendJSON(connection, getCanvasFromRequest(request), request->fDebugCanvas,
- &request->fUrlDataManager, n);
+ return SendJSON(connection, request, n);
}
// /cmd/N, for now only delete supported
@@ -493,11 +500,13 @@ public:
SkSurface* surface = createGPUSurface(request);
if (surface) {
request->fSurface.reset(surface);
+ request->fGPUEnabled = true;
return SendOK(connection);
}
return SendError(connection, "Unable to create GPU surface");
}
request->fSurface.reset(createCPUSurface());
+ request->fGPUEnabled = false;
return SendOK(connection);
}
};