/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrBackendSemaphorePriv_DEFINED #define GrBackendSemaphorePriv_DEFINED #include "include/core/SkTypes.h" #include "include/gpu/ganesh/GrBackendSemaphore.h" enum class GrBackendApi : unsigned int; class GrBackendSemaphoreData { public: virtual ~GrBackendSemaphoreData(); #if defined(SK_DEBUG) virtual GrBackendApi type() const = 0; #endif protected: GrBackendSemaphoreData() = default; GrBackendSemaphoreData(const GrBackendSemaphoreData&) = default; using AnySemaphoreData = GrBackendSemaphore::AnySemaphoreData; private: friend class GrBackendSemaphore; virtual void copyTo(AnySemaphoreData&) const = 0; }; class GrBackendSemaphorePriv final { public: template static GrBackendSemaphore MakeGrBackendSemaphore(GrBackendApi backend, const SemaphoreData& data) { return GrBackendSemaphore(backend, data); } static const GrBackendSemaphoreData* GetBackendData(const GrBackendSemaphore& sem) { return sem.fSemaphoreData.get(); } }; #endif