Implement WEBGL_debug_shaders and WEBGL_debug_renderer_info extensions
authorzmo@google.com <zmo@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Oct 2011 23:58:55 +0000 (23:58 +0000)
committerzmo@google.com <zmo@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Oct 2011 23:58:55 +0000 (23:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=70077

Reviewed by Kenneth Russell.

Source/WebCore:

* WebCore.gypi: added new extension class files.
* WebCore.xcodeproj/project.pbxproj: ditto.
* WebCore.pro: ditto.
* CMakeLists.txt: ditto.
* GNUmakefile.list.am: ditto.
* bindings/js/JSWebGLRenderingContextCustom.cpp:
(WebCore::toJS): Handles two new extensions.
* bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
(WebCore::toV8Object): Ditto.
* html/canvas/WebGLDebugRendererInfo.cpp: Added.
(WebCore::WebGLDebugRendererInfo::WebGLDebugRendererInfo):
(WebCore::WebGLDebugRendererInfo::~WebGLDebugRendererInfo):
(WebCore::WebGLDebugRendererInfo::getName):
(WebCore::WebGLDebugRendererInfo::create):
* html/canvas/WebGLDebugRendererInfo.h: Added.
* html/canvas/WebGLDebugRendererInfo.idl: Added.
* html/canvas/WebGLDebugShaders.cpp: Added.
(WebCore::WebGLDebugShaders::WebGLDebugShaders):
(WebCore::WebGLDebugShaders::~WebGLDebugShaders):
(WebCore::WebGLDebugShaders::getName):
(WebCore::WebGLDebugShaders::create):
(WebCore::WebGLDebugShaders::getTranslatedShaderSource):
* html/canvas/WebGLDebugShaders.h: Added.
* html/canvas/WebGLDebugShaders.idl: Added.
* html/canvas/WebGLExtension.h:
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::allowPrivilegedExtensions): To be implemented - deciding whether the two extensions should be allowed or not.
(WebCore::WebGLRenderingContext::getExtension): Handles two new extensions.
(WebCore::WebGLRenderingContext::getParameter): Handles UNMASKED_VENDOR_WEBGL / UNMASKED_RENDERER_WEBGL
(WebCore::WebGLRenderingContext::getSupportedExtensions): Handles two new extensions.
* html/canvas/WebGLRenderingContext.h:
* platform/graphics/Extensions3D.h: Ditto.
* platform/graphics/GraphicsTypes3D.h: Add GC3Dchar.
* platform/graphics/chromium/Extensions3DChromium.h: Handles two new extensions.
* platform/graphics/opengl/Extensions3DOpenGL.cpp: Ditto.
(WebCore::getTranslatedShaderSourceANGLE):
* platform/graphics/opengl/Extensions3DOpenGL.h: Ditto.
* platform/graphics/qt/Extensions3DQt.cpp: Ditto.
(WebCore::Extensions3DQt::getTranslatedShaderSourceANGLE):
* platform/graphics/qt/Extensions3DQt.h: Ditto.

Source/WebKit/chromium:

* public/WebGraphicsContext3D.h: Added support for getTranslatedShaderSourceANGLE.
(WebKit::WebGraphicsContext3D::getTranslatedShaderSourceANGLE):
* src/Extensions3DChromium.cpp: Ditto.
(WebCore::Extensions3DChromium::getTranslatedShaderSourceANGLE):
* src/GraphicsContext3DChromium.cpp: Ditto.
* src/GraphicsContext3DPrivate.h: Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@97896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

