Skip to content
  • zmo@google.com's avatar
    EXT_draw_buffers needs implementation · 3cefcece
    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