Title: [294972] trunk/Source/WebCore
Revision
294972
Author
commit-qu...@webkit.org
Date
2022-05-27 17:56:02 -0700 (Fri, 27 May 2022)

Log Message

Add EXT_texture_compression_bptc WebGL extension support
https://bugs.webkit.org/show_bug.cgi?id=235637

Patch by Alexey Knyazev <3479527+lexaknya...@users.noreply.github.com> on 2022-05-27
Reviewed by Kenneth Russell.

Support BPTC texture formats and slightly cleanup RGTC code.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp:
(WebCore::convertToJSValue):
* Source/WebCore/html/canvas/EXTTextureCompressionBPTC.cpp: Copied from Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp.
(WebCore::EXTTextureCompressionBPTC::EXTTextureCompressionBPTC):
(WebCore::EXTTextureCompressionBPTC::getName const):
(WebCore::EXTTextureCompressionBPTC::supported):
* Source/WebCore/html/canvas/EXTTextureCompressionBPTC.h: Copied from Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h.
* Source/WebCore/html/canvas/EXTTextureCompressionBPTC.idl: Copied from Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h.
* Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp:
(WebCore::EXTTextureCompressionRGTC::EXTTextureCompressionRGTC):
(WebCore::EXTTextureCompressionRGTC::supported):
* Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h:
* Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):
* Source/WebCore/html/canvas/WebGLExtension.h:
* Source/WebCore/html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):
* Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::loseExtensions):
* Source/WebCore/html/canvas/WebGLRenderingContextBase.h:
* Source/WebCore/platform/graphics/GraphicsContextGL.h:

Canonical link: https://commits.webkit.org/251076@main

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/CMakeLists.txt (294971 => 294972)


--- trunk/Source/WebCore/CMakeLists.txt	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/CMakeLists.txt	2022-05-28 00:56:02 UTC (rev 294972)
@@ -1808,6 +1808,7 @@
         html/canvas/EXTFloatBlend.cpp
         html/canvas/EXTFragDepth.cpp
         html/canvas/EXTShaderTextureLOD.cpp
+        html/canvas/EXTTextureCompressionBPTC.cpp
         html/canvas/EXTTextureCompressionRGTC.cpp
         html/canvas/EXTTextureFilterAnisotropic.cpp
         html/canvas/EXTTextureNorm16.cpp
@@ -1870,6 +1871,7 @@
     html/canvas/EXTFloatBlend.idl
     html/canvas/EXTFragDepth.idl
     html/canvas/EXTShaderTextureLOD.idl
+    html/canvas/EXTTextureCompressionBPTC.idl
     html/canvas/EXTTextureCompressionRGTC.idl
     html/canvas/EXTTextureFilterAnisotropic.idl
     html/canvas/EXTTextureNorm16.idl

Modified: trunk/Source/WebCore/DerivedSources-input.xcfilelist (294971 => 294972)


--- trunk/Source/WebCore/DerivedSources-input.xcfilelist	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/DerivedSources-input.xcfilelist	2022-05-28 00:56:02 UTC (rev 294972)
@@ -1296,6 +1296,7 @@
 $(PROJECT_DIR)/html/canvas/EXTFloatBlend.idl
 $(PROJECT_DIR)/html/canvas/EXTFragDepth.idl
 $(PROJECT_DIR)/html/canvas/EXTShaderTextureLOD.idl
+$(PROJECT_DIR)/html/canvas/EXTTextureCompressionBPTC.idl
 $(PROJECT_DIR)/html/canvas/EXTTextureCompressionRGTC.idl
 $(PROJECT_DIR)/html/canvas/EXTTextureFilterAnisotropic.idl
 $(PROJECT_DIR)/html/canvas/EXTTextureNorm16.idl

Modified: trunk/Source/WebCore/DerivedSources-output.xcfilelist (294971 => 294972)


--- trunk/Source/WebCore/DerivedSources-output.xcfilelist	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/DerivedSources-output.xcfilelist	2022-05-28 00:56:02 UTC (rev 294972)
@@ -774,6 +774,8 @@
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTFragDepth.h
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTShaderTextureLOD.cpp
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTShaderTextureLOD.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTTextureCompressionBPTC.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTTextureCompressionBPTC.h
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTTextureCompressionRGTC.cpp
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTTextureCompressionRGTC.h
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSEXTTextureFilterAnisotropic.cpp

Modified: trunk/Source/WebCore/DerivedSources.make (294971 => 294972)


