diff options
Diffstat (limited to 'src')
-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 |