Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Unified Diff: dm/DM.cpp

Issue 319043005: Support using OpenGL ES context on desktop (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dm/DM.cpp
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 1b7c1d84724c5a724e3180256761bc0e2329b08c..d8dc6f5100383f053412d51676cb776da03706ca 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -36,8 +36,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(forceGpuApi, "", "Force use of specific gpu API. Using \"gl\" "
mtklein 2014/06/09 14:10:46 Personally I'd go with just gpuAPI? Is there any
bsalomon 2014/06/09 14:15:11 It definitely *could* be implemented that way. One
mtklein 2014/06/09 14:20:21 Yeah, this is fine, we can cross them here inside
bsalomon 2014/06/09 14:29:52 If we move towards supporting arbitrary members of
Kimmo Kinnunen 2014/06/16 12:36:40 Done.
+ "forces OpenGL API. Using \"gles\" forces OpenGL ES API. "
+ "Defaults to empty string, which selects the API native to the "
+ "system.");
#ifdef SK_BUILD_JSON_WRITER
DEFINE_string2(expectations, r, "",
"If a directory, compare generated images against images under this path. "
@@ -100,6 +107,7 @@ native;
static void kick_off_gms(const SkTDArray<GMRegistry::Factory>& gms,
const SkTArray<SkString>& configs,
+ GrGLStandard forcedGpuApi,
const DM::Expectations& expectations,
DM::Reporter* reporter,
DM::TaskRunner* tasks) {
@@ -112,15 +120,15 @@ static void kick_off_gms(const SkTDArray<GMRegistry::Factory>& gms,
for (int j = 0; j < configs.count(); j++) {
START("565", CpuGMTask, kRGB_565_SkColorType);
START("8888", CpuGMTask, kN32_SkColorType);
- START("gpu", GpuGMTask, native, 0);
- START("msaa4", GpuGMTask, native, 4);
- START("msaa16", GpuGMTask, native, 16);
- START("nvprmsaa4", GpuGMTask, nvpr, 4);
- START("nvprmsaa16", GpuGMTask, nvpr, 16);
- START("gpunull", GpuGMTask, null, 0);
- START("gpudebug", GpuGMTask, debug, 0);
- START("angle", GpuGMTask, angle, 0);
- START("mesa", GpuGMTask, mesa, 0);
+ START("gpu", GpuGMTask, native, forcedGpuApi, 0);
+ START("msaa4", GpuGMTask, native, forcedGpuApi, 4);
+ START("msaa16", GpuGMTask, native, forcedGpuApi, 16);
+ START("nvprmsaa4", GpuGMTask, nvpr, forcedGpuApi, 4);
+ START("nvprmsaa16", GpuGMTask, nvpr, forcedGpuApi, 16);
+ START("gpunull", GpuGMTask, null, forcedGpuApi, 0);
+ START("gpudebug", GpuGMTask, debug, forcedGpuApi, 0);
+ START("angle", GpuGMTask, angle, forcedGpuApi, 0);
+ START("mesa", GpuGMTask, mesa, forcedGpuApi, 0);
START("pdf", PDFTask, RASTERIZE_PDF_PROC);
}
}
@@ -129,6 +137,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 forcedGpuApi,
DM::Reporter* reporter,
DM::TaskRunner* tasks) {
#define START(name, type, ...) \
@@ -140,15 +149,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, forcedGpuApi, 0);
+ START("msaa4", GpuBenchTask, native, forcedGpuApi, 4);
+ START("msaa16", GpuBenchTask, native, forcedGpuApi, 16);
+ START("nvprmsaa4", GpuBenchTask, nvpr, forcedGpuApi, 4);
+ START("nvprmsaa16", GpuBenchTask, nvpr, forcedGpuApi, 16);
+ START("gpunull", GpuBenchTask, null, forcedGpuApi, 0);
+ START("gpudebug", GpuBenchTask, debug, forcedGpuApi, 0);
+ START("angle", GpuBenchTask, angle, forcedGpuApi, 0);
+ START("mesa", GpuBenchTask, mesa, forcedGpuApi, 0);
}
}
#undef START
@@ -208,6 +217,19 @@ static void report_failures(const SkTArray<SkString>& failures) {
SkDebugf("%d failures.\n", failures.count());
}
+static void get_forced_gpu_api_if_matches(GrGLStandard* forcedGpuApi) {
mtklein 2014/06/09 14:10:45 Simplify? static GrGLStandard get_gl_standard() {
Kimmo Kinnunen 2014/06/16 12:36:39 Done.
+ if (1 == FLAGS_forceGpuApi.count()) {
+ if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGL) == 0) {
+ *forcedGpuApi = kGL_GrGLStandard;
+ return;
+ } else if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGLES) == 0) {
+ *forcedGpuApi = kGLES_GrGLStandard;
+ return;
+ }
+ }
+ *forcedGpuApi = kNone_GrGLStandard;
mtklein 2014/06/09 14:10:45 What happens if I run DM in None mode? Does that
Kimmo Kinnunen 2014/06/16 12:36:39 Yeah. None picks up the default for the platform.
+}
+
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()) {
@@ -238,6 +260,9 @@ int tool_main(int argc, char** argv) {
SkStrSplit(FLAGS_config[i], ", ", &configs);
}
+ GrGLStandard forcedGpuApi = kNone_GrGLStandard;
+ get_forced_gpu_api_if_matches(&forcedGpuApi);
+
SkTDArray<GMRegistry::Factory> gms;
SkAutoTDelete<DM::Expectations> expectations(SkNEW(DM::NoExpectations));
if (FLAGS_gms) {
@@ -269,8 +294,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, forcedGpuApi, *expectations, &reporter, &tasks);
mtklein 2014/06/09 14:10:45 e.g. could we logically just loop over GPU APIs he
Kimmo Kinnunen 2014/06/16 12:36:39 IIUC from the discussion above, this was not neede
bsalomon 2014/06/16 14:25:10 +1 for leaving any running of multiple APIs in a s
+ kick_off_benches(benches, configs, forcedGpuApi, &reporter, &tasks);
kick_off_tests(tests, &reporter, &tasks);
kick_off_skps(&reporter, &tasks);
tasks.wait();
« no previous file with comments | « bench/benchmain.cpp ('k') | dm/DMBenchTask.h » ('j') | src/gpu/gl/GrGLAssembleGLESInterface.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698