--- trunk/Source/WebCore/DerivedSources.make	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/DerivedSources.make	2022-05-28 00:56:02 UTC (rev 294972)
@@ -1138,6 +1138,7 @@
     $(WebCore)/html/canvas/EXTFloatBlend.idl \
     $(WebCore)/html/canvas/EXTFragDepth.idl \
     $(WebCore)/html/canvas/EXTShaderTextureLOD.idl \
+    $(WebCore)/html/canvas/EXTTextureCompressionBPTC.idl \
     $(WebCore)/html/canvas/EXTTextureCompressionRGTC.idl \
     $(WebCore)/html/canvas/EXTTextureFilterAnisotropic.idl \
     $(WebCore)/html/canvas/EXTTextureNorm16.idl \

Modified: trunk/Source/WebCore/Sources.txt (294971 => 294972)


--- trunk/Source/WebCore/Sources.txt	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/Sources.txt	2022-05-28 00:56:02 UTC (rev 294972)
@@ -1364,6 +1364,7 @@
 html/canvas/EXTFloatBlend.cpp
 html/canvas/EXTFragDepth.cpp
 html/canvas/EXTShaderTextureLOD.cpp
+html/canvas/EXTTextureCompressionBPTC.cpp
 html/canvas/EXTTextureCompressionRGTC.cpp
 html/canvas/EXTTextureFilterAnisotropic.cpp
 html/canvas/EXTTextureNorm16.cpp
@@ -3124,6 +3125,7 @@
 JSEXTFloatBlend.cpp
 JSEXTFragDepth.cpp
 JSEXTShaderTextureLOD.cpp
+JSEXTTextureCompressionBPTC.cpp
 JSEXTTextureCompressionRGTC.cpp
 JSEXTTextureFilterAnisotropic.cpp
 JSEXTTextureNorm16.cpp

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (294971 => 294972)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2022-05-28 00:56:02 UTC (rev 294972)
@@ -2860,6 +2860,8 @@
 		8A7CC96B12076D73001D4588 /* PendingScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7CC96A12076D73001D4588 /* PendingScript.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		8A81BF8511DCFD9000DA2B98 /* NetworkLoadMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A81BF8411DCFD9000DA2B98 /* NetworkLoadMetrics.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		8A844D0511D3C18E0014065C /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A844D0211D3C18E0014065C /* Performance.h */; };
+		8A8AFFF0283BE23E005221FE /* EXTTextureCompressionRGTC.h in Headers */ = {isa = PBXBuildFile; fileRef = A37A42E22527B49D00F75AFF /* EXTTextureCompressionRGTC.h */; };
+		8A8AFFF1283BE241005221FE /* EXTTextureCompressionBPTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3FE12D283BD69D000BD5DD /* EXTTextureCompressionBPTC.h */; };
 		8A9A587111E84C36008ACFD1 /* JSPerformanceNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A586F11E84C36008ACFD1 /* JSPerformanceNavigation.h */; };
 		8A9A587511E84C81008ACFD1 /* JSPerformance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587311E84C81008ACFD1 /* JSPerformance.h */; };
 		8A9A588811E84F37008ACFD1 /* JSPerformanceTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A587711E84C98008ACFD1 /* JSPerformanceTiming.h */; };
@@ -12603,6 +12605,9 @@
 		8A054532283CF13F00F498E7 /* EXTTextureNorm16.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXTTextureNorm16.h; sourceTree = "<group>"; };
 		8A12E35C11FA33280025836A /* DocumentLoadTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentLoadTiming.h; sourceTree = "<group>"; };
 		8A309C9E123950BE00CB9204 /* NestingLevelIncrementer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NestingLevelIncrementer.h; sourceTree = "<group>"; };
+		8A3FE12D283BD69D000BD5DD /* EXTTextureCompressionBPTC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXTTextureCompressionBPTC.h; sourceTree = "<group>"; };
+		8A3FE12E283BD69E000BD5DD /* EXTTextureCompressionBPTC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXTTextureCompressionBPTC.cpp; sourceTree = "<group>"; };
+		8A3FE12F283BD69E000BD5DD /* EXTTextureCompressionBPTC.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EXTTextureCompressionBPTC.idl; sourceTree = "<group>"; };
 		8A413ADE1207BBA50082016E /* ScriptRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptRunner.h; sourceTree = "<group>"; };
 		8A413ADF1207BBA50082016E /* ScriptRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptRunner.cpp; sourceTree = "<group>"; };
 		8A7CC96A12076D73001D4588 /* PendingScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PendingScript.h; sourceTree = "<group>"; };
@@ -21861,6 +21866,9 @@
 				727AFED11A2EA6A0000442E8 /* EXTsRGB.cpp */,
 				727AFED21A2EA6A0000442E8 /* EXTsRGB.h */,
 				727AFED31A2EA6A0000442E8 /* EXTsRGB.idl */,
+				8A3FE12E283BD69E000BD5DD /* EXTTextureCompressionBPTC.cpp */,
+				8A3FE12D283BD69D000BD5DD /* EXTTextureCompressionBPTC.h */,
+				8A3FE12F283BD69E000BD5DD /* EXTTextureCompressionBPTC.idl */,
 				A37A42E02527B49C00F75AFF /* EXTTextureCompressionRGTC.cpp */,
 				A37A42E22527B49D00F75AFF /* EXTTextureCompressionRGTC.h */,
 				A37A42E32527B49E00F75AFF /* EXTTextureCompressionRGTC.idl */,
@@ -34749,6 +34757,8 @@
 				FE0BCF3427C0661000BFB2DB /* ExtendedDOMIsoSubspaces.h in Headers */,
 				E47E276516036ED200EE2AFB /* ExtensionStyleSheets.h in Headers */,
 				5C4304B1191AC908000E2BC0 /* EXTShaderTextureLOD.h in Headers */,
+				8A8AFFF1283BE241005221FE /* EXTTextureCompressionBPTC.h in Headers */,
+				8A8AFFF0283BE23E005221FE /* EXTTextureCompressionRGTC.h in Headers */,
 				7728694F14F8882500F484DC /* EXTTextureFilterAnisotropic.h in Headers */,
 				8A054533283CF17F00F498E7 /* EXTTextureNorm16.h in Headers */,
 				41A0829C22935F3D008426E0 /* FeaturePolicy.h in Headers */,

Modified: trunk/Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp (294971 => 294972)


--- trunk/Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -36,6 +36,7 @@
 #include "JSEXTFloatBlend.h"
 #include "JSEXTFragDepth.h"
 #include "JSEXTShaderTextureLOD.h"
+#include "JSEXTTextureCompressionBPTC.h"
 #include "JSEXTTextureCompressionRGTC.h"
 #include "JSEXTTextureFilterAnisotropic.h"
 #include "JSEXTTextureNorm16.h"
@@ -165,6 +166,8 @@
         return toJS(&lexicalGlobalObject, &globalObject, static_cast<WebGLLoseContext&>(extension));
     case WebGLExtension::EXTShaderTextureLODName:
         return toJS(&lexicalGlobalObject, &globalObject, static_cast<EXTShaderTextureLOD&>(extension));
+    case WebGLExtension::EXTTextureCompressionBPTCName:
+        return toJS(&lexicalGlobalObject, &globalObject, static_cast<EXTTextureCompressionBPTC&>(extension));
     case WebGLExtension::EXTTextureCompressionRGTCName:
         return toJS(&lexicalGlobalObject, &globalObject, static_cast<EXTTextureCompressionRGTC&>(extension));
     case WebGLExtension::EXTTextureFilterAnisotropicName:

Copied: trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.cpp (from rev 294971, trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp) (0 => 294972)


--- trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.cpp	                        (rev 0)
+++ trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2022 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if ENABLE(WEBGL)
+#include "EXTTextureCompressionBPTC.h"
+
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTTextureCompressionBPTC);
+
+EXTTextureCompressionBPTC::EXTTextureCompressionBPTC(WebGLRenderingContextBase& context)
+    : WebGLExtension(context)
+{
+    context.graphicsContextGL()->ensureExtensionEnabled("GL_EXT_texture_compression_bptc"_s);
+    context.graphicsContextGL()->ensureExtensionEnabled("GL_ARB_texture_compression_bptc"_s);
+
+    context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_RGBA_BPTC_UNORM_EXT);
+    context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT);
+    context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT);
+    context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT);
+}
+
+EXTTextureCompressionBPTC::~EXTTextureCompressionBPTC() = default;
+
+WebGLExtension::ExtensionName EXTTextureCompressionBPTC::getName() const
+{
+    return EXTTextureCompressionBPTCName;
+}
+
+bool EXTTextureCompressionBPTC::supported(GraphicsContextGL& context)
+{
+    return context.supportsExtension("GL_EXT_texture_compression_bptc"_s)
+        || context.supportsExtension("GL_ARB_texture_compression_bptc"_s);
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBGL)

