Summary: | [bisected] mesa demo xeglgears draw nothing if surface type is a pixmap | ||
---|---|---|---|
Product: | Mesa | Reporter: | Jin Yang <jin.a.yang> |
Component: | Other | Assignee: | mesa-dev |
Status: | RESOLVED MOVED | QA Contact: | |
Severity: | normal | ||
Priority: | high | CC: | idr, shuang.he |
Version: | git | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | intel: Set ctx's drawbuffer according to drawables visual |
Description
Jin Yang
2011-07-27 02:16:32 UTC
Shuang to reproduce. I can reproduce this bug with upstream driver on pineview This seems to work on current 7.10 branch, but it fails on 7.11 and master. Since this is a regression, is there a bisect? I've bisected this to: commit 87dde5b1cd596c4008695ff2db9469f88c09f925 Author: Benjamin Franzke <benjaminfranzke@googlemail.com> Date: Wed Feb 9 15:30:20 2011 +0100 egl_dri2: Use double buffering for window surfaces We really should have piglit tests for drawing to pixmaps and pbuffers. Simple tests that just draw a single triangle should be sufficient. (In reply to comment #4) > I've bisected this to: > > commit 87dde5b1cd596c4008695ff2db9469f88c09f925 > Author: Benjamin Franzke <benjaminfranzke@googlemail.com> > Date: Wed Feb 9 15:30:20 2011 +0100 > > egl_dri2: Use double buffering for window surfaces > > We really should have piglit tests for drawing to pixmaps and pbuffers. Simple > tests that just draw a single triangle should be sufficient. Ok, Thanks for bisecting. At the time of writing this patch I owned only radeon hardware, where it works (r600g). So a piglit test wouldnt have helped directly (sure, you'd have found it earlier). The commit was about using dri double buffer configs for window surfaces (made the wayland backend code nicer). This results in contexts being created with double buffer configs, which are somewhat mixed with single buffer configs, when using pixmap surfaces. Why does this work with r600g? st/mesa sets the context's DrawBuffer[0] depending on its visual render_buffer, which is set by st/dri depending on the drawables gl_config's doubleBufferMode. I'll attach a patch that does this for intel in make_current. Created attachment 49902 [details] [review] intel: Set ctx's drawbuffer according to drawables visual (In reply to comment #6) > Created an attachment (id=49902) [details] > intel: Set ctx's drawbuffer according to drawables visual Hi, I just try your patch. ./xeglgears -pixmap works fine but ./xeglgears -pixmap -fullscreen doesn't work The pixmap fullscreen mode doesn't work out on both the 7.9 and 7.11. Would you mind helping me looking into this issue. Thanks a lot. (In reply to comment #7) > (In reply to comment #6) > > Created an attachment (id=49902) [details] [details] > > intel: Set ctx's drawbuffer according to drawables visual This patch doesn't seem like the right fix, and the commit message is a bit confusing to me (see below). What particularly concerns me is that the change that created the bug was in common code, but the fix is in driver code. Does this leave other drivers broken? > egl_dri2 creates contexts with a doubleBufferConfig when PIXMAP and > WINDOW bit is request, so _mesa_init_color sets DrawBuffer[0] to > GL_BACK. I'm confused about this. The application creates a context with a particular fbconfig, and that determines whether the context is single-buffered or double-buffered. What does egl_dri2 have to do with anything? > If a pixmap surface is created egl_dri2 will use a single buffer config, > so MakeCurrent has to adjust DrawBuffer[0] to the current drawable. One other nit with the commit message. The usual way to reference a bug is: Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39588 This makes it easier to search in 'git log' for things to cherry pick to stable branches. > I just try your patch. > ./xeglgears -pixmap works fine Do the other modes mentioned in comment #0 also work? > but > ./xeglgears -pixmap -fullscreen doesn't work > > The pixmap fullscreen mode doesn't work out on both the 7.9 and 7.11. If fullscreen didn't work with Mesa 7.9, it's not the same bug. > Would you mind helping me looking into this issue. Thanks a lot. (In reply to comment #8) > (In reply to comment #7) > > (In reply to comment #6) > > > Created an attachment (id=49902) [details] [details] [details] > > > intel: Set ctx's drawbuffer according to drawables visual > > This patch doesn't seem like the right fix, and the commit message is a bit > confusing to me (see below). What particularly concerns me is that the change > that created the bug was in common code, but the fix is in driver code. Does > this leave other drivers broken? I did this in the driver since its also done in st/mesa like that, but yes, I also want this to be in _mesa_make_current. I sent an updated patch in this mail: http://lists.freedesktop.org/archives/mesa-dev/2011-August/010167.html Please look at the whole review-thread, since it may already answer your questions, but i'll try to answer them here as well. > > egl_dri2 creates contexts with a doubleBufferConfig when PIXMAP and > > WINDOW bit is request, so _mesa_init_color sets DrawBuffer[0] to > > GL_BACK. > > I'm confused about this. The application creates a context with a particular > fbconfig, and that determines whether the context is single-buffered or > double-buffered. What does egl_dri2 have to do with anything? - egl_dri2 creates a context (either single or double buffered) - egl_dri2 creates surfaces (either single or double buffered = pixmap or window) If the user requests a config with PIXMAP_BIT and WINDOW_BIT (like xeglgears), egl_dri2 has to decide for one type of config for the context (either single or double buffered), but it needs the ability to use both types of configs for surfaces (since the user can use both pixmap and window surfaces with the same context). > > If a pixmap surface is created egl_dri2 will use a single buffer config, > > so MakeCurrent has to adjust DrawBuffer[0] to the current drawable. > > One other nit with the commit message. The usual way to reference a bug is: > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39588 > > This makes it easier to search in 'git log' for things to cherry pick to stable > branches. Actually I couldnt detect a general rule for this in mesa, and looking in the recent log gave me more "Fixes bug_url" than "Bugzilla: bug_url" > > I just try your patch. > > ./xeglgears -pixmap works fine > > Do the other modes mentioned in comment #0 also work? > > > but > > ./xeglgears -pixmap -fullscreen doesn't work > > > > The pixmap fullscreen mode doesn't work out on both the 7.9 and 7.11. > > If fullscreen didn't work with Mesa 7.9, it's not the same bug. > > > Would you mind helping me looking into this issue. Thanks a lot. (In reply to comment #8) > (In reply to comment #7) > > (In reply to comment #6) > > > Created an attachment (id=49902) [details] [details] [details] > > > intel: Set ctx's drawbuffer according to drawables visual > > This patch doesn't seem like the right fix, and the commit message is a bit > confusing to me (see below). What particularly concerns me is that the change > that created the bug was in common code, but the fix is in driver code. Does > this leave other drivers broken? > > > egl_dri2 creates contexts with a doubleBufferConfig when PIXMAP and > > WINDOW bit is request, so _mesa_init_color sets DrawBuffer[0] to > > GL_BACK. > > I'm confused about this. The application creates a context with a particular > fbconfig, and that determines whether the context is single-buffered or > double-buffered. What does egl_dri2 have to do with anything? > > > If a pixmap surface is created egl_dri2 will use a single buffer config, > > so MakeCurrent has to adjust DrawBuffer[0] to the current drawable. > > One other nit with the commit message. The usual way to reference a bug is: > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39588 > > This makes it easier to search in 'git log' for things to cherry pick to stable > branches. > > > I just try your patch. > > ./xeglgears -pixmap works fine > > Do the other modes mentioned in comment #0 also work? > > > but > > ./xeglgears -pixmap -fullscreen doesn't work > > > > The pixmap fullscreen mode doesn't work out on both the 7.9 and 7.11. > > If fullscreen didn't work with Mesa 7.9, it's not the same bug. > > > Would you mind helping me looking into this issue. Thanks a lot. Sorry for the late response. GL_RENDERER = Mesa DRI Intel(R) IGD x86/MMX/SSE2 GL_VERSION = 1.4 Mesa 7.12-devel (git-4dd3272) ./xeglgears -pixmap works ./xeglgears -pixmap-texture works ./xeglgears -pixmap -fullscreen doesn't work ./xeglgears -pixmap-texture -fullscreen works ./xeglgears -pbuffer works ./xeglgears -pbuffer-texture works ./xeglgears -pbuffer -fullscreen works ./xeglgears -pbuffer-texture -fullscreen works Hope that can help you. The problem still exists, the NAKed patch was never commited. -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/895. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.