diff options
author | kkinnunen <kkinnunen@nvidia.com> | 2014-06-30 06:36:31 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-06-30 06:36:31 -0700 |
commit | 80549fcdd50269d7e069d6db02b395fca128056c (patch) | |
tree | f190d563157d1e5e41f26e0bc1cf724b17a7f3c4 /dm/DM.cpp | |
parent | b8562be65510ea2703e1e34029da8c8f501c340c (diff) |
Support using OpenGL ES context on desktop
Support using OpenGL ES context on desktop for unix and Android platforms. This
is mainly useful in development.
Add --gpuAPI flag to gm, dm, bench, bench_pictures and render_pictures. The
possible parameters for the flag are "gl" and "gles".
R=bsalomon@google.com, mtklein@google.com, robertphillips@google.com
Author: kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/319043005
Diffstat (limited to 'dm/DM.cpp')
-rw-r--r-- | dm/DM.cpp | 62 |
1 files changed, 42 insertions, 20 deletions
@@ -37,8 +37,15 @@ using skiagm::GMRegistry; using skiatest::Test; using skiatest::TestRegistry; +static const char kGpuAPINameGL[] = "gl"; +static const char kGpuAPINameGLES[] = "gles"; + DEFINE_int32(threads, -1, "Threads for CPU work. Default NUM_CPUS."); DEFINE_int32(gpuThreads, 1, "Threads for GPU work."); +DEFINE_string(gpuAPI, "", "Force use of specific gpu API. Using \"gl\" " + "forces OpenGL API. Using \"gles\" forces OpenGL ES API. " + "Defaults to empty string, which selects the API native to the " + "system."); DEFINE_string2(expectations, r, "", "If a directory, compare generated images against images under this path. " "If a file, compare generated images against JSON expectations at this path." @@ -95,6 +102,7 @@ native; static void kick_off_gms(const SkTDArray<GMRegistry::Factory>& gms, const SkTArray<SkString>& configs, + GrGLStandard gpuAPI, const DM::Expectations& expectations, DM::Reporter* reporter, DM::TaskRunner* tasks) { @@ -104,17 +112,18 @@ static void kick_off_gms(const SkTDArray<GMRegistry::Factory>& gms, } for (int i = 0; i < gms.count(); i++) { for (int j = 0; j < configs.count(); j++) { + START("565", CpuGMTask, expectations, kRGB_565_SkColorType); START("8888", CpuGMTask, expectations, kN32_SkColorType); - START("gpu", GpuGMTask, expectations, native, 0); - START("msaa4", GpuGMTask, expectations, native, 4); - START("msaa16", GpuGMTask, expectations, native, 16); - START("nvprmsaa4", GpuGMTask, expectations, nvpr, 4); - START("nvprmsaa16", GpuGMTask, expectations, nvpr, 16); - START("gpunull", GpuGMTask, expectations, null, 0); - START("gpudebug", GpuGMTask, expectations, debug, 0); - START("angle", GpuGMTask, expectations, angle, 0); - START("mesa", GpuGMTask, expectations, mesa, 0); + START("gpu", GpuGMTask, expectations, native, gpuAPI, 0); + START("msaa4", GpuGMTask, expectations, native, gpuAPI, 4); + START("msaa16", GpuGMTask, expectations, native, gpuAPI, 16); + START("nvprmsaa4", GpuGMTask, expectations, nvpr, gpuAPI, 4); + START("nvprmsaa16", GpuGMTask, expectations, nvpr, gpuAPI, 16); + START("gpunull", GpuGMTask, expectations, null, gpuAPI, 0); + START("gpudebug", GpuGMTask, expectations, debug, gpuAPI, 0); + START("angle", GpuGMTask, expectations, angle, gpuAPI, 0); + START("mesa", GpuGMTask, expectations, mesa, gpuAPI, 0); START("pdf", PDFTask, RASTERIZE_PDF_PROC); } } @@ -123,6 +132,7 @@ static void kick_off_gms(const SkTDArray<GMRegistry::Factory>& gms, static void kick_off_benches(const SkTDArray<BenchRegistry::Factory>& benches, const SkTArray<SkString>& configs, + GrGLStandard gpuAPI, DM::Reporter* reporter, DM::TaskRunner* tasks) { #define START(name, type, ...) \ @@ -134,15 +144,15 @@ static void kick_off_benches(const SkTDArray<BenchRegistry::Factory>& benches, START("nonrendering", NonRenderingBenchTask); START("565", CpuBenchTask, kRGB_565_SkColorType); START("8888", CpuBenchTask, kN32_SkColorType); - START("gpu", GpuBenchTask, native, 0); - START("msaa4", GpuBenchTask, native, 4); - START("msaa16", GpuBenchTask, native, 16); - START("nvprmsaa4", GpuBenchTask, nvpr, 4); - START("nvprmsaa16", GpuBenchTask, nvpr, 16); - START("gpunull", GpuBenchTask, null, 0); - START("gpudebug", GpuBenchTask, debug, 0); - START("angle", GpuBenchTask, angle, 0); - START("mesa", GpuBenchTask, mesa, 0); + START("gpu", GpuBenchTask, native, gpuAPI, 0); + START("msaa4", GpuBenchTask, native, gpuAPI, 4); + START("msaa16", GpuBenchTask, native, gpuAPI, 16); + START("nvprmsaa4", GpuBenchTask, nvpr, gpuAPI, 4); + START("nvprmsaa16", GpuBenchTask, nvpr, gpuAPI, 16); + START("gpunull", GpuBenchTask, null, gpuAPI, 0); + START("gpudebug", GpuBenchTask, debug, gpuAPI, 0); + START("angle", GpuBenchTask, angle, gpuAPI, 0); + START("mesa", GpuBenchTask, mesa, gpuAPI, 0); } } #undef START @@ -204,6 +214,16 @@ static void report_failures(const SkTArray<SkString>& failures) { SkDebugf("%d failures.\n", failures.count()); } +static GrGLStandard get_gl_standard() { + if (FLAGS_gpuAPI.contains(kGpuAPINameGL)) { + return kGL_GrGLStandard; + } + if (FLAGS_gpuAPI.contains(kGpuAPINameGLES)) { + return kGLES_GrGLStandard; + } + return kNone_GrGLStandard; +} + template <typename T, typename Registry> static void append_matching_factories(Registry* head, SkTDArray<typename Registry::Factory>* out) { for (const Registry* reg = head; reg != NULL; reg = reg->next()) { @@ -232,6 +252,8 @@ int tool_main(int argc, char** argv) { SkStrSplit(FLAGS_config[i], ", ", &configs); } + GrGLStandard gpuAPI = get_gl_standard(); + SkTDArray<GMRegistry::Factory> gms; SkAutoTDelete<DM::Expectations> expectations(SkNEW(DM::NoExpectations)); if (FLAGS_gms) { @@ -261,8 +283,8 @@ int tool_main(int argc, char** argv) { gms.count(), benches.count(), configs.count(), tests.count()); DM::Reporter reporter; DM::TaskRunner tasks(FLAGS_threads, FLAGS_gpuThreads); - kick_off_gms(gms, configs, *expectations, &reporter, &tasks); - kick_off_benches(benches, configs, &reporter, &tasks); + kick_off_gms(gms, configs, gpuAPI, *expectations, &reporter, &tasks); + kick_off_benches(benches, configs, gpuAPI, &reporter, &tasks); kick_off_tests(tests, &reporter, &tasks); kick_off_skps(&reporter, &tasks); tasks.wait(); |