aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu/GrDriverBugWorkarounds.h
diff options
context:
space:
mode:
authorGravatar Adrienne Walker <enne@chromium.org>2018-05-14 14:02:03 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-14 23:46:49 +0000
commitab7181daad5dae205b8dbd9de318aa3438a1cabf (patch)
tree456c083c6dedc9874612f765431cb12af4a41ba4 /include/gpu/GrDriverBugWorkarounds.h
parent3b9effcb1d1a66d418438bc552c8eb618bdee10e (diff)
Reland "Add driver bug workarounds to GrCaps"
This is a reland of 328490c6a1625ce51d0e81688e0c85c79c400d86 Original change's description: > Add driver bug workarounds to GrCaps > > This moves GrDriverBugWorkarounds to include so that it can be included > by GrCaps. This also makes GrContextOptions a nearly empty class in > the case of !SK_SUPPORT_GPU so that non-gpu builds don't need to build > in GrDriverBugWorkarounds.cpp. > > Bug: chromium: 829614 > Change-Id: Iedf73677fd09e9a487cfe618a696fd4b25c8703d > Reviewed-on: https://skia-review.googlesource.com/126581 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Adrienne Walker <enne@chromium.org> Bug: chromium: 829614 Change-Id: I7b539f99caa3032c8c595dd5068dc3b179747ccd Reviewed-on: https://skia-review.googlesource.com/127304 Commit-Queue: Adrienne Walker <enne@chromium.org> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'include/gpu/GrDriverBugWorkarounds.h')
-rw-r--r--include/gpu/GrDriverBugWorkarounds.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/include/gpu/GrDriverBugWorkarounds.h b/include/gpu/GrDriverBugWorkarounds.h
new file mode 100644
index 0000000000..31f6df5a33
--- /dev/null
+++ b/include/gpu/GrDriverBugWorkarounds.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrDriverBugWorkarounds_DEFINED
+#define GrDriverBugWorkarounds_DEFINED
+
+// External embedders of Skia can override this to use their own list
+// of workaround names.
+#ifdef SK_GPU_WORKAROUNDS_HEADER
+#include SK_GPU_WORKAROUNDS_HEADER
+#else
+// To regenerate this file, set gn arg "skia_generate_workarounds = true".
+// This is not rebuilt by default to avoid embedders having to have extra
+// build steps.
+#include "GrDriverBugWorkaroundsAutogen.h"
+#endif
+
+#include "SkTypes.h"
+
+#include <stdint.h>
+#include <vector>
+
+enum GrDriverBugWorkaroundType {
+#define GPU_OP(type, name) type,
+ GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
+#undef GPU_OP
+ NUMBER_OF_GPU_DRIVER_BUG_WORKAROUND_TYPES
+};
+
+class SK_API GrDriverBugWorkarounds {
+ public:
+ GrDriverBugWorkarounds();
+ explicit GrDriverBugWorkarounds(const std::vector<int32_t>& workarounds);
+
+ GrDriverBugWorkarounds& operator=(const GrDriverBugWorkarounds&) = default;
+
+ // Turn on any workarounds listed in |workarounds| (but don't turn any off).
+ void applyOverrides(const GrDriverBugWorkarounds& workarounds);
+
+ ~GrDriverBugWorkarounds();
+
+#define GPU_OP(type, name) bool name = false;
+ GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
+#undef GPU_OP
+};
+
+#endif