Copied: trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.h (from rev 294971, trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h) (0 => 294972)


--- trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.h	                        (rev 0)
+++ trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.h	2022-05-28 00:56:02 UTC (rev 294972)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2022 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "WebGLExtension.h"
+
+namespace WebCore {
+
+class EXTTextureCompressionBPTC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTTextureCompressionBPTC);
+public:
+    explicit EXTTextureCompressionBPTC(WebGLRenderingContextBase&);
+    virtual ~EXTTextureCompressionBPTC();
+
+    ExtensionName getName() const override;
+
+    static bool supported(GraphicsContextGL&);
+};
+
+} // namespace WebCore

Copied: trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.idl (from rev 294971, trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h) (0 => 294972)


--- trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.idl	                        (rev 0)
+++ trunk/Source/WebCore/html/canvas/EXTTextureCompressionBPTC.idl	2022-05-28 00:56:02 UTC (rev 294972)
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2022 The Chromium Authors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    Conditional=WEBGL,
+    GenerateIsReachable=ImplWebGLRenderingContext,
+    LegacyNoInterfaceObject,
+] interface EXTTextureCompressionBPTC {
+    const unsigned long COMPRESSED_RGBA_BPTC_UNORM_EXT = 0x8E8C;
+    const unsigned long COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 0x8E8D;
+    const unsigned long COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 0x8E8E;
+    const unsigned long COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8E8F;
+};

Modified: trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -38,6 +38,7 @@
     : WebGLExtension(context)
 {
     context.graphicsContextGL()->ensureExtensionEnabled("GL_EXT_texture_compression_rgtc"_s);
+    context.graphicsContextGL()->ensureExtensionEnabled("GL_ARB_texture_compression_rgtc"_s);
 
     context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_RED_RGTC1_EXT);
     context.addCompressedTextureFormat(GraphicsContextGL::COMPRESSED_SIGNED_RED_RGTC1_EXT);
@@ -52,6 +53,12 @@
     return EXTTextureCompressionRGTCName;
 }
 
+bool EXTTextureCompressionRGTC::supported(GraphicsContextGL& context)
+{
+    return context.supportsExtension("GL_EXT_texture_compression_rgtc"_s)
+        || context.supportsExtension("GL_ARB_texture_compression_rgtc"_s);
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(WEBGL)

Modified: trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/EXTTextureCompressionRGTC.h	2022-05-28 00:56:02 UTC (rev 294972)
@@ -36,6 +36,8 @@
     virtual ~EXTTextureCompressionRGTC();
 
     ExtensionName getName() const override;
+
+    static bool supported(GraphicsContextGL&);
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -32,6 +32,7 @@
 #include "EXTColorBufferFloat.h"
 #include "EXTColorBufferHalfFloat.h"
 #include "EXTFloatBlend.h"
+#include "EXTTextureCompressionBPTC.h"
 #include "EXTTextureCompressionRGTC.h"
 #include "EXTTextureFilterAnisotropic.h"
 #include "EXTTextureNorm16.h"
@@ -2711,7 +2712,8 @@
         return variable.get(); \
     }
 
-    ENABLE_IF_REQUESTED(EXTTextureCompressionRGTC, m_extTextureCompressionRGTC, "EXT_texture_compression_rgtc"_s, enableSupportedExtension("GL_EXT_texture_compression_rgtc"_s));
+    ENABLE_IF_REQUESTED(EXTTextureCompressionBPTC, m_extTextureCompressionBPTC, "EXT_texture_compression_bptc"_s, EXTTextureCompressionBPTC::supported(*m_context));
+    ENABLE_IF_REQUESTED(EXTTextureCompressionRGTC, m_extTextureCompressionRGTC, "EXT_texture_compression_rgtc"_s, EXTTextureCompressionRGTC::supported(*m_context));
     ENABLE_IF_REQUESTED(EXTTextureFilterAnisotropic, m_extTextureFilterAnisotropic, "EXT_texture_filter_anisotropic"_s, enableSupportedExtension("GL_EXT_texture_filter_anisotropic"_s));
     ENABLE_IF_REQUESTED(EXTTextureNorm16, m_extTextureNorm16, "EXT_texture_norm16"_s, EXTTextureNorm16::supported(*m_context));
     ENABLE_IF_REQUESTED(OESTextureFloatLinear, m_oesTextureFloatLinear, "OES_texture_float_linear"_s, enableSupportedExtension("GL_OES_texture_float_linear"_s));
