| /* | |
| * 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 skiatest_graphite_ContextFactory_DEFINED | |
| #define skiatest_graphite_ContextFactory_DEFINED | |
| #include "include/core/SkRefCnt.h" | |
| #include "include/gpu/graphite/ContextOptions.h" | |
| #include "include/gpu/graphite/GraphiteTypes.h" | |
| #include "include/private/SkTArray.h" | |
| #include "tools/gpu/ContextType.h" | |
| #include "tools/graphite/GraphiteTestContext.h" | |
| #include "tools/graphite/TestOptions.h" | |
| namespace skgpu::graphite { | |
| class Context; | |
| } | |
| namespace skiatest::graphite { | |
| struct ContextInfo { | |
| GraphiteTestContext* fTestContext = nullptr; | |
| skgpu::graphite::Context* fContext = nullptr; | |
| }; | |
| class ContextFactory { | |
| public: | |
| explicit ContextFactory(const TestOptions&); | |
| ContextFactory() = default; | |
| ContextFactory(const ContextFactory&) = delete; | |
| ContextFactory& operator=(const ContextFactory&) = delete; | |
| ~ContextFactory() = default; | |
| ContextInfo getContextInfo(skgpu::ContextType); | |
| private: | |
| struct OwnedContextInfo { | |
| OwnedContextInfo(); | |
| OwnedContextInfo(skgpu::ContextType, | |
| std::unique_ptr<GraphiteTestContext>, | |
| std::unique_ptr<skgpu::graphite::Context>); | |
| ~OwnedContextInfo(); | |
| OwnedContextInfo(OwnedContextInfo&&); | |
| OwnedContextInfo& operator=(OwnedContextInfo&&); | |
| // This holds the same data as ContextInfo, but uses unique_ptr to maintain ownership. | |
| skgpu::ContextType fType = skgpu::ContextType::kMock; | |
| std::unique_ptr<GraphiteTestContext> fTestContext; | |
| std::unique_ptr<skgpu::graphite::Context> fContext; | |
| }; | |
| static ContextInfo AsContextInfo(const OwnedContextInfo& ctx); | |
| skia_private::TArray<OwnedContextInfo> fContexts; | |
| const TestOptions fOptions = {}; | |
| }; | |
| } // namespace skiatest::graphite | |
| #endif // skiatest_graphite_ContextFactory_DEFINED |