ID:2083880
 
Resolved
BYOND Version:510.1342
Operating System:Windows 10 Home 64-bit
Web Browser:Chrome 50.0.2661.102
Applies to:Webclient
Status: Resolved

This issue has been resolved.
Descriptive Problem Summary:

Since updating to the latest version of Chrome everything I play in the web-client flickers in any WebGL rendering mode. This is noticeable in MLAAS immediately. The console is spitting out the following errors.

[.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
626280263:1 XMLHttpRequest cannot load http://www.mylifeasaspy.com/query. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.byond.com' is therefore not allowed access.
ext.js:7870 Uncaught TypeError: this.midiAccess.outputs is not a function
webclient.dart.js:33219 StageXL render engine : RenderEngine.Canvas2D
webclient.dart.js:33219 StageXL render engine : RenderEngine.WebGL
2play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
play:1 [.CommandBufferContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
play:1 [.CommandBufferContext]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.


I've never seen it say anything about trying to access mylifeasaspy.com/query before either.

Numbered Steps to Reproduce Problem:

1) Update to Chrome 50.0.2661.102
2) Login to http://www.byond.com/play/626280263
3) Flicker flicker.

Code Snippet (if applicable) to Reproduce Problem:


Expected Results:

Rendering to work.

Actual Results:

Screen flickering.

Does the problem occur:
Every time? Or how often? Every time.
In other games? Everything I've tried that's got web-client enabled.
In other user accounts? Yes
On other computers? Unknown

When does the problem NOT occur?

Wasn't happening before the latest Chrome update installed, MLAAS was running 1340 before that so I figured it might be on my end, so I updated and nothing changed.

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)

I presume it's fine in whatever the previous version of Chrome was, but they don't make it easy to downgrade this thing to find out.

Workarounds:

Assuming downgrading would work, if I could figure out how to downgrade Chrome.
(That '2' before some of the errors came from the console and isn't part of the error)
Probably related to this: http://www.byond.com/forum/?post=2060684 which is still an issue for us.
Has nothing to do with that, or flick(). The display is literally flickering black.
That does seem to be the same problem. I'm not sure if it's the same cause though since prior to updating Chrome last night I was running the same game in the web-client with no issue.

Seems it's something in the latest Chrome update, but I wouldn't even know where to begin debugging that without Lummox's input.
The WebGL errors are meaningless unless they're ongoing; they tend to appear early on as the map is being setup, and not after.

I don't understand the flickering, though. It only happens to some users and for no explainable reason. The code internally should be waiting for an animation frame to do any drawing. I also have never been able to reproduce the issue.

I also don't understand why the /query URL doesn't have the correct headers, because the code is explicitly setting Access-Control-Allow-Origin. This suggests you may have some filtering going on that's causing a problem--or, that the wrong URL is being requested, and your server is sending back a 404.
The WebGL errors happen when I change the rendering mode as well but I imagine with the same explanation. I did notice that the last few I posted above didn't spit out until I did something that caused the map to refresh (movement).

As for the /query URL, I don't know why it's trying to access that URL at all, there's nothing on my end that loads from the website outside of trying to load the main website up using link() on Login(), but that's not pointing at a specific page or anything just the main index.
If I could downgrade Chrome (it's seemingly impossible without breaking a ton of things) to see exactly where the problem started it would probably help narrow things down, I only know it worked last week without any issues (or WebGL errors), and stopped this week after I let Chrome restart for an update.
Update on this, it's only turfs flickering, not mobs and objs.

This version of MLAAS has no planes or anything in play.

The turfs are simply not visible until I move my mouse around, even outside of the webclient canvas.

Here's a thought: Is there anything different about the turfs, like a different plane, that might explain any of this?

It'd probably help if you could get me source to test. I know the simple test case for the same flickering issue reported a while back never worked for me, but maybe this one will.
That version is compiled well before the plane stuff was introduced, the version of the source I have now makes use of it for lighting, I'll probably test that out this week sometime to see if the issue is still there in the latest compile or not. I don't think I have a copy of the source from that version handy at the moment.
Is it likely that our chrome is behaving differently due to our computers, would there be a way to check that?

I don't think it has to do with planes at all since this problem occurs even on 509.
I recall not having flickers on that very same version yet months later they are suddenly there.

Is there any sort of information I could provide from chrome that would help?
This seems related to the unexplained problem I was having before trying to use the web-client. I always get a "WebGL has hit a snag" message, and some errors too (some of those look familiar in the OP), and the game never loads up.

However, this only happens in Chrome; I can use the web-client fine with any project in IE (which is the only one I've tested so far).

I just tested in Firefox and it also loads fine. I still get errors though but at least it's playable. Would love for Chrome to work though since it's the most popular browser [last I checked] and my personal favorite.
All better in the latest Chrome update.
Same for me. No more flickers.
Lummox JR resolved issue