Bug 60896

Summary: [chromium] FRAMEBUFFER_INCOMPLETE_ATTACHMENT with DrawingBuffer
Product: WebKit Reporter: Marshall Greenblatt <magreenblatt>
Component: WebGLAssignee: Nobody <webkit-unassigned>
Status: RESOLVED WORKSFORME    
Severity: Normal CC: kbr, schenney, senorblanco
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows 7   

Description Marshall Greenblatt 2011-05-16 09:38:20 PDT
I'm using WebGraphicsContext3DInProcessImpl in a single-process application with kGLImplementationDesktopGL, Chromium revision 85124 and WebKit revision 86433 (Windows 7 64bit, NVIDIA GeForce GTX 260 Driver Date: 4/3/2010 Version: 8.17.11.9745). I'm currently getting a return value of FRAMEBUFFER_INCOMPLETE_ATTACHMENT from the call to checkFramebufferStatus in third_party/WebKit/Source/WebCore/platform/graphics/gpu/DrawingBuffer.cpp on line 254. This problem occurs with the following accelerated 2D canvas example:

http://mudcu.be/labs/JS1k/BreathingGalaxies.html

Here's the partial call stack:

>    libcef.dll!WebCore::DrawingBuffer::reset(const WebCore::IntSize & newSize={...})  Line 255    C++
     libcef.dll!WebCore::DrawingBuffer::DrawingBuffer(WebCore::GraphicsContext3D * context=0x04a47298, const WebCore::IntSize & size={...}, bool multisampleExtensionSupported=false, bool packedDepthStencilExtensionSupported=false)  Line 103    C++
     libcef.dll!WebCore::DrawingBuffer::create(WebCore::GraphicsContext3D * context=0x04a47298, const WebCore::IntSize & size={...})  Line 53 + 0x2d bytes    C++
     libcef.dll!WebCore::GraphicsContext3D::createDrawingBuffer(const WebCore::IntSize & size={...})  Line 62 + 0x11 bytes    C++
     libcef.dll!WebCore::CanvasRenderingContext2D::CanvasRenderingContext2D(WebCore::HTMLCanvasElement * canvas=0x004e95d0, bool usesCSSCompatibilityParseMode=false, bool usesDashboardCompatibilityMode=false)  Line 140 + 0x3b bytes    C++
     libcef.dll!WebCore::CanvasRenderingContext2D::create(WebCore::HTMLCanvasElement * canvas=0x004e95d0, bool usesCSSCompatibilityParseMode=false, bool usesDashboardCompatibilityMode=false)  Line 68 + 0x2c bytes    C++
     libcef.dll!WebCore::HTMLCanvasElement::getContext(const WTF::String & type={...}, WebCore::CanvasContextAttributes * attrs=0x00000000)  Line 167 + 0x25 bytes    C++
     libcef.dll!WebCore::V8HTMLCanvasElement::getContextCallback(const v8::Arguments & args={...})  Line 85 + 0x15 bytes    C++
     libcef.dll!v8::internal::HandleApiCallHelper<0>(v8::internal::`anonymous-namespace'::BuiltinArguments<1> args={...}, v8::internal::Isolate * isolate=0x00235f70)  Line 1126 + 0x13 bytes    C++

Both WebGL and accelerated 3D CSS are working correctly at Chromium revision 85124 (they don't appear to use the DrawingBuffer class). Accelerated 2D canvas was working correctly back in Chromium revision 80310.

This problem does not occur with the kGLImplementationEGLGLES2 GL implementation.