Closed Bug 1072140 Opened 10 years ago Closed 10 years ago

glDrawArrays() call on fbo leaves un-drawn gaps (and may draw past end-of-buffer)

Categories

(Firefox OS Graveyard :: General, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: cjones, Unassigned)

References

Details

Attachments

(1 file)

Attached image Layerscope dump
See the attached screenshot. This is a layerscope dump of a dead-simple page with some text on top of a background gradient. So gecko is using one intermediate surface for the page. Layerscope shows a distinctive pattern of banding on all the tiles. This is somewhat reminiscent of the distorition in bug 1072138, so possibly related. (However, I don't 100% trust the display of layerscope here --- I'm not sure where in the pipeline this corruption could be happening. So first thing to do is verify layerscope.)
I should add that the pattern of pink lines isn't entirely static --- sometimes more or fewer pink regions spring into or out of existence. (And yes, that screams "cache coherency" again.)
The pink in the readback surfaces is perfect pink, #ff00ff. The origin seems to be http://mxr.mozilla.org/mozilla-central/source/gfx/gl/GLReadTexImageHelper.cpp#719 which strongly implies the renderbuffer isn't being drawn entirely. Pixel format mismatches seem unlikely because the valid content is color-correct. Cache-coherence/write-flushing problems still look very very suspicious. (But I'm still going to double-check that layerscope is doing the right thing.)
I sprinkled in some QPU cache clear/disable and ARM cache flushes around the readback, but nothing really changed. However, with a glFlush/glFinish pair just before the readback, I see a change both in the readback renderbuffer and the screen fb. The renderbuffer has much more variance in "pink" unrendered area, and the screen fb has more non-black (rendered?) area, although it's still prety corrupted. This might mean we're not waiting on the render jobs to finish hard enough? And, with GL debugging turned on, adding a glFlush just before the glFinish we make to check the error status causes what looks to be a reproducible crash in the GL impl. glFlush definitely seems to make interesting things happen.
> And, with GL debugging turned on, adding a glFlush just before the glFinish we make to check the error status causes what looks to be a reproducible crash in the GL impl. glFlush definitely seems to make interesting things happen. I should add, just the glFinish() doesn't change the rendered buffers or trigger the crash (as reliably anyway), even though glFinish should be equivalent to glFlush/glFinish.
> This might mean we're not waiting on the render jobs to finish hard enough? Verified that the PCS register says everything is done on the 3d unit after the render-complete interrupt fires. So it seems that glFlush() is doing (or starting to do) something that glFinish() ought to be doing too, but that something is corrupting the heap. The hwcomposer swap usage in GonkDisplayICS::SwapBuffers() also involves an explicit glFinish(). That probably explains why routing around that code path makes bug 1072145 less frequent.
I was able to verify that the glReadPixels() we do to copy from the renderbuffer to the image surface sent back to the layerscope UI is doing the right thing. It ends up on a mind-numbingly slow fallback copy path. The renderbuffer looks like this data:image/png;base64,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 The purple parts with the white streaks aren't corrupted; rather they're a special tiled image format used for the GPU. However, the big white blocks *are* the problem; they should have similar content. So next step is to see whether the source texture itself is missing content, or it's the texture->renderbuffer draw call that's losing the content.
Big lead: stepping through more GL impl guts showed code that looked like it maybe should have been used but was #ifdef'd out (or was correctly not used, wasn't sure). Tracing back through the chain of build flags proved very interesting: AFAICT the brcm_usrlib/dag code drop was configured (on android build flavors) for the bcm21553 chip (Athena?), which seems to have a newer/different VideoCore chip than the RPI's 2853. Referencing other users of the brcm_usrlib/dag code was ... interesting, but another story. (If I'm right about the other story, we may another way to weasel out of these bugs.) I tried configuring the build flags for 2853, but b2g gets into a GL_OUT_OF_MEMORY error loop in the resulting build. I think the problem is that numerous parts of the code assume that Athena == Android, so there may be a fair number of fixups needed. Too many for tonight :).
> Tracing back through the chain of build flags proved very interesting: AFAICT the brcm_usrlib/dag code drop was configured (on android build flavors) for the bcm21553 chip (Athena?), which seems to have a newer/different VideoCore chip than the RPI's 2853 The 2853 definitely doesn't seem to be "Athena". It's unclear whether it's the "BCM2708A0" device. Adjusting the build flags to be "not-Athena" but also "not-BCM2708A0" seems to give the same results as default flags. Making the build "not-Athena" and "is-BCM2708A0" results in several unrelated problems, including two deadlocks in early startup in the GL code. This may be worth debugging, but for now I've put it back aside; see below. > Referencing other users of the brcm_usrlib/dag code was ... interesting Actually, it turns out that the Raspbian gfx-challenge code seems to be building as "not-Athena" and "not-BCM2708A0" (but also of course "not-ANDROID"). So my build opts and that code's are approximately the same now. > we may another way to weasel out of these bugs The code drop seems include all the code needed to build an RPC-to-VideoCore GL backend, going through vcihq. I took a crack at compiling this, but it's very far from building, and the RPC frontend in the code drop is highly unlikely to speak the same protocol version as the latest VC firmware. Another option but not promising. Going back to stepping through the GL bowels turned up another useful nugget: in GrallocTextureSourceOGL::Lock(), where we bind the gralloc segment's EGLImage to a texture, the EGLImage appears to have the correct contents (albeit in a special tiled rgb565 format): data:image/png;base64,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 Note that there aren't empty blocks like in the capture of the framebuffer contents above. So the incorrect content shown by layerscope almost certainly is coming from the draw call to render texture -> framebuffer. It's possible there's an intermediate texture allocated by the backend for an rgb565->rgbx888 conversion, and if so it's possible the corruption happens there. Some kind of rgb565->rgbx888 flub looks most probable.
I should add that I tried forcing gecko to only allocate rgbx8888 surfaces, avoiding rgb565, to see if this made the fb-draw issue go away. But for some reason, bug 1072145 has started biting hard enough that I can't get layerscope data :/.
> I should add that I tried forcing gecko to only allocate rgbx8888 surfaces, avoiding rgb565, to see if this made the fb-draw issue go away. But for some reason, bug 1072145 has started biting hard enough that I can't get layerscope data :/. OK, the crashes randomly went away again and I was able to test this. Like forcing a 32-bit framebuffer at the driver level (which should have done essentially the same thing), this didn't make a difference in the content in the on-screen fb or the gralloc textures.
(Updating title to reflect that gralloc surfaces and EGLImages created from them seem to have correct content, it's the fbo's that are incorrect.)
Summary: Content in gralloc buffers seems partially wrong → glDrawArrays() call on fbo leaves un-drawn gaps (and may draw past end-of-buffer)
WONTFIX'ing because I couldn't resolve the issues in this stack, and there's no long-term support plan for the code.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: