Diff
Modified: branches/safari-601.1.46-branch/LayoutTests/ChangeLog (192423 => 192424)
--- branches/safari-601.1.46-branch/LayoutTests/ChangeLog 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/LayoutTests/ChangeLog 2015-11-13 17:03:34 UTC (rev 192424)
@@ -1,5 +1,23 @@
2015-11-13 Matthew Hanson <matthew_han...@apple.com>
+ Merge r190446. rdar://problem/23432369
+
+ 2015-10-01 Dean Jackson <d...@apple.com>
+
+ Expose WEBGL_debug_renderer_info
+ https://bugs.webkit.org/show_bug.cgi?id=149735
+ <rdar://problem/18343500>
+
+ Reviewed by Simon Fraser.
+
+ Modify a test from the 1.0.2 conformance suite to make sure
+ we're actually enabling and passing the info.
+
+ * fast/canvas/webgl/webgl-debug-renderer-info-expected.txt: Added.
+ * fast/canvas/webgl/webgl-debug-renderer-info.html: Added.
+
+2015-11-13 Matthew Hanson <matthew_han...@apple.com>
+
Merge r188647. rdar://problem/23432373
2015-08-18 Dean Jackson <d...@apple.com>
Added: branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt (0 => 192424)
--- branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt (rev 0)
+++ branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt 2015-11-13 17:03:34 UTC (rev 192424)
@@ -0,0 +1,23 @@
+CONSOLE MESSAGE: line 97: WebGL: INVALID_ENUM: getParameter: invalid parameter name, WEBGL_debug_renderer_info not enabled
+CONSOLE MESSAGE: line 101: WebGL: INVALID_ENUM: getParameter: invalid parameter name, WEBGL_debug_renderer_info not enabled
+This test verifies the functionality of the WEBGL_debug_renderer_info extension, if it is available.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS WebGL context exists
+Testing enums with extension disabled
+PASS getError was expected value: INVALID_ENUM : UNMASKED_VENDOR_WEBGL should not be queryable if extension is disabled
+PASS getError was expected value: INVALID_ENUM : UNMASKED_RENDERER_WEBGL should not be queryable if extension is disabled
+PASS Successfully enabled WEBGL_debug_renderer_info extension
+PASS WEBGL_debug_renderer_info listed as supported and getExtension succeeded
+Testing enums with extension enabled
+PASS ext.UNMASKED_VENDOR_WEBGL is 0x9245
+PASS getError was expected value: NO_ERROR : UNMASKED_VENDOR_WEBGL query should succeed if extension is enable
+PASS ext.UNMASKED_RENDERER_WEBGL is 0x9246
+PASS getError was expected value: NO_ERROR : UNMASKED_RENDERER_WEBGL query should succeed if extension is enable
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html (0 => 192424)
--- branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html (rev 0)
+++ branches/safari-601.1.46-branch/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html 2015-11-13 17:03:34 UTC (rev 192424)
@@ -0,0 +1,123 @@
+<!--
+
+/*
+** Copyright (c) 2012 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+-->
+
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>WebGL WebGL_debug_renderer_info Conformance Tests</title>
+<script src="" type="text/_javascript_"></script>
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body>
+<div id="description"></div>
+<canvas id="canvas" style="width: 1px; height: 1px;"> </canvas>
+<div id="console"></div>
+
+<script>
+"use strict";
+description("This test verifies the functionality of the WEBGL_debug_renderer_info extension, if it is available.");
+
+debug("");
+
+var wtu = WebGLTestUtils;
+var gl = wtu.create3DContext("canvas");
+var ext = null;
+var vao = null;
+
+if (!gl) {
+ testFailed("WebGL context does not exist");
+} else {
+ testPassed("WebGL context exists");
+
+ // Run tests with extension disabled
+ runTestDisabled();
+
+ // Query the extension and store globally so shouldBe can access it
+ ext = gl.getExtension("WEBGL_debug_renderer_info");
+ if (!ext) {
+ testFailed("No WEBGL_debug_renderer_info support");
+ } else {
+ testPassed("Successfully enabled WEBGL_debug_renderer_info extension");
+
+ runSupportedTest(true);
+ runTestEnabled();
+ }
+}
+
+function runSupportedTest(extensionEnabled) {
+ var supported = gl.getSupportedExtensions();
+ if (supported.indexOf("WEBGL_debug_renderer_info") >= 0) {
+ if (extensionEnabled) {
+ testPassed("WEBGL_debug_renderer_info listed as supported and getExtension succeeded");
+ } else {
+ testFailed("WEBGL_debug_renderer_info listed as supported but getExtension failed");
+ }
+ } else {
+ if (extensionEnabled) {
+ testFailed("WEBGL_debug_renderer_info not listed as supported but getExtension succeeded");
+ } else {
+ testPassed("WEBGL_debug_renderer_info not listed as supported and getExtension failed -- this is legal");
+ }
+ }
+}
+
+function runTestDisabled() {
+ debug("Testing enums with extension disabled");
+
+ // Use the constants directly as we don't have the extension
+
+ var UNMASKED_VENDOR_WEBGL = 0x9245;
+ gl.getParameter(UNMASKED_VENDOR_WEBGL);
+ glErrorShouldBe(gl, gl.INVALID_ENUM, "UNMASKED_VENDOR_WEBGL should not be queryable if extension is disabled");
+
+ var UNMASKED_RENDERER_WEBGL = 0x9246;
+ gl.getParameter(UNMASKED_RENDERER_WEBGL);
+ glErrorShouldBe(gl, gl.INVALID_ENUM, "UNMASKED_RENDERER_WEBGL should not be queryable if extension is disabled");
+}
+
+function runTestEnabled() {
+ debug("Testing enums with extension enabled");
+
+ shouldBe("ext.UNMASKED_VENDOR_WEBGL", "0x9245");
+ gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
+ glErrorShouldBe(gl, gl.NO_ERROR, "UNMASKED_VENDOR_WEBGL query should succeed if extension is enable");
+
+ shouldBe("ext.UNMASKED_RENDERER_WEBGL", "0x9246");
+ gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
+ glErrorShouldBe(gl, gl.NO_ERROR, "UNMASKED_RENDERER_WEBGL query should succeed if extension is enable");
+}
+
+debug("");
+var successfullyParsed = true;
+</script>
+<script src=""
+
+</body>
+</html>
Modified: branches/safari-601.1.46-branch/Source/WebCore/ChangeLog (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/ChangeLog 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/ChangeLog 2015-11-13 17:03:34 UTC (rev 192424)
@@ -1,5 +1,43 @@
2015-11-13 Matthew Hanson <matthew_han...@apple.com>
+ Merge r190446. rdar://problem/23432369
+
+ 2015-10-01 Dean Jackson <d...@apple.com>
+
+ Expose WEBGL_debug_renderer_info
+ https://bugs.webkit.org/show_bug.cgi?id=149735
+ <rdar://problem/18343500>
+
+ Reviewed by Simon Fraser.
+
+ Enable the extension that allows content to query
+ for the GPUs vendor and details.
+
+ Now that we're enabling this, there was no need for
+ the internal setting that identified privileged situations.
+ However, since this meant that WEBGL_debug_shaders was
+ also exposed, I explicitly disable it since it is
+ not yet conformant.
+
+ Test: fast/canvas/webgl/webgl-debug-renderer-info.html
+ as well as the general conformance suite.
+
+ * html/canvas/WebGL2RenderingContext.cpp: No need to guard around allowPrivilegedExtensions().
+ (WebCore::WebGL2RenderingContext::getExtension):
+ (WebCore::WebGL2RenderingContext::getSupportedExtensions):
+ * html/canvas/WebGLRenderingContext.cpp: Ditto.
+ (WebCore::WebGLRenderingContext::getExtension):
+ (WebCore::WebGLRenderingContext::getSupportedExtensions):
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::allowPrivilegedExtensions): Deleted.
+ * html/canvas/WebGLRenderingContextBase.h:
+ * page/Settings.in: Remove privilegedWebGLExtensions.
+ * platform/graphics/opengl/Extensions3DOpenGL.cpp: Forbid the translated shader
+ extension while it is still buggy.
+ (WebCore::Extensions3DOpenGL::supportsExtension):
+
+2015-11-13 Matthew Hanson <matthew_han...@apple.com>
+
Merge r188647. rdar://problem/23432373
2015-08-18 Dean Jackson <d...@apple.com>
Modified: branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2015-11-13 17:03:34 UTC (rev 192424)
@@ -1021,20 +1021,18 @@
}
return m_webglDepthTexture.get();
}
- if (allowPrivilegedExtensions()) {
- if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
- if (!m_webglDebugRendererInfo)
- m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
- return m_webglDebugRendererInfo.get();
- }
- if (equalIgnoringCase(name, "WEBGL_debug_shaders")
- && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
- if (!m_webglDebugShaders)
- m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
- return m_webglDebugShaders.get();
- }
+ if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
+ if (!m_webglDebugRendererInfo)
+ m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
+ return m_webglDebugRendererInfo.get();
}
-
+ if (equalIgnoringCase(name, "WEBGL_debug_shaders")
+ && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
+ if (!m_webglDebugShaders)
+ m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
+ return m_webglDebugShaders.get();
+ }
+
return nullptr;
}
@@ -1064,12 +1062,10 @@
if (WebGLDepthTexture::supported(graphicsContext3D()))
result.append("WEBGL_depth_texture");
result.append("WEBGL_lose_context");
- if (allowPrivilegedExtensions()) {
- if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
- result.append("WEBGL_debug_shaders");
- result.append("WEBGL_debug_renderer_info");
- }
-
+ if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+ result.append("WEBGL_debug_shaders");
+ result.append("WEBGL_debug_renderer_info");
+
return result;
}
Modified: branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2015-11-13 17:03:34 UTC (rev 192424)
@@ -226,20 +226,18 @@
}
return m_angleInstancedArrays.get();
}
- if (allowPrivilegedExtensions()) {
- if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
- if (!m_webglDebugRendererInfo)
- m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
- return m_webglDebugRendererInfo.get();
- }
- if (equalIgnoringCase(name, "WEBGL_debug_shaders")
- && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
- if (!m_webglDebugShaders)
- m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
- return m_webglDebugShaders.get();
- }
+ if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
+ if (!m_webglDebugRendererInfo)
+ m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
+ return m_webglDebugRendererInfo.get();
}
-
+ if (equalIgnoringCase(name, "WEBGL_debug_shaders")
+ && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
+ if (!m_webglDebugShaders)
+ m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
+ return m_webglDebugShaders.get();
+ }
+
return nullptr;
}
@@ -287,13 +285,10 @@
result.append("WEBGL_draw_buffers");
if (ANGLEInstancedArrays::supported(this))
result.append("ANGLE_instanced_arrays");
-
- if (allowPrivilegedExtensions()) {
- if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
- result.append("WEBGL_debug_shaders");
- result.append("WEBGL_debug_renderer_info");
- }
-
+ if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+ result.append("WEBGL_debug_shaders");
+ result.append("WEBGL_debug_renderer_info");
+
return result;
}
Modified: branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2015-11-13 17:03:34 UTC (rev 192424)
@@ -576,13 +576,6 @@
m_isRobustnessEXTSupported = m_context->getExtensions()->isEnabled("GL_EXT_robustness");
}
-bool WebGLRenderingContextBase::allowPrivilegedExtensions() const
-{
- if (Page* page = canvas()->document().page())
- return page->settings().privilegedWebGLExtensionsEnabled();
- return false;
-}
-
void WebGLRenderingContextBase::addCompressedTextureFormat(GC3Denum format)
{
if (!m_compressedTextureFormats.contains(format))
Modified: branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.h 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.h 2015-11-13 17:03:34 UTC (rev 192424)
@@ -800,10 +800,6 @@
// Helper for restoration after context lost.
void maybeRestoreContext();
- // Determine if we are running privileged code in the browser, for example,
- // a Safari or Chrome extension.
- bool allowPrivilegedExtensions() const;
-
enum ConsoleDisplayPreference {
DisplayInConsole,
DontDisplayInConsole
Modified: branches/safari-601.1.46-branch/Source/WebCore/page/Settings.in (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/page/Settings.in 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/page/Settings.in 2015-11-13 17:03:34 UTC (rev 192424)
@@ -103,7 +103,6 @@
webGLEnabled initial=false
webGLErrorsToConsoleEnabled initial=true
openGLMultisamplingEnabled initial=true
-privilegedWebGLExtensionsEnabled initial=false
forceSoftwareWebGLRendering initial=false
accelerated2dCanvasEnabled initial=false
antialiased2dCanvasEnabled initial=true
Modified: branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp (192423 => 192424)
--- branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp 2015-11-13 17:03:29 UTC (rev 192423)
+++ branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp 2015-11-13 17:03:34 UTC (rev 192424)
@@ -167,6 +167,12 @@
&& (m_availableExtensions.contains("GL_ARB_draw_instanced") || m_availableExtensions.contains("GL_EXT_draw_instanced"));
}
+ // We explicitly do not support this extension until
+ // we fix the following bug:
+ // https://bugs.webkit.org/show_bug.cgi?id=149734
+ if (name == "GL_ANGLE_translated_shader_source")
+ return false;
+
if (name == "GL_EXT_sRGB")
#if PLATFORM(IOS)
return m_availableExtensions.contains("GL_EXT_sRGB");