29 files changed:
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.list.am
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.pro
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
Source/WebCore/bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLDebugRendererInfo.h [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLDebugShaders.cpp [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLDebugShaders.h [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLDebugShaders.idl [new file with mode: 0644]
Source/WebCore/html/canvas/WebGLExtension.h
Source/WebCore/html/canvas/WebGLRenderingContext.cpp
Source/WebCore/html/canvas/WebGLRenderingContext.h
Source/WebCore/platform/graphics/Extensions3D.h
Source/WebCore/platform/graphics/GraphicsTypes3D.h
Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h
Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp
Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h
Source/WebCore/platform/graphics/qt/Extensions3DQt.cpp
Source/WebCore/platform/graphics/qt/Extensions3DQt.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/public/WebGraphicsContext3D.h
Source/WebKit/chromium/src/Extensions3DChromium.cpp
Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp
Source/WebKit/chromium/src/GraphicsContext3DPrivate.h

index e496cf8..ec91ab5 100644 (file)
@@ -303,6 +303,8 @@ SET(WebCore_IDL_FILES
     html/canvas/WebGLActiveInfo.idl
     html/canvas/WebGLBuffer.idl
     html/canvas/WebGLContextAttributes.idl
+    html/canvas/WebGLDebugRendererInfo.idl
+    html/canvas/WebGLDebugShaders.idl
     html/canvas/WebGLFramebuffer.idl
     html/canvas/WebGLProgram.idl
     html/canvas/WebGLRenderbuffer.idl
@@ -2150,6 +2152,8 @@ IF (ENABLE_WEBGL)
         html/canvas/WebGLBuffer.cpp
         html/canvas/WebGLContextAttributes.cpp
         html/canvas/WebGLContextEvent.cpp
+        html/canvas/WebGLDebugRendererInfo.cpp
+        html/canvas/WebGLDebugShaders.cpp
         html/canvas/WebGLFramebuffer.cpp
         html/canvas/WebGLGetInfo.cpp
         html/canvas/WebGLObject.cpp
index e44c1df..bbd4581 100644 (file)
@@ -1,3 +1,51 @@
+2011-10-19  Zhenyao Mo  <zmo@google.com>
+
+        Implement WEBGL_debug_shaders and WEBGL_debug_renderer_info extensions
+        https://bugs.webkit.org/show_bug.cgi?id=70077
+
+        Reviewed by Kenneth Russell.
+
+        * WebCore.gypi: added new extension class files.
+        * WebCore.xcodeproj/project.pbxproj: ditto.
+        * WebCore.pro: ditto.
+        * CMakeLists.txt: ditto.
+        * GNUmakefile.list.am: ditto.
+        * bindings/js/JSWebGLRenderingContextCustom.cpp:
+        (WebCore::toJS): Handles two new extensions.
+        * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
+        (WebCore::toV8Object): Ditto.
+        * html/canvas/WebGLDebugRendererInfo.cpp: Added.
+        (WebCore::WebGLDebugRendererInfo::WebGLDebugRendererInfo):
+        (WebCore::WebGLDebugRendererInfo::~WebGLDebugRendererInfo):
+        (WebCore::WebGLDebugRendererInfo::getName):
+        (WebCore::WebGLDebugRendererInfo::create):
+        * html/canvas/WebGLDebugRendererInfo.h: Added.
+        * html/canvas/WebGLDebugRendererInfo.idl: Added.
+        * html/canvas/WebGLDebugShaders.cpp: Added.
+        (WebCore::WebGLDebugShaders::WebGLDebugShaders):
+        (WebCore::WebGLDebugShaders::~WebGLDebugShaders):
+        (WebCore::WebGLDebugShaders::getName):
+        (WebCore::WebGLDebugShaders::create):
+        (WebCore::WebGLDebugShaders::getTranslatedShaderSource):
+        * html/canvas/WebGLDebugShaders.h: Added.
+        * html/canvas/WebGLDebugShaders.idl: Added.
+        * html/canvas/WebGLExtension.h:
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::allowPrivilegedExtensions): To be implemented - deciding whether the two extensions should be allowed or not.
+        (WebCore::WebGLRenderingContext::getExtension): Handles two new extensions.
+        (WebCore::WebGLRenderingContext::getParameter): Handles UNMASKED_VENDOR_WEBGL / UNMASKED_RENDERER_WEBGL
+        (WebCore::WebGLRenderingContext::getSupportedExtensions): Handles two new extensions.
+        * html/canvas/WebGLRenderingContext.h:
+        * platform/graphics/Extensions3D.h: Ditto.
+        * platform/graphics/GraphicsTypes3D.h: Add GC3Dchar.
+        * platform/graphics/chromium/Extensions3DChromium.h: Handles two new extensions.
+        * platform/graphics/opengl/Extensions3DOpenGL.cpp: Ditto.
+        (WebCore::getTranslatedShaderSourceANGLE):
+        * platform/graphics/opengl/Extensions3DOpenGL.h: Ditto.
+        * platform/graphics/qt/Extensions3DQt.cpp: Ditto.
+        (WebCore::Extensions3DQt::getTranslatedShaderSourceANGLE):
+        * platform/graphics/qt/Extensions3DQt.h: Ditto.
+
 2011-10-19  Geoffrey Garen  <ggaren@apple.com>
 
         Removed StringImplBase, fusing it into StringImpl
index cffa083..89d9494 100644 (file)
@@ -4803,6 +4803,10 @@ webcore_sources += \
        Source/WebCore/html/canvas/WebGLContextAttributes.h \
        Source/WebCore/html/canvas/WebGLContextEvent.cpp \
        Source/WebCore/html/canvas/WebGLContextEvent.h \
+       Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp \
+       Source/WebCore/html/canvas/WebGLDebugRendererInfo.h \
+       Source/WebCore/html/canvas/WebGLDebugShaders.cpp \
+       Source/WebCore/html/canvas/WebGLDebugShaders.h \
        Source/WebCore/html/canvas/WebGLFramebuffer.cpp \
        Source/WebCore/html/canvas/WebGLFramebuffer.h \
        Source/WebCore/html/canvas/WebGLGetInfo.cpp \
index 270e619..6603f66 100644 (file)
             'html/canvas/WebGLBuffer.idl',
             'html/canvas/WebGLContextAttributes.idl',
             'html/canvas/WebGLContextEvent.idl',
+            'html/canvas/WebGLDebugRendererInfo.idl',
+            'html/canvas/WebGLDebugShaders.idl',
             'html/canvas/WebGLFramebuffer.idl',
             'html/canvas/WebGLProgram.idl',
             'html/canvas/WebGLRenderbuffer.idl',
             'html/canvas/WebGLContextAttributes.h',
             'html/canvas/WebGLContextEvent.cpp',
             'html/canvas/WebGLContextEvent.h',
+            'html/canvas/WebGLDebugRendererInfo.cpp',
+            'html/canvas/WebGLDebugRendererInfo.h',
+            'html/canvas/WebGLDebugShaders.cpp',
+            'html/canvas/WebGLDebugShaders.h',
             'html/canvas/WebGLExtension.cpp',
             'html/canvas/WebGLExtension.h',
             'html/canvas/WebGLFramebuffer.cpp',
index 163fb88..1a96c41 100644 (file)
@@ -3615,6 +3615,8 @@ contains(DEFINES, ENABLE_WEBGL=1) {
         html/canvas/WebGLBuffer.h \
         html/canvas/WebGLContextAttributes.h \
         html/canvas/WebGLContextEvent.h \
+        html/canvas/WebGLDebugRendererInfo.h \
+        html/canvas/WebGLDebugShaders.h \
         html/canvas/WebGLExtension.h \
         html/canvas/WebGLFramebuffer.h \
         html/canvas/WebGLGetInfo.h \
@@ -3646,6 +3648,8 @@ contains(DEFINES, ENABLE_WEBGL=1) {
         html/canvas/WebGLBuffer.cpp \
         html/canvas/WebGLContextAttributes.cpp \
         html/canvas/WebGLContextEvent.cpp \
+        html/canvas/WebGLDebugRendererInfo.cpp \
+        html/canvas/WebGLDebugShaders.cpp \
         html/canvas/WebGLExtension.cpp \
         html/canvas/WebGLFramebuffer.cpp \
         html/canvas/WebGLGetInfo.cpp \
index b9768af..846c6be 100644 (file)
                9FFE3EA511B5A4390037874E /* JSMemoryInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FFE3EA311B5A4390037874E /* JSMemoryInfo.cpp */; };
                9FFE3EA611B5A4390037874E /* JSMemoryInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FFE3EA411B5A4390037874E /* JSMemoryInfo.h */; };
                A00B721A11DE6428008AB9FF /* CheckedInt.h in Headers */ = {isa = PBXBuildFile; fileRef = A00B721911DE6427008AB9FF /* CheckedInt.h */; };
+               A0EE0DF5144F825500F80B0D /* WebGLDebugRendererInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */; };
+               A0EE0DF6144F825500F80B0D /* WebGLDebugRendererInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */; };
+               A0EE0DF7144F825500F80B0D /* WebGLDebugShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */; };
+               A0EE0DF8144F825500F80B0D /* WebGLDebugShaders.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */; };
                A120ACA413F998CA00FE4AC7 /* LayoutRepainter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A120ACA113F9984600FE4AC7 /* LayoutRepainter.cpp */; };
                A12538D413F9B60A00024754 /* LayoutRepainter.h in Headers */ = {isa = PBXBuildFile; fileRef = A120ACA013F9983700FE4AC7 /* LayoutRepainter.h */; settings = {ATTRIBUTES = (Private, ); }; };
                A136A00C1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */; };
                9FFE3EA311B5A4390037874E /* JSMemoryInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMemoryInfo.cpp; sourceTree = "<group>"; };
                9FFE3EA411B5A4390037874E /* JSMemoryInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMemoryInfo.h; sourceTree = "<group>"; };
                A00B721911DE6427008AB9FF /* CheckedInt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CheckedInt.h; path = canvas/CheckedInt.h; sourceTree = "<group>"; };
+               A0EE0DEF144F823200F80B0D /* WebGLDebugShaders.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLDebugShaders.idl; path = canvas/WebGLDebugShaders.idl; sourceTree = "<group>"; };
+               A0EE0DF0144F824300F80B0D /* WebGLDebugRendererInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebGLDebugRendererInfo.idl; path = canvas/WebGLDebugRendererInfo.idl; sourceTree = "<group>"; };
+               A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDebugRendererInfo.cpp; path = canvas/WebGLDebugRendererInfo.cpp; sourceTree = "<group>"; };
+               A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDebugRendererInfo.h; path = canvas/WebGLDebugRendererInfo.h; sourceTree = "<group>"; };
+               A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLDebugShaders.cpp; path = canvas/WebGLDebugShaders.cpp; sourceTree = "<group>"; };
+               A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLDebugShaders.h; path = canvas/WebGLDebugShaders.h; sourceTree = "<group>"; };
                A120ACA013F9983700FE4AC7 /* LayoutRepainter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutRepainter.h; sourceTree = "<group>"; };
                A120ACA113F9984600FE4AC7 /* LayoutRepainter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutRepainter.cpp; sourceTree = "<group>"; };
                A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestProgressEventThrottle.cpp; sourceTree = "<group>"; };
                49484FAE102CF01E00187DD3 /* canvas */ = {
                        isa = PBXGroup;
                        children = (
+                               A0EE0DF1144F825500F80B0D /* WebGLDebugRendererInfo.cpp */,
+                               A0EE0DF2144F825500F80B0D /* WebGLDebugRendererInfo.h */,
+                               A0EE0DF3144F825500F80B0D /* WebGLDebugShaders.cpp */,
+                               A0EE0DF4144F825500F80B0D /* WebGLDebugShaders.h */,
+                               A0EE0DF0144F824300F80B0D /* WebGLDebugRendererInfo.idl */,
+                               A0EE0DEF144F823200F80B0D /* WebGLDebugShaders.idl */,
                                49EECDCA10503C2300099FAB /* ArrayBuffer.cpp */,
                                49EECDCB10503C2300099FAB /* ArrayBuffer.h */,
                                49EECDCC10503C2300099FAB /* ArrayBuffer.idl */,
                                71CCB49D144824AC00C676D6 /* ImageBySizeCache.h in Headers */,
                                0753860314489E9800B78452 /* CachedCues.h in Headers */,
                                8AA61D00144D595B00F37350 /* CSSRegionStyleRule.h in Headers */,
+                               A0EE0DF6144F825500F80B0D /* WebGLDebugRendererInfo.h in Headers */,
+                               A0EE0DF8144F825500F80B0D /* WebGLDebugShaders.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                71CCB49C144824AC00C676D6 /* ImageBySizeCache.cpp in Sources */,
                                0753860214489E9800B78452 /* CachedCues.cpp in Sources */,
                                8AA61CFF144D595B00F37350 /* CSSRegionStyleRule.cpp in Sources */,
+                               A0EE0DF5144F825500F80B0D /* WebGLDebugRendererInfo.cpp in Sources */,
+                               A0EE0DF7144F825500F80B0D /* WebGLDebugShaders.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index 5489b8a..8b5b11c 100644 (file)
 
 #include "JSWebGLRenderingContext.h"
 
-#include "WebKitLoseContext.h"
 #include "ExceptionCode.h"
+#include "Float32Array.h"
 #include "HTMLCanvasElement.h"
 #include "HTMLImageElement.h"
-#include "JSWebKitLoseContext.h"
+#include "Int32Array.h"
+#include "JSFloat32Array.h"
 #include "JSHTMLCanvasElement.h"
 #include "JSHTMLImageElement.h"
 #include "JSImageData.h"
+#include "JSInt32Array.h"
 #include "JSOESStandardDerivatives.h"
 #include "JSOESTextureFloat.h"
 #include "JSOESVertexArrayObject.h"
-#include "JSWebGLVertexArrayObjectOES.h"
+#include "JSUint8Array.h"
 #include "JSWebGLBuffer.h"
-#include "JSFloat32Array.h"
 #include "JSWebGLFramebuffer.h"
-#include "JSInt32Array.h"
 #include "JSWebGLProgram.h"
 #include "JSWebGLRenderbuffer.h"
 #include "JSWebGLShader.h"
 #include "JSWebGLTexture.h"
 #include "JSWebGLUniformLocation.h"
-#include "JSUint8Array.h"
+#include "JSWebGLVertexArrayObjectOES.h"
 #include "JSWebKitCSSMatrix.h"
+#include "JSWebKitLoseContext.h"
 #include "NotImplemented.h"
 #include "OESStandardDerivatives.h"
 #include "OESTextureFloat.h"
 #include "OESVertexArrayObject.h"
-#include "WebGLVertexArrayObjectOES.h"
 #include "WebGLBuffer.h"
-#include "Float32Array.h"
+#include "WebGLDebugRendererInfo.h"
+#include "WebGLDebugShaders.h"
 #include "WebGLExtension.h"
 #include "WebGLFramebuffer.h"
 #include "WebGLGetInfo.h"
-#include "Int32Array.h"
 #include "WebGLProgram.h"
 #include "WebGLRenderingContext.h"
+#include "WebGLVertexArrayObjectOES.h"
+#include "WebKitLoseContext.h"
 #include <runtime/Error.h>
 #include <runtime/JSArray.h>
 #include <wtf/FastMalloc.h>
@@ -187,6 +189,10 @@ static JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, WebGLExten
         return toJS(exec, globalObject, static_cast<OESTextureFloat*>(extension));
     case WebGLExtension::OESVertexArrayObjectName:
         return toJS(exec, globalObject, static_cast<OESVertexArrayObject*>(extension));
+    case WebGLExtension::WebGLDebugRendererInfoName:
+        return toJS(exec, globalObject, static_cast<WebGLDebugRendererInfo*>(extension));
+    case WebGLExtension::WebGLDebugShadersName:
+        return toJS(exec, globalObject, static_cast<WebGLDebugShaders*>(extension));
     }
     ASSERT_NOT_REACHED();
     return jsNull();
index d9e1fd9..3502152 100644 (file)
@@ -56,6 +56,8 @@
 #include "V8Uint32Array.h"
 #include "V8Uint8Array.h"
 #include "V8WebGLBuffer.h"
+#include "V8WebGLDebugRendererInfo.h"
+#include "V8WebGLDebugShaders.h"
 #include "V8WebGLFramebuffer.h"
 #include "V8WebGLProgram.h"
 #include "V8WebGLRenderbuffer.h"
@@ -182,6 +184,14 @@ static v8::Handle<v8::Value> toV8Object(WebGLExtension* extension, v8::Handle<v8
         extensionObject = toV8(static_cast<OESVertexArrayObject*>(extension));
         referenceName = "oesVertexArrayObjectName";
         break;
+    case WebGLExtension::WebGLDebugRendererInfoName:
+        extensionObject = toV8(static_cast<WebGLDebugRendererInfo*>(extension));
+        referenceName = "webGLDebugRendererInfoName";
+        break;
+    case WebGLExtension::WebGLDebugShadersName:
+        extensionObject = toV8(static_cast<WebGLDebugShaders*>(extension));
+        referenceName = "webGLDebugShadersName";
+        break;
     }
     ASSERT(!extensionObject.IsEmpty());
     V8DOMWrapper::setNamedHiddenReference(contextObject, referenceName, extensionObject);
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp
new file mode 100644 (file)
index 0000000..f5715b6
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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 "WebGLDebugRendererInfo.h"
+
+#include "WebGLRenderingContext.h"
+
+namespace WebCore {
+
+WebGLDebugRendererInfo::WebGLDebugRendererInfo(WebGLRenderingContext* context)
+    : WebGLExtension(context)
+{
+}
+
+WebGLDebugRendererInfo::~WebGLDebugRendererInfo()
+{
+}
+
+WebGLExtension::ExtensionName WebGLDebugRendererInfo::getName() const
+{
+    return WebGLDebugRendererInfoName;
+}
+
+PassOwnPtr<WebGLDebugRendererInfo> WebGLDebugRendererInfo::create(WebGLRenderingContext* context)
+{
+    return adoptPtr(new WebGLDebugRendererInfo(context));
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBGL)
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h
new file mode 100644 (file)
index 0000000..b96c02b
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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.
+ */
+
+#ifndef WebGLDebugRendererInfo_h
+#define WebGLDebugRendererInfo_h
+
+#include "WebGLExtension.h"
+#include <wtf/PassOwnPtr.h>
+
+namespace WebCore {
+
+class WebGLDebugRendererInfo : public WebGLExtension {
+public:
+    enum EnumType {
+        UNMASKED_VENDOR_WEBGL = 0x9245,
+        UNMASKED_RENDERER_WEBGL = 0x9246
+    };
+
+    static PassOwnPtr<WebGLDebugRendererInfo> create(WebGLRenderingContext*);
+
+    virtual ~WebGLDebugRendererInfo();
+    virtual ExtensionName getName() const;
+
+private:
+    WebGLDebugRendererInfo(WebGLRenderingContext*);
+};
+
+} // namespace WebCore
+
+#endif // WebGLDebugRendererInfo_h
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl
new file mode 100644 (file)
index 0000000..da2082a
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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.
+ */
+
+module html {
+    interface [
+        Conditional=WEBGL,
+        GenerateIsReachable=ImplContext,
+        OmitConstructor,
+        DontCheckEnums
+    ] WebGLDebugRendererInfo {
+        const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
+        const unsigned int UNMASKED_RENDERER_WEBGL = 0x9246;
+    };
+}
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.cpp b/Source/WebCore/html/canvas/WebGLDebugShaders.cpp
new file mode 100644 (file)
index 0000000..5d2c317
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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 "WebGLDebugShaders.h"
+
+#include "Extensions3D.h"
+#include "WebGLRenderingContext.h"
+#include "WebGLShader.h"
+
+#include <wtf/OwnArrayPtr.h>
+
+namespace WebCore {
+
+WebGLDebugShaders::WebGLDebugShaders(WebGLRenderingContext* context)
+    : WebGLExtension(context)
+{
+}
+
+WebGLDebugShaders::~WebGLDebugShaders()
+{
+}
+
+WebGLExtension::ExtensionName WebGLDebugShaders::getName() const
+{
+    return WebGLDebugShadersName;
+}
+
+PassOwnPtr<WebGLDebugShaders> WebGLDebugShaders::create(WebGLRenderingContext* context)
+{
+    return adoptPtr(new WebGLDebugShaders(context));
+}
+
+String WebGLDebugShaders::getTranslatedShaderSource(WebGLShader* shader, ExceptionCode& ec)
+{
+    UNUSED_PARAM(ec);
+    if (m_context->isContextLost())
+        return String();
+    if (!m_context->validateWebGLObject(shader))
+        return "";
+    return m_context->graphicsContext3D()->getExtensions()->getTranslatedShaderSourceANGLE(shader->object());
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBGL)
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.h b/Source/WebCore/html/canvas/WebGLDebugShaders.h
new file mode 100644 (file)
index 0000000..ba897f5
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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.
+ */
+
+#ifndef WebGLDebugShaders_h
+#define WebGLDebugShaders_h
+
+#include "ExceptionCode.h"
+#include "WebGLExtension.h"
+#include <wtf/PassOwnPtr.h>
+
+namespace WebCore {
+
+class WebGLShader;
+
+class WebGLDebugShaders : public WebGLExtension {
+public:
+    static PassOwnPtr<WebGLDebugShaders> create(WebGLRenderingContext*);
+
+    virtual ~WebGLDebugShaders();
+    virtual ExtensionName getName() const;
+
+    String getTranslatedShaderSource(WebGLShader*, ExceptionCode&);
+
+private:
+    WebGLDebugShaders(WebGLRenderingContext*);
+};
+
+} // namespace WebCore
+
+#endif // WebGLDebugShaders_h
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.idl b/Source/WebCore/html/canvas/WebGLDebugShaders.idl
new file mode 100644 (file)
index 0000000..ce12032
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2011 Google Inc. 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.
+ */
+
+module html {
+    interface [
+        Conditional=WEBGL,
+        GenerateIsReachable=ImplContext,
+        OmitConstructor
+    ] WebGLDebugShaders {
+        [StrictTypeChecking, ConvertNullStringTo=Null] DOMString getTranslatedShaderSource(in WebGLShader shader) raises(DOMException);
+    };
+}
index 1966367..67d4d47 100644 (file)
@@ -38,6 +38,8 @@ public:
         OESTextureFloatName,
         OESStandardDerivativesName,
         OESVertexArrayObjectName,
+        WebGLDebugRendererInfoName,
+        WebGLDebugShadersName,
     };
 
     void ref() { m_context->ref(); }
index 2fe6ead..a57934c 100644 (file)
@@ -32,7 +32,6 @@
 #include "CachedImage.h"
 #include "CanvasPixelArray.h"
 #include "CheckedInt.h"
-#include "WebKitLoseContext.h"
 #include "Console.h"
 #include "DOMWindow.h"
 #include "Extensions3D.h"
 #include "WebGLBuffer.h"
 #include "WebGLContextAttributes.h"
 #include "WebGLContextEvent.h"
+#include "WebGLDebugRendererInfo.h"
+#include "WebGLDebugShaders.h"
 #include "WebGLFramebuffer.h"
 #include "WebGLProgram.h"
 #include "WebGLRenderbuffer.h"
 #include "WebGLShader.h"
 #include "WebGLTexture.h"
 #include "WebGLUniformLocation.h"
+#include "WebKitLoseContext.h"
 
 #include <wtf/ByteArray.h>
 #include <wtf/OwnArrayPtr.h>
@@ -473,6 +475,12 @@ void WebGLRenderingContext::setupFlags()
     }
 }
 
