Index: dm/DM.cpp |
diff --git a/dm/DM.cpp b/dm/DM.cpp |
index 64a4bc5a231a50f9e41251880b4d255a6b7cdd99..afe75734e981724c4d07238c5ad2cdb8b3a638b9 100644 |
--- a/dm/DM.cpp |
+++ b/dm/DM.cpp |
@@ -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(); |