/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_ShaderErrorHandler_DEFINED #define skgpu_ShaderErrorHandler_DEFINED #include "include/core/SkTypes.h" namespace skgpu { /** * Abstract class to report errors when compiling shaders. */ class SK_API ShaderErrorHandler { public: virtual ~ShaderErrorHandler() = default; /** * compileError(shader, errors) is kept for backward compatibility with older clients. */ virtual void compileError([[maybe_unused]] const char* shader, [[maybe_unused]] const char* errors) {} virtual void compileError(const char* shader, const char* errors, [[maybe_unused]] bool shaderWasCached) { // Default implementation. Ignore shaderWasCached. this->compileError(shader, errors); } protected: ShaderErrorHandler() = default; ShaderErrorHandler(const ShaderErrorHandler&) = delete; ShaderErrorHandler& operator=(const ShaderErrorHandler&) = delete; }; /** * Used when no error handler is set. Will report failures via SkDebugf and asserts. */ ShaderErrorHandler* DefaultShaderErrorHandler(); } // namespace skgpu #endif // skgpu_ShaderErrorHandler_DEFINED