+bool WebGLRenderingContext::allowPrivilegedExtensions() const
+{
+    // FIXME: implement this function.
+    return false;
+}
+
 WebGLRenderingContext::~WebGLRenderingContext()
 {
     detachAndRemoveAllObjects();
@@ -2000,6 +2008,20 @@ WebGLExtension* WebGLRenderingContext::getExtension(const String& name)
         return m_webkitLoseContext.get();
     }
 
+    if (allowPrivilegedExtensions()) {
+        if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
+            if (!m_webglDebugRendererInfo)
+                m_webglDebugRendererInfo = WebGLDebugRendererInfo::create(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 = WebGLDebugShaders::create(this);
+            return m_webglDebugShaders.get();
+        }
+    }
+
     return 0;
 }
 
@@ -2245,6 +2267,16 @@ WebGLGetInfo WebGLRenderingContext::getParameter(GC3Denum pname, ExceptionCode&
             return getUnsignedIntParameter(Extensions3D::FRAGMENT_SHADER_DERIVATIVE_HINT_OES);
         m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM);
         return WebGLGetInfo();
+    case WebGLDebugRendererInfo::UNMASKED_RENDERER_WEBGL:
+        if (m_webglDebugRendererInfo)
+            return WebGLGetInfo(m_context->getString(GraphicsContext3D::RENDERER));
+        m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM);
+        return WebGLGetInfo();
+    case WebGLDebugRendererInfo::UNMASKED_VENDOR_WEBGL:
+        if (m_webglDebugRendererInfo)
+            return WebGLGetInfo(m_context->getString(GraphicsContext3D::VENDOR));
+        m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM);
+        return WebGLGetInfo();
     case Extensions3D::VERTEX_ARRAY_BINDING_OES: // OES_vertex_array_object
         if (m_oesVertexArrayObject) {
             if (!m_boundVertexArrayObject->isDefaultObject())
@@ -2417,6 +2449,13 @@ Vector<String> WebGLRenderingContext::getSupportedExtensions()
     if (m_context->getExtensions()->supports("GL_OES_vertex_array_object"))
         result.append("OES_vertex_array_object");
     result.append("WEBKIT_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");
+    }
+
     return result;
 }
 
