Bug 1671598 [wpt PR 26128] - [AspectRatio] Fix divide by zero with a small float...
[gecko.git] / dom / canvas / WebGLExtensionCompressedTextureS3TC.cpp
blob35e87bed2a380ac327dfc4ed4b8c9adc9c5ae4c7
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #include "WebGLExtensions.h"
7 #include "GLContext.h"
8 #include "mozilla/dom/WebGLRenderingContextBinding.h"
9 #include "WebGLContext.h"
10 #include "WebGLFormats.h"
12 namespace mozilla {
14 WebGLExtensionCompressedTextureS3TC::WebGLExtensionCompressedTextureS3TC(
15 WebGLContext* webgl)
16 : WebGLExtensionBase(webgl) {
17 RefPtr<WebGLContext> webgl_ = webgl; // Bug 1201275
18 const auto fnAdd = [&webgl_](GLenum sizedFormat,
19 webgl::EffectiveFormat effFormat) {
20 auto& fua = webgl_->mFormatUsage;
22 auto usage = fua->EditUsage(effFormat);
23 usage->isFilterable = true;
24 fua->AllowSizedTexFormat(sizedFormat, usage);
27 #define FOO(x) LOCAL_GL_##x, webgl::EffectiveFormat::x
29 fnAdd(FOO(COMPRESSED_RGB_S3TC_DXT1_EXT));
30 fnAdd(FOO(COMPRESSED_RGBA_S3TC_DXT1_EXT));
31 fnAdd(FOO(COMPRESSED_RGBA_S3TC_DXT3_EXT));
32 fnAdd(FOO(COMPRESSED_RGBA_S3TC_DXT5_EXT));
34 #undef FOO
37 bool WebGLExtensionCompressedTextureS3TC::IsSupported(
38 const WebGLContext* webgl) {
39 gl::GLContext* gl = webgl->GL();
40 if (gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc))
41 return true;
43 return gl->IsExtensionSupported(
44 gl::GLContext::EXT_texture_compression_dxt1) &&
45 gl->IsExtensionSupported(
46 gl::GLContext::ANGLE_texture_compression_dxt3) &&
47 gl->IsExtensionSupported(
48 gl::GLContext::ANGLE_texture_compression_dxt5);
51 } // namespace mozilla