-
zmo@google.com authored
https://bugs.webkit.org/show_bug.cgi?id=109331 Reviewed by Kenneth Russell. Source/Platform: Add EXT_draw_buffers support for chromium port. * chromium/public/WebGraphicsContext3D.h: (WebGraphicsContext3D): (WebKit::WebGraphicsContext3D::drawBuffersEXT): Source/WebCore: This patch adds support for EXT_draw_buffers for WebGL. mac OpenGL port is passing khronos WebGL conformance test with this patch. OpenGL ES port implementation isn't added in this patch. Also, it has the WebKit side support for chromium port, but pending command buffer implementation. Besides the basic extension implementation, we also added drawBuffers() wrapper to work around a mac driver bug: i.e., do not enable a buffer if there is no attachment added. * CMakeLists.txt: * DerivedSources.make: * DerivedSources.pri: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSWebGLRenderingContextCustom.cpp: (WebCore::toJS): * bindings/v8/V8Binding.h: (WebCore): (WebCore::toInt32): (WebCore::toUInt32): (WebCore::toFloat): (WebCore::toInt64): * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp: (WebCore::toV8Object): * html/canvas/EXTDrawBuffers.cpp: Added. (WebCore): (WebCore::EXTDrawBuffers::EXTDrawBuffers): (WebCore::EXTDrawBuffers::~EXTDrawBuffers): (WebCore::EXTDrawBuffers::getName): (WebCore::EXTDrawBuffers::create): (WebCore::EXTDrawBuffers::supported): (WebCore::EXTDrawBuffers::drawBuffersEXT): * html/canvas/EXTDrawBuffers.h: Added. (WebCore): (EXTDrawBuffers): * html/canvas/EXTDrawBuffers.idl: Added. * html/canvas/WebGLExtension.h: * html/canvas/WebGLFramebuffer.cpp: (WebCore::WebGLFramebuffer::setAttachmentForBoundFramebuffer): (WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer): (WebCore::WebGLFramebuffer::drawBuffers): (WebCore): (WebCore::WebGLFramebuffer::drawBuffersIfNecessary): * html/canvas/WebGLFramebuffer.h: (WebGLFramebuffer): * html/canvas/WebGLRenderingContext.cpp: (WebCore): (WebCore::WebGLRenderingContext::initializeNewContext): (WebCore::WebGLRenderingContext::framebufferRenderbuffer): (WebCore::WebGLRenderingContext::getExtension): (WebCore::WebGLRenderingContext::getParameter): (WebCore::WebGLRenderingContext::getSupportedExtensions): (WebCore::WebGLRenderingContext::validateFramebufferFuncParameters): (WebCore::WebGLRenderingContext::getMaxDrawBuffers): (WebCore::WebGLRenderingContext::getMaxColorAttachments): * html/canvas/WebGLRenderingContext.h: (WebCore): (WebGLRenderingContext): * platform/chromium/support/Extensions3DChromium.cpp: (WebCore::Extensions3DChromium::drawBuffersEXT): (WebCore): * platform/graphics/Extensions3D.h: (Extensions3D): * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::getClearBitsByAttachmentType): * platform/graphics/chromium/Extensions3DChromium.h: (Extensions3DChromium): * platform/graphics/opengl/Extensions3DOpenGL.cpp: (WebCore::Extensions3DOpenGL::supportsExtension): (WebCore::Extensions3DOpenGL::drawBuffersEXT): (WebCore): * platform/graphics/opengl/Extensions3DOpenGL.h: (Extensions3DOpenGL): * platform/graphics/opengl/Extensions3DOpenGLCommon.cpp: (WebCore::Extensions3DOpenGLCommon::ensureEnabled): * platform/graphics/opengl/Extensions3DOpenGLCommon.h: (Extensions3DOpenGLCommon): * platform/graphics/opengl/Extensions3DOpenGLES.cpp: (WebCore::Extensions3DOpenGLES::drawBuffersEXT): (WebCore): (WebCore::Extensions3DOpenGLES::supportsExtension): * platform/graphics/opengl/Extensions3DOpenGLES.h: (Extensions3DOpenGLES): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144358 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3cefcece