| /* |
| * Copyright 2018 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "include/gpu/GrDriverBugWorkarounds.h" |
| |
| #include "include/core/SkTypes.h" |
| |
| GrDriverBugWorkarounds::GrDriverBugWorkarounds() = default; |
| |
| GrDriverBugWorkarounds::GrDriverBugWorkarounds( |
| const std::vector<int>& enabled_driver_bug_workarounds) { |
| for (auto id : enabled_driver_bug_workarounds) { |
| switch (id) { |
| #define GPU_OP(type, name) \ |
| case GrDriverBugWorkaroundType::type: \ |
| name = true; \ |
| break; |
| |
| GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) |
| #undef GPU_OP |
| default: |
| SK_ABORT("Not implemented"); |
| break; |
| } |
| } |
| } |
| |
| 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; |