index 9c4774e..e9b1a00 100644 (file)
 
 namespace WebCore {
 
+class HTMLImageElement;
+class HTMLVideoElement;
+class ImageBuffer;
+class ImageData;
+class IntSize;
+class OESStandardDerivatives;
+class OESTextureFloat;
+class OESVertexArrayObject;
 class WebGLActiveInfo;
 class WebGLBuffer;
 class WebGLContextAttributes;
+class WebGLDebugRendererInfo;
+class WebGLDebugShaders;
 class WebGLExtension;
 class WebGLFramebuffer;
 class WebGLObject;
@@ -51,16 +61,8 @@ class WebGLRenderbuffer;
 class WebGLShader;
 class WebGLTexture;
 class WebGLUniformLocation;
-class WebKitLoseContext;
-class HTMLImageElement;
-class HTMLVideoElement;
-class ImageBuffer;
-class ImageData;
-class IntSize;
-class OESStandardDerivatives;
-class OESTextureFloat;
-class OESVertexArrayObject;
 class WebGLVertexArrayObjectOES;
+class WebKitLoseContext;
 
 class WebGLRenderingContext : public CanvasRenderingContext {
 public:
@@ -306,6 +308,7 @@ public:
   private:
     friend class WebGLObject;
     friend class OESVertexArrayObject;
+    friend class WebGLDebugShaders;
 
     WebGLRenderingContext(HTMLCanvasElement*, PassRefPtr<GraphicsContext3D>, GraphicsContext3D::Attributes);
     void initializeNewContext();
@@ -474,6 +477,8 @@ public:
     OwnPtr<OESStandardDerivatives> m_oesStandardDerivatives;
     OwnPtr<OESVertexArrayObject> m_oesVertexArrayObject;
     OwnPtr<WebKitLoseContext> m_webkitLoseContext;
+    OwnPtr<WebGLDebugRendererInfo> m_webglDebugRendererInfo;
+    OwnPtr<WebGLDebugShaders> m_webglDebugShaders;
 
     // Helpers for getParameter and others
     WebGLGetInfo getBooleanParameter(GC3Denum);
@@ -622,6 +627,10 @@ public:
     // Helper for restoration after context lost.
     void maybeRestoreContext(LostContextMode);
 
+    // Determine if we are running privileged code in the browser, for example,
+    // a Safari or Chrome extension.
+    bool allowPrivilegedExtensions() const;
+
     friend class WebGLStateRestorer;
 };
 
index 175263e..5c04e38 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -56,6 +56,7 @@ public:
     //   GL_OES_standard_derivatives
     //   GL_OES_rgb8_rgba8
     //   GL_OES_vertex_array_object
+    //   GL_ANGLE_translated_shader_source
 
     // Takes full name of extension; for example,
     // "GL_EXT_texture_format_BGRA8888".
@@ -103,6 +104,9 @@ public:
         
         // GL_OES_vertex_array_object names
         VERTEX_ARRAY_BINDING_OES = 0x85B5,
+
+        // GL_ANGLE_translated_shader_source
+        TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0,
     };
 
     // GL_ARB_robustness
