Closed Bug 1109708 Opened 10 years ago Closed 9 years ago

WegGL not displaying on FF34 with older hardware

Categories

(Core :: Graphics: CanvasWebGL, defect)

34 Branch
x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: lukebenes, Unassigned)

References

Details

(Whiteboard: gfx-noted)

User Agent: Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0 Build ID: 20141126041045 Steps to reproduce: Go to any WebGL game or demo like http://get.webgl.org/ or http://people.mozilla.org/~eakhgari/es2gears.html Actual results: Page will load and FPS counter will run, but no WebGL content is displayed Expected results: WebGL content should be displayed like FF32 and earlier. I have had no issue running WebGL demos and playinig WebGL games on this computer since FF4. It completely stopped working in FF33 ( Bug 1085153 ). And is now working but not displaying in FF34. Adapter Description ATI MOBILITY RADEON X1400 Adapter Drivers atiumdag atiumdva atitmmxx Adapter RAM Unknown Device ID 0x7145 Direct2D Enabled Blocked for your graphics driver version. Try updating your graphics driver to version 10.6 or newer. DirectWrite Enabled false (6.2.9200.16571) Driver Date 2-10-2010 Driver Version 8.593.100.0 GPU #2 Active false GPU Accelerated Windows 0/3 Basic (OMTC) Blocked for your graphics driver version. Try updating your graphics driver to version 10.6 or newer. Subsys ID 20031028 Vendor ID 0x1002 WebGL Renderer Google Inc. -- ANGLE (ATI MOBILITY RADEON X1400 Direct3D9Ex vs_3_0 ps_3_0) windowLayerManagerRemote true AzureCanvasBackend skia AzureContentBackend cairo AzureFallbackCanvasBackend cairo AzureSkiaAccelerated 0 Important Modified Preferences webgl.force-enabled true
Component: Untriaged → Canvas: WebGL
Product: Firefox → Core
Tested with nightly: 37.0a1 (2014-12-27) and the WegGL canvas is still blank on most apps. Examples of apps that work FF32 but are broken on FF33+ http://kripken.github.io/box2d.js/webgl_demo/box2d.html?500 http://www.esenthel.com/ https://developer.mozilla.org/en-US/demos/detail/bananabread http://kripken.github.io/ammo.js/examples/new/ammo.html With 37.01a very simple demos like http://people.mozilla.org/~eakhgari/es2gears.html and https://get.webgl.org/ are working, so progress is being made over FF34.
Tested again with 37.0a1 (2015-01-06). Same issues with complex scenes. They are black and/or missing objects. In addition to the 4 demos above, these also do not work with FF33-FF37 under Win7. http://www.spacegoo.com/wingsuit/ http://alteredqualia.com/three/examples/webgl_materials_skin.html Note all of these 6 demos worked in FF <= 32, IE 11 and Chrome 41.
Do things work if you disable OMTC? ie. set layers.offmainthreadcomposition.enabled to false?
Also, if you could get a regression window for the change from "not working" to "now working but not displaying" that would be very valuable. Here are the instructions: http://mozilla.github.io/mozregression/
Jeff Muizelaar, Thanks for looking into this. I tested both FF 35.0 and 38.0a1(2015-01-19) on Win 7 laptop with X1300. Toggling layers.offmainthreadcomposition.enabled = false resulted in no change. No complex WebGL apps rendered correctly including the 6 examples listed above. I quickly checked my XP desktop with FF 35 and toggling layers.offmainthreadcomposition.enabled did not help that machine either. When I boot to Ubuntu, WebGL continues to work fine on FF35, so this is likely an ANGLE issue. I first noticed this issue with FF 33 see Bug 1085153. Chrome at the time also stopped working. So I checked Chrome Canary and it was giving a black screen just like FF is now. But I just checked and all of the demos above are now working fine in Chrome 42.0.2280.2 canary. Chrome Canary reports ANGLE commit id 2a30ccefd0c4. Unless 38.0a1(2015-01-19) is running that version of ANGLE or a more recent one, I think that is the source of this problem. If you think it's something else, I can still run mozregression/.
Running mozregression will still be useful in confirming the issue even if it is ANGLE.
OK, I ran a mozregression using the following input: Error, WebGLis unavailable Error Same as Bug 1085153 -> Good No Error, Blank/Black WebGl canvas -> Bad When I finished here were the results: LOG: MainThread Bisector INFO Narrowed nightly regression window from [ 2014-08-28, 2014-08-30] (2 days) to [2014-08-28, 2014-08-29] (1 days) (~0 steps left) LOG: MainThread Bisector INFO Got as far as we can go bisecting nightli es... LOG: MainThread Bisector INFO Last good revision: 3be45b58fc47 LOG: MainThread Bisector INFO First bad revision: d697d649c765 LOG: MainThread Bisector INFO Pushlog: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=3be45b58fc47&tocha nge=d697d649c765 The last good commit gave an error message and the first bad commit displayed a blank openGL canvas. Could this the the commit that stopped the error message? Jeff Gilbert — Bug 996266 - Fall back from failed WebGL context creation attribs. - r=kamidphish,bjacob The initial cause of WebGL to stop working in FF33 was a bump in ANGLE version, correct?
Jeff G, can you check which aspects Jeff M is covering, and lets split up the work and get this handled, angle problem or not...
Flags: needinfo?(jgilbert)
This is multi-monitor system? I assume things are still bad with a single display?
@Milan Sreckovic Both my Radeon X800 XP Desktop and my X1300 Win 7 laptop have a single display. These demos all work fine on FF <=32 and Chrome Canary.
Sorry, Luke, my bad. I mixed the windows and displays.
:jrmuizel Is there any additional data like console msgs or debug info that I can give you guys to help determine why WebGL is broken on FF32+? http://codepen.io/anon/pen/XJMQwV Seems like a simple test case. Also Chrome passes all of the following 1.0.2 WebGL Conformance test, but FF fails with older hardware: conformance/context/context-attributes-alpha-depth-stencil-antialias.html (96 of 101 passed) failed: gl.getParameter(gl.DEPTH_BITS) >= 16 should be true. Was false. failed: gl.getParameter(gl.STENCIL_BITS) >= 8 should be true. Was false. failed: gl.getParameter(gl.DEPTH_BITS) >= 16 should be true. Was false. failed: gl.getParameter(gl.STENCIL_BITS) >= 8 should be true. Was false. failed: gl.getParameter(gl.DEPTH_BITS) >= 16 should be true. Was false. Bug 1024151 only resolved this issue on newer hardware. Could it be causing the black screen? conformance/renderbuffers/framebuffer-object-attachment.html (454 of 481 passed) failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) returned 36054 failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: should be green failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. failed: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : failed: should be green failed: getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : conformance/renderbuffers/framebuffer-state-restoration.html (15 of 19 passed) failed: should still be green failed: should still be green failed: should still be green failed: should still be green conformance/state/gl-object-get-calls.html (100 of 101 passed) failed: gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36054. conformance/textures/copy-tex-image-2d-formats.html (39 of 51 passed) failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE from RGBA failed: should be 64,64,64,255 failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE_ALPHA from RGBA failed: should be 64,64,64,127 failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE from RGB failed: should be 64,64,64,255 failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE from RGBA failed: should be 64,64,64,255 failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE_ALPHA from RGBA failed: should be 64,64,64,127 failed: getError expected: NO_ERROR. Was OUT_OF_MEMORY : should be able to copyTexImage2D LUMINANCE from RGB failed: should be 64,64,64,255 Any of these failures hint at what's going on?
I'll try to look into this next week.
Flags: needinfo?(jmuizelaar)
Whiteboard: gfx-noted
Can you post your about:support from FF32? I assume the above about:support information is from FF33?
Flags: needinfo?(lukebenes)
Adapter Description ATI MOBILITY RADEON X1400 Adapter Drivers atiumdag atiumdva atitmmxx Adapter RAM Unknown Device ID 0x7145 Direct2D Enabled Blocked for your graphics driver version. Try updating your graphics driver to version 9.6 or newer. DirectWrite Enabled false (6.2.9200.16571) Driver Date 2-10-2010 Driver Version 8.593.100.0 GPU #2 Active false GPU Accelerated Windows 0/3 Basic (OMTC) Blocked for your graphics driver version. Try updating your graphics driver to version 9.6 or newer. Subsys ID 20031028 Vendor ID 0x1002 WebGL Renderer Google Inc. -- ANGLE (ATI MOBILITY RADEON X1400 Direct3D9Ex vs_3_0 ps_3_0) windowLayerManagerRemote true AzureCanvasBackend skia AzureContentBackend cairo AzureFallbackCanvasBackend cairo AzureSkiaAccelerated 0 So quick recap. WebGL worked FF 4-32. In FF 33 and chrome 40 -> "WebGL it is disabled or unavailable" Chrome 41 WEbGL worked as before, but FF gives a black screen with the ANGLE backend.
Flags: needinfo?(lukebenes)
I'm not going to get a chance to look at this more this week as we had some emergency work to do for FF37
Flags: needinfo?(jmuizelaar)
:jrmuizel OK, no rush. Looking through the bug tracker, I think I found where the issue was reported and fixed for Chrome's ANGLE. https://code.google.com/p/chromium/issues/detail?id=412221 This was fixed by by removing fallback format support for D3D9 texture formats a chrome dev with ATI hardware reported these errors in chrome: [300:4944:1009/035140:ERROR:gles2_cmd_decoder.cc(3666)] : GLES2DecoderImpl::ResizeOffscreenFrameBuffer failed because offscreen FBO was incomplete. [300:4944:1009/035140:ERROR:gles2_cmd_decoder.cc(2591)] : Could not allocate offscreen buffer storage. This jives with the buffer and texture webgl conformance tests that fail on ATI hardware. Are there plans to sync with upstream ANGLE instead of just cherry picking patches?
I took a look at the web console log. The errors match the issue the framebuffer issue Chrome devs fixed in ANGLE: all the three.js demos: Error: WebGL: clear: incomplete framebuffer three.js:17970:2 Error: WebGL: drawElements: incomplete framebuffer three.js:20415:4 Error: WebGL: readPixels: incomplete framebuffer http://www.esenthel.com/ Error: WebGL: renderbufferStorage: `internalFormat`: Invalid enum: 0x81a6 (DEPTH_COMPONENT24). Application.js:14020:52 Error: WebGL: renderbufferStorage: `internalFormat`: Invalid enum: 0x81a7 (DEPTH_COMPONENT32). Application.js:14020:52 Error: WebGL: clear: incomplete framebuffer Are there plans to synchronize the ANGLE code base, or could we cherry pick the related patches for https://code.google.com/p/chromium/issues/detail?id=412221 ?
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(jmuizelaar)
Depends on: 1179280
(In reply to Luke from comment #19) > :jrmuizel > OK, no rush. Looking through the bug tracker, I think I found where the > issue was reported and fixed for Chrome's ANGLE. > https://code.google.com/p/chromium/issues/detail?id=412221 > This was fixed by by removing fallback format support for D3D9 texture > formats > > a chrome dev with ATI hardware reported these errors in chrome: > [300:4944:1009/035140:ERROR:gles2_cmd_decoder.cc(3666)] : > GLES2DecoderImpl::ResizeOffscreenFrameBuffer failed because offscreen FBO > was incomplete. > [300:4944:1009/035140:ERROR:gles2_cmd_decoder.cc(2591)] : Could not allocate > offscreen buffer storage. > > This jives with the buffer and texture webgl conformance tests that fail on > ATI hardware. > > Are there plans to sync with upstream ANGLE instead of just cherry picking > patches? If this is the case, we probably have the fix for this from our more recent ANGLE updates. Please retest?
Flags: needinfo?(lukebenes)
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(jgilbert)
:jgilbert] I'm happy to report that all of the simple tests such as: http://codepen.io/anon/pen/XJMQwV http://jsfiddle.net/f17Lz5ux/1316/ http://www.goodboydigital.com/pixijs/examples/25/ along with the bananabread demo Are working again now along with the webgl conformance tests that failed with framebuffer errors Unfortunately, now http://www.esenthel.com and all of the three.js demos stopped working with new issues. These demos are still working fine in Chrome, so hopefully this will be fixed in the next angle update.
Flags: needinfo?(lukebenes)
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
(In reply to Luke from comment #22) > ... > > Unfortunately, now http://www.esenthel.com and all of the three.js demos > stopped working with new issues. > > These demos are still working fine in Chrome, so hopefully this will be > fixed in the next angle update. Any chance you could open a Core/Canvas: WebGL bug for this? I want to make sure we don't miss it, while we're chasing a few other three.js related problems (just make sure there is three.js in the description.) Thanks!
You need to log in before you can comment on or make changes to this bug.