@@ -2746,7 +2748,9 @@
 
     if (m_context->supportsExtension("GL_OES_texture_float_linear"_s))
         result.append("OES_texture_float_linear"_s);
-    if (m_context->supportsExtension("GL_EXT_texture_compression_rgtc"_s))
+    if (EXTTextureCompressionBPTC::supported(*m_context))
+        result.append("EXT_texture_compression_bptc"_s);
+    if (EXTTextureCompressionRGTC::supported(*m_context))
         result.append("EXT_texture_compression_rgtc"_s);
     if (m_context->supportsExtension("GL_EXT_texture_filter_anisotropic"_s))
         result.append("EXT_texture_filter_anisotropic"_s);

Modified: trunk/Source/WebCore/html/canvas/WebGLExtension.h (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/WebGLExtension.h	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/WebGLExtension.h	2022-05-28 00:56:02 UTC (rev 294972)
@@ -41,6 +41,7 @@
         EXTBlendMinMaxName,
         EXTFragDepthName,
         EXTShaderTextureLODName,
+        EXTTextureCompressionBPTCName,
         EXTTextureCompressionRGTCName,
         EXTTextureFilterAnisotropicName,
         EXTTextureNorm16Name,

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -35,6 +35,7 @@
 #include "EXTFloatBlend.h"
 #include "EXTFragDepth.h"
 #include "EXTShaderTextureLOD.h"
+#include "EXTTextureCompressionBPTC.h"
 #include "EXTTextureCompressionRGTC.h"
 #include "EXTTextureFilterAnisotropic.h"
 #include "EXTsRGB.h"
@@ -163,7 +164,8 @@
         return m_extShaderTextureLOD.get();
     }
     ENABLE_IF_REQUESTED(EXTTextureFilterAnisotropic, m_extTextureFilterAnisotropic, "EXT_texture_filter_anisotropic", enableSupportedExtension("GL_EXT_texture_filter_anisotropic"_s));
-    ENABLE_IF_REQUESTED(EXTTextureCompressionRGTC, m_extTextureCompressionRGTC, "EXT_texture_compression_rgtc", enableSupportedExtension("GL_EXT_texture_compression_rgtc"_s));
+    ENABLE_IF_REQUESTED(EXTTextureCompressionBPTC, m_extTextureCompressionBPTC, "EXT_texture_compression_bptc", EXTTextureCompressionBPTC::supported(*m_context));
+    ENABLE_IF_REQUESTED(EXTTextureCompressionRGTC, m_extTextureCompressionRGTC, "EXT_texture_compression_rgtc", EXTTextureCompressionRGTC::supported(*m_context));
     ENABLE_IF_REQUESTED(KHRParallelShaderCompile, m_khrParallelShaderCompile, "KHR_parallel_shader_compile", KHRParallelShaderCompile::supported(*m_context));
     ENABLE_IF_REQUESTED(OESStandardDerivatives, m_oesStandardDerivatives, "OES_standard_derivatives", enableSupportedExtension("GL_OES_standard_derivatives"_s));
     ENABLE_IF_REQUESTED(OESTextureFloat, m_oesTextureFloat, "OES_texture_float", OESTextureFloat::supported(*m_context));
@@ -244,7 +246,9 @@
         result.append("OES_standard_derivatives"_s);
     if (m_context->supportsExtension("GL_EXT_shader_texture_lod"_s) || m_context->supportsExtension("GL_ARB_shader_texture_lod"_s))
         result.append("EXT_shader_texture_lod"_s);
-    if (m_context->supportsExtension("GL_EXT_texture_compression_rgtc"_s))
+    if (EXTTextureCompressionBPTC::supported(*m_context))
+        result.append("EXT_texture_compression_bptc"_s);
+    if (EXTTextureCompressionRGTC::supported(*m_context))
         result.append("EXT_texture_compression_rgtc"_s);
     if (m_context->supportsExtension("GL_EXT_texture_filter_anisotropic"_s))
         result.append("EXT_texture_filter_anisotropic"_s);

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp	2022-05-28 00:56:02 UTC (rev 294972)
@@ -40,6 +40,7 @@
 #include "EXTFloatBlend.h"
 #include "EXTFragDepth.h"
 #include "EXTShaderTextureLOD.h"
