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"
8 #include "mozilla/dom/WebGLRenderingContextBinding.h"
9 #include "WebGLContext.h"
10 #include "WebGLFormats.h"
14 WebGLExtensionCompressedTextureS3TC::WebGLExtensionCompressedTextureS3TC(
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
));
37 bool WebGLExtensionCompressedTextureS3TC::IsSupported(
38 const WebGLContext
* webgl
) {
39 gl::GLContext
* gl
= webgl
->GL();
40 if (gl
->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc
))
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