Bug 1936278 - Prevent search mode chiclet from being dismissed when clicking in page...
[gecko.git] / dom / canvas / WebGLExtensions.h
blobe80681525434add61d3bdd1869e3b409cc5c39c4
1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef WEBGL_EXTENSIONS_H_
7 #define WEBGL_EXTENSIONS_H_
9 #include "mozilla/AlreadyAddRefed.h"
10 #include "nsString.h"
11 #include "nsTArray.h"
12 #include "nsWrapperCache.h"
13 #include "WebGLObjectModel.h"
14 #include "WebGLTypes.h"
16 namespace mozilla {
17 class ErrorResult;
19 namespace dom {
20 template <typename>
21 struct Nullable;
22 template <typename>
23 class Sequence;
24 } // namespace dom
26 namespace webgl {
27 struct FormatRenderableState;
28 class FormatUsageAuthority;
29 } // namespace webgl
31 class WebGLContext;
32 class WebGLQuery;
33 class WebGLShader;
34 class WebGLTexture;
35 class WebGLVertexArray;
37 class WebGLExtensionBase {
38 protected:
39 WebGLContext* const mContext;
41 private:
42 bool mIsExplicit = false;
44 protected:
45 explicit WebGLExtensionBase(WebGLContext* context) : mContext(context) {}
47 public:
48 virtual ~WebGLExtensionBase() = default;
50 private:
51 virtual void OnSetExplicit() {}
53 public:
54 void SetExplicit() {
55 mIsExplicit = true;
56 OnSetExplicit();
59 bool IsExplicit() const { return mIsExplicit; }
62 ////
64 class WebGLExtensionCompressedTextureASTC : public WebGLExtensionBase {
65 public:
66 explicit WebGLExtensionCompressedTextureASTC(WebGLContext* webgl);
67 static bool IsSupported(const WebGLContext* webgl);
70 class WebGLExtensionCompressedTextureBPTC final : public WebGLExtensionBase {
71 public:
72 explicit WebGLExtensionCompressedTextureBPTC(WebGLContext* webgl);
73 static bool IsSupported(const WebGLContext* webgl);
76 class WebGLExtensionCompressedTextureES3 : public WebGLExtensionBase {
77 public:
78 explicit WebGLExtensionCompressedTextureES3(WebGLContext*);
81 class WebGLExtensionCompressedTextureETC1 : public WebGLExtensionBase {
82 public:
83 explicit WebGLExtensionCompressedTextureETC1(WebGLContext*);
86 class WebGLExtensionCompressedTexturePVRTC : public WebGLExtensionBase {
87 public:
88 explicit WebGLExtensionCompressedTexturePVRTC(WebGLContext*);
91 class WebGLExtensionCompressedTextureRGTC final : public WebGLExtensionBase {
92 public:
93 explicit WebGLExtensionCompressedTextureRGTC(WebGLContext* webgl);
94 static bool IsSupported(const WebGLContext* webgl);
97 class WebGLExtensionCompressedTextureS3TC : public WebGLExtensionBase {
98 public:
99 explicit WebGLExtensionCompressedTextureS3TC(WebGLContext*);
100 static bool IsSupported(const WebGLContext*);
103 class WebGLExtensionCompressedTextureS3TC_SRGB : public WebGLExtensionBase {
104 public:
105 explicit WebGLExtensionCompressedTextureS3TC_SRGB(WebGLContext*);
106 static bool IsSupported(const WebGLContext*);
109 class WebGLExtensionDebugRendererInfo : public WebGLExtensionBase {
110 public:
111 explicit WebGLExtensionDebugRendererInfo(WebGLContext* webgl)
112 : WebGLExtensionBase(webgl) {}
115 class WebGLExtensionDebugShaders : public WebGLExtensionBase {
116 public:
117 explicit WebGLExtensionDebugShaders(WebGLContext* webgl)
118 : WebGLExtensionBase(webgl) {}
121 class WebGLExtensionDepthClamp : public WebGLExtensionBase {
122 public:
123 explicit WebGLExtensionDepthClamp(WebGLContext* webgl);
126 class WebGLExtensionDepthTexture : public WebGLExtensionBase {
127 public:
128 explicit WebGLExtensionDepthTexture(WebGLContext*);
129 static bool IsSupported(const WebGLContext*);
132 class WebGLExtensionDrawBuffersIndexed : public WebGLExtensionBase {
133 public:
134 explicit WebGLExtensionDrawBuffersIndexed(WebGLContext* webgl)
135 : WebGLExtensionBase(webgl) {}
138 class WebGLExtensionElementIndexUint : public WebGLExtensionBase {
139 public:
140 explicit WebGLExtensionElementIndexUint(WebGLContext* webgl)
141 : WebGLExtensionBase(webgl) {}
144 class WebGLExtensionExplicitPresent : public WebGLExtensionBase {
145 public:
146 explicit WebGLExtensionExplicitPresent(WebGLContext*);
147 static bool IsSupported(const WebGLContext*);
150 class WebGLExtensionEXTColorBufferFloat : public WebGLExtensionBase {
151 public:
152 explicit WebGLExtensionEXTColorBufferFloat(WebGLContext*);
153 static bool IsSupported(const WebGLContext*);
156 class WebGLExtensionFBORenderMipmap : public WebGLExtensionBase {
157 public:
158 explicit WebGLExtensionFBORenderMipmap(WebGLContext* webgl);
159 static bool IsSupported(const WebGLContext*);
162 class WebGLExtensionFloatBlend : public WebGLExtensionBase {
163 public:
164 explicit WebGLExtensionFloatBlend(WebGLContext* webgl);
165 static bool IsSupported(const WebGLContext*);
168 class WebGLExtensionFragDepth : public WebGLExtensionBase {
169 public:
170 explicit WebGLExtensionFragDepth(WebGLContext*);
171 static bool IsSupported(const WebGLContext* context);
174 class WebGLExtensionLoseContext : public WebGLExtensionBase {
175 public:
176 explicit WebGLExtensionLoseContext(WebGLContext* webgl)
177 : WebGLExtensionBase(webgl) {}
180 class WebGLExtensionMultiview : public WebGLExtensionBase {
181 public:
182 explicit WebGLExtensionMultiview(WebGLContext*);
183 static bool IsSupported(const WebGLContext*);
186 class WebGLExtensionProvokingVertex : public WebGLExtensionBase {
187 public:
188 explicit WebGLExtensionProvokingVertex(WebGLContext* webgl)
189 : WebGLExtensionBase(webgl) {}
192 class WebGLExtensionSRGB : public WebGLExtensionBase {
193 public:
194 explicit WebGLExtensionSRGB(WebGLContext*);
195 static bool IsSupported(const WebGLContext* context);
198 class WebGLExtensionStandardDerivatives : public WebGLExtensionBase {
199 public:
200 explicit WebGLExtensionStandardDerivatives(WebGLContext* webgl)
201 : WebGLExtensionBase(webgl) {}
204 class WebGLExtensionShaderTextureLod : public WebGLExtensionBase {
205 public:
206 explicit WebGLExtensionShaderTextureLod(WebGLContext*);
207 static bool IsSupported(const WebGLContext* context);
210 class WebGLExtensionTextureFilterAnisotropic : public WebGLExtensionBase {
211 public:
212 explicit WebGLExtensionTextureFilterAnisotropic(WebGLContext* webgl)
213 : WebGLExtensionBase(webgl) {}
216 class WebGLExtensionTextureFloat : public WebGLExtensionBase {
217 public:
218 static void InitWebGLFormats(webgl::FormatUsageAuthority* authority);
220 explicit WebGLExtensionTextureFloat(WebGLContext*);
221 static bool IsSupported(const WebGLContext*);
224 class WebGLExtensionTextureFloatLinear : public WebGLExtensionBase {
225 public:
226 explicit WebGLExtensionTextureFloatLinear(WebGLContext*);
229 class WebGLExtensionTextureHalfFloat : public WebGLExtensionBase {
230 public:
231 static void InitWebGLFormats(webgl::FormatUsageAuthority* authority);
233 explicit WebGLExtensionTextureHalfFloat(WebGLContext*);
234 static bool IsSupported(const WebGLContext*);
237 class WebGLExtensionTextureHalfFloatLinear : public WebGLExtensionBase {
238 public:
239 explicit WebGLExtensionTextureHalfFloatLinear(WebGLContext*);
242 class WebGLExtensionTextureNorm16 : public WebGLExtensionBase {
243 public:
244 static bool IsSupported(const WebGLContext*);
245 explicit WebGLExtensionTextureNorm16(WebGLContext*);
248 class WebGLExtensionColorBufferFloat : public WebGLExtensionBase {
249 public:
250 explicit WebGLExtensionColorBufferFloat(WebGLContext*);
251 static bool IsSupported(const WebGLContext*);
253 void SetRenderable(const webgl::FormatRenderableState&);
254 void OnSetExplicit() override;
257 class WebGLExtensionColorBufferHalfFloat : public WebGLExtensionBase {
258 public:
259 explicit WebGLExtensionColorBufferHalfFloat(WebGLContext*);
260 static bool IsSupported(const WebGLContext*);
262 void SetRenderable(const webgl::FormatRenderableState&);
263 void OnSetExplicit() override;
266 class WebGLExtensionDrawBuffers : public WebGLExtensionBase {
267 public:
268 explicit WebGLExtensionDrawBuffers(WebGLContext*);
269 static bool IsSupported(const WebGLContext*);
272 class WebGLExtensionVertexArray : public WebGLExtensionBase {
273 public:
274 explicit WebGLExtensionVertexArray(WebGLContext* webgl)
275 : WebGLExtensionBase(webgl) {}
278 class WebGLExtensionInstancedArrays : public WebGLExtensionBase {
279 public:
280 explicit WebGLExtensionInstancedArrays(WebGLContext* webgl);
281 static bool IsSupported(const WebGLContext* webgl);
284 class WebGLExtensionBlendMinMax : public WebGLExtensionBase {
285 public:
286 explicit WebGLExtensionBlendMinMax(WebGLContext* webgl);
287 static bool IsSupported(const WebGLContext*);
290 class WebGLExtensionDisjointTimerQuery : public WebGLExtensionBase {
291 public:
292 explicit WebGLExtensionDisjointTimerQuery(WebGLContext* webgl);
293 static bool IsSupported(const WebGLContext*);
296 class WebGLExtensionMOZDebug final : public WebGLExtensionBase {
297 public:
298 explicit WebGLExtensionMOZDebug(WebGLContext* webgl)
299 : WebGLExtensionBase(webgl) {}
302 } // namespace mozilla
304 #endif // WEBGL_EXTENSIONS_H_