1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_gfx_config_gfxConfigManager_h
#define mozilla_gfx_config_gfxConfigManager_h
#include "gfxFeature.h"
#include "gfxTypes.h"
#include "nsCOMPtr.h"
class nsIGfxInfo;
namespace mozilla {
namespace gfx {
class gfxConfigManager {
public:
gfxConfigManager()
: mFeatureWr(nullptr),
mFeatureWrCompositor(nullptr),
mFeatureWrAngle(nullptr),
mFeatureWrDComp(nullptr),
mFeatureWrPartial(nullptr),
mFeatureWrShaderCache(nullptr),
mFeatureWrOptimizedShaders(nullptr),
mFeatureWrScissoredCacheClears(nullptr),
mFeatureHwCompositing(nullptr),
mFeatureD3D11HwAngle(nullptr),
mFeatureD3D11Compositing(nullptr),
mFeatureGPUProcess(nullptr),
mWrForceEnabled(false),
mWrSoftwareForceEnabled(false),
mWrCompositorForceEnabled(false),
mWrForceAngle(false),
mWrForceAngleNoGPUProcess(false),
mWrDCompWinEnabled(false),
mWrCompositorDCompRequired(false),
mWrForcePartialPresent(false),
mWrPartialPresent(false),
mWrOptimizedShaders(false),
mWrScissoredCacheClearsEnabled(false),
mWrScissoredCacheClearsForceEnabled(false),
mGPUProcessAllowSoftware(false),
mWrEnvForceEnabled(false),
mScaledResolution(false),
mDisableHwCompositingNoWr(false),
mIsNightly(false),
mIsEarlyBetaOrEarlier(false),
mSafeMode(false),
mIsWin11OrLater(false) {}
void Init();
void ConfigureWebRender();
void ConfigureFromBlocklist(long aFeature, FeatureState* aFeatureState);
protected:
void EmplaceUserPref(const char* aPrefName, Maybe<bool>& aValue);
void ConfigureWebRenderQualified();
nsCOMPtr<nsIGfxInfo> mGfxInfo;
FeatureState* mFeatureWr;
FeatureState* mFeatureWrCompositor;
FeatureState* mFeatureWrAngle;
FeatureState* mFeatureWrDComp;
FeatureState* mFeatureWrPartial;
FeatureState* mFeatureWrShaderCache;
FeatureState* mFeatureWrOptimizedShaders;
FeatureState* mFeatureWrScissoredCacheClears;
FeatureState* mFeatureHwCompositing;
FeatureState* mFeatureD3D11HwAngle;
FeatureState* mFeatureD3D11Compositing;
FeatureState* mFeatureGPUProcess;
/**
* Prefs
*/
Maybe<bool> mWrCompositorEnabled;
bool mWrForceEnabled;
bool mWrSoftwareForceEnabled;
bool mWrCompositorForceEnabled;
bool mWrForceAngle;
bool mWrForceAngleNoGPUProcess;
bool mWrDCompWinEnabled;
bool mWrCompositorDCompRequired;
bool mWrForcePartialPresent;
bool mWrPartialPresent;
Maybe<bool> mWrShaderCache;
bool mWrOptimizedShaders;
bool mWrScissoredCacheClearsEnabled;
bool mWrScissoredCacheClearsForceEnabled;
bool mGPUProcessAllowSoftware;
/**
* Environment variables
*/
bool mWrEnvForceEnabled;
/**
* System support
*/
HwStretchingSupport mHwStretchingSupport;
bool mScaledResolution;
bool mDisableHwCompositingNoWr;
bool mIsNightly;
bool mIsEarlyBetaOrEarlier;
bool mSafeMode;
bool mIsWin11OrLater;
};
} // namespace gfx
} // namespace mozilla
#endif // mozilla_gfx_config_gfxConfigParams_h
|