| /* | |
| * 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 "include/gpu/GrDriverBugWorkaroundsAutogen.h" | |
| #endif | |
| #include "include/core/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 |