Coverage Report

Created: 2024-05-20 07:14

/src/skia/tools/graphite/ContextFactory.h
Line
Count
Source
1
/*
2
 * Copyright 2021 Google LLC
3
 *
4
 * Use of this source code is governed by a BSD-style license that can be
5
 * found in the LICENSE file.
6
 */
7
8
#ifndef skiatest_graphite_ContextFactory_DEFINED
9
#define skiatest_graphite_ContextFactory_DEFINED
10
11
#include "include/core/SkRefCnt.h"
12
#include "include/gpu/graphite/ContextOptions.h"
13
#include "include/gpu/graphite/GraphiteTypes.h"
14
#include "include/private/base/SkTArray.h"
15
#include "tools/gpu/ContextType.h"
16
#include "tools/graphite/GraphiteTestContext.h"
17
#include "tools/graphite/TestOptions.h"
18
19
namespace skgpu::graphite {
20
class Context;
21
}
22
23
namespace skiatest::graphite {
24
25
struct ContextInfo {
26
    GraphiteTestContext* fTestContext = nullptr;
27
    skgpu::graphite::Context* fContext = nullptr;
28
};
29
30
class ContextFactory {
31
public:
32
    explicit ContextFactory(const TestOptions&);
33
24
    ContextFactory() = default;
34
    ContextFactory(const ContextFactory&) = delete;
35
    ContextFactory& operator=(const ContextFactory&) = delete;
36
37
24
    ~ContextFactory() = default;
38
39
    ContextInfo getContextInfo(skgpu::ContextType);
40
41
private:
42
    struct OwnedContextInfo {
43
        OwnedContextInfo();
44
        OwnedContextInfo(skgpu::ContextType,
45
                         std::unique_ptr<GraphiteTestContext>,
46
                         std::unique_ptr<skgpu::graphite::Context>);
47
48
        ~OwnedContextInfo();
49
        OwnedContextInfo(OwnedContextInfo&&);
50
        OwnedContextInfo& operator=(OwnedContextInfo&&);
51
52
        // This holds the same data as ContextInfo, but uses unique_ptr to maintain ownership.
53
        skgpu::ContextType fType = skgpu::ContextType::kMock;
54
        std::unique_ptr<GraphiteTestContext> fTestContext;
55
        std::unique_ptr<skgpu::graphite::Context> fContext;
56
    };
57
58
    static ContextInfo AsContextInfo(const OwnedContextInfo& ctx);
59
60
    skia_private::TArray<OwnedContextInfo> fContexts;
61
    const TestOptions fOptions = {};
62
};
63
64
}  // namespace skiatest::graphite
65
66
#endif  // skiatest_graphite_ContextFactory_DEFINED