aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-20 15:04:04 +0000
committerGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-20 15:04:04 +0000
commitc81686cd6edba2cfedcfd5ad6a164f160ddfb49f (patch)
treed301b0d155f842f6749e543a6610d93ea8baaf5c
parent6cb110b8f57c7ba6e60c2da481da9b883564cd79 (diff)
Added the option to enable GPU rendering on render_ and bench_pictures.
git-svn-id: http://skia.googlecode.com/svn/trunk@5183 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--tools/PictureBenchmark.h16
-rw-r--r--tools/PictureRenderer.h22
-rw-r--r--tools/bench_pictures_main.cpp46
-rw-r--r--tools/render_pictures_main.cpp47
4 files changed, 101 insertions, 30 deletions
diff --git a/tools/PictureBenchmark.h b/tools/PictureBenchmark.h
index e0fdd7fab2..1cbc5e763c 100644
--- a/tools/PictureBenchmark.h
+++ b/tools/PictureBenchmark.h
@@ -29,26 +29,16 @@ public:
return fRepeats;
}
- void setUseBitmapDevice() {
- sk_tools::PictureRenderer* renderer = getRenderer();
+ void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
+ sk_tools::PictureRenderer* renderer = getRenderer();
if (renderer != NULL) {
- renderer->setUseBitmapDevice();
+ renderer->setDeviceType(deviceType);
}
}
BenchTimer* setupTimer();
-#if SK_SUPPORT_GPU
- void setUseGpuDevice() {
- sk_tools::PictureRenderer* renderer = getRenderer();
-
- if (renderer != NULL) {
- renderer->setUseGpuDevice();
- }
- }
-#endif
-
protected:
int fRepeats;
diff --git a/tools/PictureRenderer.h b/tools/PictureRenderer.h
index b7e4850606..ab0fb36675 100644
--- a/tools/PictureRenderer.h
+++ b/tools/PictureRenderer.h
@@ -25,6 +25,13 @@ namespace sk_tools {
class PictureRenderer : public SkRefCnt {
public:
+ enum SkDeviceTypes {
+ kBitmap_DeviceType,
+#if SK_SUPPORT_GPU
+ kGPU_DeviceType
+#endif
+ };
+
virtual void init(SkPicture* pict);
virtual void render() = 0;
virtual void end();
@@ -34,8 +41,8 @@ public:
return fCanvas.get();
}
- void setUseBitmapDevice() {
- fDeviceType = kBitmap_DeviceType;
+ void setDeviceType(SkDeviceTypes deviceType) {
+ fDeviceType = deviceType;
}
bool isUsingBitmapDevice() {
@@ -43,10 +50,6 @@ public:
}
#if SK_SUPPORT_GPU
- void setUseGpuDevice() {
- fDeviceType = kGPU_DeviceType;
- }
-
bool isUsingGpuDevice() {
return kGPU_DeviceType == fDeviceType;
}
@@ -72,13 +75,6 @@ protected:
SkCanvas* setupCanvas();
SkCanvas* setupCanvas(int width, int height);
- enum SkDeviceTypes {
- kBitmap_DeviceType,
-#if SK_SUPPORT_GPU
- kGPU_DeviceType
-#endif
- };
-
SkAutoTUnref<SkCanvas> fCanvas;
SkPicture* fPicture;
SkDeviceTypes fDeviceType;
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index 5fc1bd8a3b..ef0dbf0207 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -22,7 +22,12 @@ static void usage(const char* argv0) {
"Usage: \n"
" %s <inputDir>...\n"
" [--repeat] \n"
-" [--mode pipe | record | simple | tile width[%] height[%] | unflatten]"
+" [--mode pipe | record | simple | tile width[%] height[%] | unflatten]\n"
+" [--device bitmap"
+#if SK_SUPPORT_GPU
+" | gpu"
+#endif
+"]"
, argv0);
SkDebugf("\n\n");
SkDebugf(
@@ -44,6 +49,19 @@ static void usage(const char* argv0) {
" unflatten, Benchmark picture unflattening.\n");
SkDebugf("\n");
SkDebugf(
+" --device bitmap"
+#if SK_SUPPORT_GPU
+" | gpu"
+#endif
+": Use the corresponding device. Default is bitmap.\n");
+ SkDebugf(
+" bitmap, Render to a bitmap.\n");
+ SkDebugf(
+#if SK_SUPPORT_GPU
+" gpu, Render to the GPU.\n");
+#endif
+ SkDebugf("\n");
+ SkDebugf(
" --repeat: "
"Set the number of times to repeat each test."
" Default is %i.\n", DEFAULT_REPEATS);
@@ -75,6 +93,8 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
char* const* stop = argv + argc;
int repeats = DEFAULT_REPEATS;
+ sk_tools::PictureRenderer::SkDeviceTypes deviceType =
+ sk_tools::PictureRenderer::kBitmap_DeviceType;
for (++argv; argv < stop; ++argv) {
if (0 == strcmp(*argv, "--repeat")) {
@@ -167,6 +187,28 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
usage(argv0);
exit(-1);
}
+ } else if (0 == strcmp(*argv, "--device")) {
+ ++argv;
+ if (argv >= stop) {
+ SkDebugf("Missing mode for --deivce\n");
+ usage(argv0);
+ exit(-1);
+ }
+
+ if (0 == strcmp(*argv, "bitmap")) {
+ deviceType = sk_tools::PictureRenderer::kBitmap_DeviceType;
+ }
+#if SK_SUPPORT_GPU
+ else if (0 == strcmp(*argv, "gpu")) {
+ deviceType = sk_tools::PictureRenderer::kGPU_DeviceType;
+ }
+#endif
+ else {
+ SkDebugf("%s is not a valid mode for --device\n", *argv);
+ usage(argv0);
+ exit(-1);
+ }
+
} else if (0 == strcmp(*argv, "--help") || 0 == strcmp(*argv, "-h")) {
SkDELETE(benchmark);
usage(argv0);
@@ -187,7 +229,7 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
}
benchmark->setRepeats(repeats);
- benchmark->setUseGpuDevice();
+ benchmark->setDeviceType(deviceType);
}
static void process_input(const SkString& input, sk_tools::PictureBenchmark& benchmark) {
diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp
index e1a1eff6eb..48139cebff 100644
--- a/tools/render_pictures_main.cpp
+++ b/tools/render_pictures_main.cpp
@@ -23,7 +23,12 @@ static void usage(const char* argv0) {
SkDebugf("\n"
"Usage: \n"
" %s <input>... <outputDir> \n"
-" [--mode pipe | simple | tile width[%] height[%]]"
+" [--mode pipe | simple | tile width[%] height[%]]\n"
+" [--device bitmap"
+#if SK_SUPPORT_GPU
+" | gpu"
+#endif
+"]"
, argv0);
SkDebugf("\n\n");
SkDebugf(
@@ -41,6 +46,19 @@ static void usage(const char* argv0) {
SkDebugf(
" tile width[%] height[%], Do a simple render using tiles\n"
" with the given dimensions.\n");
+ SkDebugf("\n");
+ SkDebugf(
+" --device bitmap"
+#if SK_SUPPORT_GPU
+" | gpu"
+#endif
+": Use the corresponding device. Default is bitmap.\n");
+ SkDebugf(
+" bitmap, Render to a bitmap.\n");
+ SkDebugf(
+#if SK_SUPPORT_GPU
+" gpu, Render to the GPU.\n");
+#endif
}
static void make_output_filepath(SkString* path, const SkString& dir,
@@ -129,6 +147,9 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
const char* argv0 = argv[0];
char* const* stop = argv + argc;
+ sk_tools::PictureRenderer::SkDeviceTypes deviceType =
+ sk_tools::PictureRenderer::kBitmap_DeviceType;
+
for (++argv; argv < stop; ++argv) {
if (0 == strcmp(*argv, "--mode")) {
SkDELETE(renderer);
@@ -202,6 +223,28 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
usage(argv0);
exit(-1);
}
+ } else if (0 == strcmp(*argv, "--device")) {
+ ++argv;
+ if (argv >= stop) {
+ SkDebugf("Missing mode for --deivce\n");
+ usage(argv0);
+ exit(-1);
+ }
+
+ if (0 == strcmp(*argv, "bitmap")) {
+ deviceType = sk_tools::PictureRenderer::kBitmap_DeviceType;
+ }
+#if SK_SUPPORT_GPU
+ else if (0 == strcmp(*argv, "gpu")) {
+ deviceType = sk_tools::PictureRenderer::kGPU_DeviceType;
+ }
+#endif
+ else {
+ SkDebugf("%s is not a valid mode for --device\n", *argv);
+ usage(argv0);
+ exit(-1);
+ }
+
} else if ((0 == strcmp(*argv, "-h")) || (0 == strcmp(*argv, "--help"))) {
SkDELETE(renderer);
usage(argv0);
@@ -221,7 +264,7 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
renderer = SkNEW(sk_tools::SimplePictureRenderer);
}
- renderer->setUseGpuDevice();
+ renderer->setDeviceType(deviceType);
}
int main(int argc, char* const argv[]) {