+#include "EXTTextureCompressionBPTC.h"
 #include "EXTTextureCompressionRGTC.h"
 #include "EXTTextureFilterAnisotropic.h"
 #include "EXTTextureNorm16.h"
@@ -4000,6 +4001,7 @@
     CHECK_EXTENSION(m_extFragDepth, "EXT_frag_depth");
     CHECK_EXTENSION(m_extBlendMinMax, "EXT_blend_minmax");
     CHECK_EXTENSION(m_extsRGB, "EXT_sRGB");
+    CHECK_EXTENSION(m_extTextureCompressionBPTC, "EXT_texture_compression_bptc");
     CHECK_EXTENSION(m_extTextureCompressionRGTC, "EXT_texture_compression_rgtc");
     CHECK_EXTENSION(m_extTextureFilterAnisotropic, "EXT_texture_filter_anisotropic");
     CHECK_EXTENSION(m_extTextureFilterAnisotropic, "WEBKIT_EXT_texture_filter_anisotropic");
@@ -7099,7 +7101,11 @@
         break;
     }
     case GraphicsContextGL::COMPRESSED_RED_GREEN_RGTC2_EXT:
-    case GraphicsContextGL::COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: {
+    case GraphicsContextGL::COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:
+    case GraphicsContextGL::COMPRESSED_RGBA_BPTC_UNORM_EXT:
+    case GraphicsContextGL::COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:
+    case GraphicsContextGL::COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:
+    case GraphicsContextGL::COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: {
         const int kBlockSize = 16;
         const int kBlockWidth = 4;
         const int kBlockHeight = 4;
@@ -8102,6 +8108,7 @@
     LOSE_EXTENSION(m_extFragDepth);
     LOSE_EXTENSION(m_extBlendMinMax);
     LOSE_EXTENSION(m_extsRGB);
+    LOSE_EXTENSION(m_extTextureCompressionBPTC);
     LOSE_EXTENSION(m_extTextureCompressionRGTC);
     LOSE_EXTENSION(m_extTextureFilterAnisotropic);
     LOSE_EXTENSION(m_extTextureNorm16);

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (294971 => 294972)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h	2022-05-28 00:56:02 UTC (rev 294972)
@@ -76,6 +76,7 @@
 class EXTColorBufferFloat;
 class EXTColorBufferHalfFloat;
 class EXTFloatBlend;
+class EXTTextureCompressionBPTC;
 class EXTTextureCompressionRGTC;
 class EXTTextureFilterAnisotropic;
 class EXTTextureNorm16;
@@ -441,6 +442,7 @@
     WebGLRenderingContextBase(CanvasBase&, WebGLContextAttributes);
     WebGLRenderingContextBase(CanvasBase&, Ref<GraphicsContextGL>&&, WebGLContextAttributes);
 
+    friend class EXTTextureCompressionBPTC;
     friend class EXTTextureCompressionRGTC;
     friend class WebGLDrawBuffers;
     friend class WebGLFramebuffer;
@@ -706,6 +708,7 @@
     RefPtr<EXTFragDepth> m_extFragDepth;
     RefPtr<EXTBlendMinMax> m_extBlendMinMax;
     RefPtr<EXTsRGB> m_extsRGB;
+    RefPtr<EXTTextureCompressionBPTC> m_extTextureCompressionBPTC;
     RefPtr<EXTTextureCompressionRGTC> m_extTextureCompressionRGTC;
     RefPtr<EXTTextureFilterAnisotropic> m_extTextureFilterAnisotropic;
     RefPtr<EXTTextureNorm16> m_extTextureNorm16;

Modified: trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h (294971 => 294972)


--- trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h	2022-05-28 00:32:27 UTC (rev 294971)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h	2022-05-28 00:56:02 UTC (rev 294972)
@@ -756,6 +756,12 @@
     static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC;
     static constexpr GCGLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD;
 
+    // GL_EXT_texture_compression_bptc
+    static constexpr GCGLenum COMPRESSED_RGBA_BPTC_UNORM_EXT = 0x8E8C;
+    static constexpr GCGLenum COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 0x8E8D;
+    static constexpr GCGLenum COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 0x8E8E;
+    static constexpr GCGLenum COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8E8F;
+
     // GL_EXT_texture_compression_rgtc
     static constexpr GCGLenum COMPRESSED_RED_RGTC1_EXT = 0x8DBB;
     static constexpr GCGLenum COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to