@@ -125,6 +129,9 @@ public:
     virtual void deleteVertexArrayOES(Platform3DObject) = 0;
     virtual GC3Dboolean isVertexArrayOES(Platform3DObject) = 0;
     virtual void bindVertexArrayOES(Platform3DObject) = 0;
+
+    // GL_ANGLE_translated_shader_source
+    virtual String getTranslatedShaderSourceANGLE(Platform3DObject) = 0;
 };
 
 } // namespace WebCore
index ad73336..303ff8d 100644 (file)
@@ -44,6 +44,7 @@ typedef float GC3Dfloat;
 typedef float GC3Dclampf;
 typedef signed long int GC3Dintptr;
 typedef signed long int GC3Dsizeiptr;
+typedef char GC3Dchar;
 
 typedef GC3Duint Platform3DObject;
 
index 49ab471..6ab0828 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -56,6 +56,7 @@ public:
     virtual void deleteVertexArrayOES(Platform3DObject);
     virtual GC3Dboolean isVertexArrayOES(Platform3DObject);
     virtual void bindVertexArrayOES(Platform3DObject);
+    virtual String getTranslatedShaderSourceANGLE(Platform3DObject);
 
     enum {
         // GL_CHROMIUM_map_sub (enums inherited from GL_ARB_vertex_buffer_object)
index ce75936..73320d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -193,6 +193,13 @@ void Extensions3DOpenGL::bindVertexArrayOES(Platform3DObject array)
 #endif
 }
 
