[Nouveau] [Bug 91171] Space Rangers 2 (in Wine) shows only black screen

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Jul 4 13:23:05 PDT 2015


https://bugs.freedesktop.org/show_bug.cgi?id=91171

--- Comment #4 from Ilia Mirkin <imirkin at alum.mit.edu> ---
Ah yeah, nouveau fails pretty substantially at multiple concurrent GL contexts
used simultaneously from different threads (this is a nouveau shortcoming, not
a mesa one). Multiple contexts that are switched around with glXMakeCurrent
from a single thread should operate fine though.

Indeed looking at the trace, I see

79407 glBindFramebuffer(target = GL_DRAW_FRAMEBUFFER, framebuffer = 0)
79409 glReadBuffer(mode = GL_COLOR_ATTACHMENT0)
79412 glDrawBuffer(mode = GL_FRONT)
79417 glBlitFramebuffer(srcX0 = 0, srcY0 = 0, srcX1 = 1024, srcY1 = 768, dstX0
= 0, dstY0 = 768, dstX1 = 1024, dstY1 = 0, mask = 
GL_COLOR_BUFFER_BIT, filter = GL_NEAREST)
79419 glFlush()

followed immediately by creating a (actually two!) new contexts, and discarding
the old stuff. [Looks like it does both glXCreateContext *and*
glXCreateContextAttribsARB, and discards the first one of those.]

I was looking over what flush did, and it does indeed explicitly flush the
frontbuffer to screen if it's the current drawbuffer. [or something along those
lines]. Tracing through that flow, it's entirely over my head... interactions
between multiple modules of which I know nothing. I don't see anywhere where
it'd be waiting for that blit to complete either, but that doesn't mean it's
not there. Perhaps this should be a glFinish()?

I'm afraid this will have to wait for someone to understand what the issue is
before it can be fixed.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20150704/da26d9f8/attachment.html>


More information about the Nouveau mailing list