2018-04-18 20:46:25 +00:00
|
|
|
/*
|
|
|
|
* 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.
|
2019-04-23 17:05:21 +00:00
|
|
|
#include "include/gpu/GrDriverBugWorkaroundsAutogen.h"
|
2018-04-18 20:46:25 +00:00
|
|
|
#endif
|
|
|
|
|
2019-04-23 17:05:21 +00:00
|
|
|
#include "include/core/SkTypes.h"
|
2018-05-14 21:02:03 +00:00
|
|
|
|
2018-04-18 20:46:25 +00:00
|
|
|
#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
|
|
|
|
};
|
|
|
|
|
2018-05-14 21:02:03 +00:00
|
|
|
class SK_API GrDriverBugWorkarounds {
|
2018-04-18 20:46:25 +00:00
|
|
|
public:
|
|
|
|
GrDriverBugWorkarounds();
|
|
|
|
explicit GrDriverBugWorkarounds(const std::vector<int32_t>& workarounds);
|
|
|
|
|
2018-05-14 21:02:03 +00:00
|
|
|
GrDriverBugWorkarounds& operator=(const GrDriverBugWorkarounds&) = default;
|
|
|
|
|
|
|
|
// Turn on any workarounds listed in |workarounds| (but don't turn any off).
|
|
|
|
void applyOverrides(const GrDriverBugWorkarounds& workarounds);
|
|
|
|
|
2018-04-18 20:46:25 +00:00
|
|
|
~GrDriverBugWorkarounds();
|
|
|
|
|
|
|
|
#define GPU_OP(type, name) bool name = false;
|
|
|
|
GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
|
|
|
|
#undef GPU_OP
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|