2015-10-01 Dean Jackson <dino@apple.com>
+ Rollout r190446 for the moment. It broke the build.
+
+ * fast/canvas/webgl/webgl-debug-renderer-info-expected.txt: Removed.
+ * fast/canvas/webgl/webgl-debug-renderer-info.html: Removed.
+
+2015-10-01 Dean Jackson <dino@apple.com>
+
Expose WEBGL_debug_renderer_info
https://bugs.webkit.org/show_bug.cgi?id=149735
<rdar://problem/18343500>
+++ /dev/null
-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
-
+++ /dev/null
-<!--
-
-/*
-** 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="resources/desktop-gl-constants.js" type="text/javascript"></script>
-<script src="../../../resources/js-test-pre.js"></script>
-<script src="resources/webgl-test.js"></script>
-<script src="resources/webgl-test-utils.js"></script>
-</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="../../../resources/js-test-post.js"></script>
-
-</body>
-</html>
+2015-10-01 Dean Jackson <dino@apple.com>
+
+ Rollout r190446 for the moment. It broke the build.
+
+ * html/canvas/WebGL2RenderingContext.cpp:
+ (WebCore::WebGL2RenderingContext::getExtension):
+ (WebCore::WebGL2RenderingContext::getSupportedExtensions):
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::getExtension):
+ (WebCore::WebGLRenderingContext::getSupportedExtensions):
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::allowPrivilegedExtensions):
+ * html/canvas/WebGLRenderingContextBase.h:
+ * page/Settings.in:
+ * platform/graphics/opengl/Extensions3DOpenGL.cpp:
+ (WebCore::Extensions3DOpenGL::supportsExtension): Deleted.
+
2015-10-01 Jaehun Lim <ljaehun.lim@samsung.com>
Unreviewed, fix build warning after r190434
}
return m_webglDepthTexture.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();
+ 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();
+ }
}
-
+
return nullptr;
}
if (WebGLDepthTexture::supported(graphicsContext3D()))
result.append("WEBGL_depth_texture");
result.append("WEBGL_lose_context");
- if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
- result.append("WEBGL_debug_shaders");
- result.append("WEBGL_debug_renderer_info");
-
+ if (allowPrivilegedExtensions()) {
+ if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+ result.append("WEBGL_debug_shaders");
+ result.append("WEBGL_debug_renderer_info");
+ }
+
return result;
}
}
return m_angleInstancedArrays.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();
+ 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();
+ }
}
-
+
return nullptr;
}
result.append("WEBGL_draw_buffers");
if (ANGLEInstancedArrays::supported(this))
result.append("ANGLE_instanced_arrays");
- if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
- result.append("WEBGL_debug_shaders");
- result.append("WEBGL_debug_renderer_info");
-
+
+ if (allowPrivilegedExtensions()) {
+ if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+ result.append("WEBGL_debug_shaders");
+ result.append("WEBGL_debug_renderer_info");
+ }
+
return result;
}
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))
// 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
webGLEnabled initial=false
webGLErrorsToConsoleEnabled initial=true
openGLMultisamplingEnabled initial=true
+privilegedWebGLExtensionsEnabled initial=false
forceSoftwareWebGLRendering initial=false
accelerated2dCanvasEnabled initial=false
antialiased2dCanvasEnabled initial=true
&& (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");