+String Extensions3DOpenGL::getTranslatedShaderSourceANGLE(Platform3DObject shader)
+{
+    UNUSED_PARAM(shader);
+    return "";
+    // FIXME: implement this function and add GL_ANGLE_translated_shader_source in supports().
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(WEBGL)
index e545fbc..55a3cd8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -50,6 +50,7 @@ public:
     virtual void deleteVertexArrayOES(Platform3DObject);
     virtual GC3Dboolean isVertexArrayOES(Platform3DObject);
     virtual void bindVertexArrayOES(Platform3DObject);
+    virtual String getTranslatedShaderSourceANGLE(Platform3DObject);
 
 private:
     // This class only needs to be instantiated by GraphicsContext3D implementations.
index 45d5e9c..be78601 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -88,6 +88,11 @@ void Extensions3DQt::bindVertexArrayOES(Platform3DObject)
 {
 }
 
+String Extensions3DQt::getTranslatedShaderSourceANGLE(Platform3DObject shader)
+{
+    return "";
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(WEBGL)
index 1bc47b8..2664003 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -45,6 +45,7 @@ public:
     virtual void deleteVertexArrayOES(Platform3DObject);
     virtual GC3Dboolean isVertexArrayOES(Platform3DObject);
     virtual void bindVertexArrayOES(Platform3DObject);
+    virtual String getTranslatedShaderSourceANGLE(Platform3DObject);
 
 private:
     // This class only needs to be instantiated by GraphicsContext3D implementations.
index deec72b..2e5acf4 100644 (file)
@@ -1,3 +1,17 @@
+2011-10-19  Zhenyao Mo  <zmo@google.com>
+
+        Implement WEBGL_debug_shaders and WEBGL_debug_renderer_info extensions
+        https://bugs.webkit.org/show_bug.cgi?id=70077
+
+        Reviewed by Kenneth Russell.
+
+        * public/WebGraphicsContext3D.h: Added support for getTranslatedShaderSourceANGLE.
+        (WebKit::WebGraphicsContext3D::getTranslatedShaderSourceANGLE):
+        * src/Extensions3DChromium.cpp: Ditto.
+        (WebCore::Extensions3DChromium::getTranslatedShaderSourceANGLE):
+        * src/GraphicsContext3DChromium.cpp: Ditto.
+        * src/GraphicsContext3DPrivate.h: Ditto.
+
 2011-10-19  Dirk Pranke  <dpranke@chromium.org>
 
         Unreviewed, rolling out r97850.
index 062d23a..7ed80c3 100644 (file)
@@ -365,6 +365,10 @@ public:
     // state is sticky, rather than reported only once.
     virtual WGC3Denum getGraphicsResetStatusARB() { return 0; /* GL_NO_ERROR */ }
 
+    // FIXME: make this function pure virtual once it is implemented in
+    // both command buffer port and in-process port.
+    virtual WebString getTranslatedShaderSourceANGLE(WebGLId shader) { return WebString(); }
+
 #if WEBKIT_USING_SKIA
     GrGLInterface* createGrGLInterface();
 #endif
index 9c8b2b0..0e919af 100644 (file)
@@ -115,6 +115,11 @@ void Extensions3DChromium::bindVertexArrayOES(Platform3DObject)
 {
 }
 
+String Extensions3DChromium::getTranslatedShaderSourceANGLE(Platform3DObject shader)
+{
+    return m_private->getTranslatedShaderSourceANGLE(shader);
+}
+
 void Extensions3DChromium::setSwapBuffersCompleteCallbackCHROMIUM(PassOwnPtr<SwapBuffersCompleteCallbackCHROMIUM> callback)
 {
     m_private->setSwapBuffersCompleteCallbackCHROMIUM(callback);
index 633968c..3f520aa 100644 (file)
@@ -887,6 +887,8 @@ DELEGATE_TO_IMPL_5(renderbufferStorageMultisampleCHROMIUM, GC3Denum, GC3Dsizei,
 DELEGATE_TO_IMPL(rateLimitOffscreenContextCHROMIUM)
 DELEGATE_TO_IMPL_R(getGraphicsResetStatusARB, GC3Denum)
 
+DELEGATE_TO_IMPL_1R(getTranslatedShaderSourceANGLE, Platform3DObject, String)
+
 //----------------------------------------------------------------------
 // GraphicsContext3D
 //
index d12304d..8d9f2ea 100644 (file)
@@ -303,6 +303,9 @@ public:
     // GL_ARB_robustness
     GC3Denum getGraphicsResetStatusARB();
 
+    // GL_ANGLE_translated_shader_source
+    String getTranslatedShaderSourceANGLE(Platform3DObject shader);
+
 private:
     GraphicsContext3DPrivate(WebKit::WebViewImpl*, PassOwnPtr<WebKit::WebGraphicsContext3D>, GraphicsContext3D::Attributes);