diff options
author | Adrienne Walker <enne@chromium.org> | 2018-05-07 12:48:34 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-10 14:54:15 +0000 |
commit | 328490c6a1625ce51d0e81688e0c85c79c400d86 (patch) | |
tree | af830b6655631d400c7c1fc581e0e625083dd555 /src/gpu | |
parent | ccd4cfc23ebbbecbc6b292359352aad335ad7b73 (diff) |
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>
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrCaps.cpp | 4 | ||||
-rw-r--r-- | src/gpu/GrDriverBugWorkarounds.cpp | 9 | ||||
-rw-r--r-- | src/gpu/GrDriverBugWorkarounds.h | 44 | ||||
-rw-r--r-- | src/gpu/GrDriverBugWorkaroundsAutogen.h | 13 |
4 files changed, 13 insertions, 57 deletions
diff --git a/src/gpu/GrCaps.cpp b/src/gpu/GrCaps.cpp index 0507a3fdfb..42d3d4c51a 100644 --- a/src/gpu/GrCaps.cpp +++ b/src/gpu/GrCaps.cpp @@ -94,6 +94,8 @@ GrCaps::GrCaps(const GrContextOptions& options) { fAvoidStencilBuffers = false; fPreferVRAMUseOverFlushes = true; + + fDriverBugWorkarounds = options.fDriverBugWorkarounds; } void GrCaps::applyOptionsOverrides(const GrContextOptions& options) { @@ -123,6 +125,8 @@ void GrCaps::applyOptionsOverrides(const GrContextOptions& options) { fMaxWindowRectangles = GrWindowRectangles::kMaxWindows; } fAvoidStencilBuffers = options.fAvoidStencilBuffers; + + fDriverBugWorkarounds.applyOverrides(options.fDriverBugWorkarounds); } static SkString map_flags_to_string(uint32_t flags) { diff --git a/src/gpu/GrDriverBugWorkarounds.cpp b/src/gpu/GrDriverBugWorkarounds.cpp index 5ed9d8d2ef..a1f27a3205 100644 --- a/src/gpu/GrDriverBugWorkarounds.cpp +++ b/src/gpu/GrDriverBugWorkarounds.cpp @@ -29,4 +29,13 @@ GrDriverBugWorkarounds::GrDriverBugWorkarounds( } } +void GrDriverBugWorkarounds::applyOverrides( + const GrDriverBugWorkarounds& workarounds) { +#define GPU_OP(type, name) \ + name |= workarounds.name; + + GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) +#undef GPU_OP +} + GrDriverBugWorkarounds::~GrDriverBugWorkarounds() = default; diff --git a/src/gpu/GrDriverBugWorkarounds.h b/src/gpu/GrDriverBugWorkarounds.h deleted file mode 100644 index bca5dc99f1..0000000000 --- a/src/gpu/GrDriverBugWorkarounds.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 <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 GrDriverBugWorkarounds { - public: - GrDriverBugWorkarounds(); - explicit GrDriverBugWorkarounds(const std::vector<int32_t>& workarounds); - - ~GrDriverBugWorkarounds(); - -#define GPU_OP(type, name) bool name = false; - GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) -#undef GPU_OP -}; - -#endif diff --git a/src/gpu/GrDriverBugWorkaroundsAutogen.h b/src/gpu/GrDriverBugWorkaroundsAutogen.h deleted file mode 100644 index 87aa46172e..0000000000 --- a/src/gpu/GrDriverBugWorkaroundsAutogen.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is auto-generated from build_workaround_header.py -// DO NOT EDIT! - -#define GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)\ - GPU_OP(AVOID_STENCIL_BUFFERS, \ - avoid_stencil_buffers) \ - GPU_OP(CLEAR_TO_ZERO_OR_ONE_BROKEN, \ - clear_to_zero_or_one_broken) \ -// The End |