<div dir="ltr"><div><div><br></div>Is there any progress regarding this patch?<br><br></div>Without it, XServer will try to create a 128 bpp pixmap while creating float pbuffers. Buffers with BPP over 32 are not supported by xf86-video-intel, and the pixmap creation will fail.<br>
<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/19 Ian Romanick <span dir="ltr"><<a href="mailto:idr@freedesktop.org" target="_blank">idr@freedesktop.org</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 07/17/2013 04:49 AM, Tomasz Lis wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: Tomasz Lis <<a href="mailto:tomasz.lis@intel.com" target="_blank">tomasz.lis@intel.com</a>><br>
<br>
glx: Creation of dummy X pixmap associated with float buffer.<br>
<br>
This change addresses the fact that float configs can be only used for pbuffers,<br>
and that 2D driver may not allow creation of an associated pixmap.<br>
It wouldn't be needed if 2D driver could always support 128 bpp buffers,<br>
but even then, there wouldn't be any point in allocating full-size associated<br>
pixmap which can never be used.<br>
</blockquote>
<br></div>
I'm not sure this is correct. I want to do some more research and play around with some other implementations. I've pushed all of the series (with some changes) except this patch. Since this would qualify as a bug fix, this can get cherry picked to the 9.2 branch.<div class="HOEnZb">
<div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Signed-off-by: Tomasz Lis <<a href="mailto:listom@gmail.com" target="_blank">listom@gmail.com</a>><br>
---<br>
src/glx/glx_pbuffer.c | 19 +++++++++++++++++--<br>
1 file changed, 17 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c<br>
index f11305a..67776c4 100644<br>
--- a/src/glx/glx_pbuffer.c<br>
+++ b/src/glx/glx_pbuffer.c<br>
@@ -554,8 +554,23 @@ CreatePbuffer(Display * dpy, struct glx_config *config,<br>
UnlockDisplay(dpy);<br>
SyncHandle();<br>
<br>
- pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),<br>
- width, height, config->rgbBits);<br>
+ /* From SGIX_pbuffer spec:<br>
+ * GLXPbuffers are equivalent to GLXPixmaps with the following exceptions:<br>
+ * There is no associated X pixmap. Also, since a GLXPbuffer is a GLX<br>
+ * resource, it may not be possible to render to it using X or an<br>
+ * X extension other than GLX.<br>
+ */<br>
+ if (config->floatMode) {<br>
+ /* There are no float X pixmaps - create a dummy one, with 1 BPP.<br>
+ * The 1 BPP is a special value which disables BPP verification<br>
+ * in XServer. */<br>
+ pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),<br>
+ width, height, 1);<br>
+ } else {<br>
+ /* If it is possible to associate an X pixmap, do it. */<br>
+ pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),<br>
+ width, height, config->rgbBits);<br>
+ }<br>
<br>
if (!CreateDRIDrawable(dpy, config, pixmap, id, attrib_list, i)) {<br>
CARD32 o = glx_1_3 ? X_GLXDestroyPbuffer : X_GLXvop_<u></u>DestroyGLXPbufferSGIX;<br>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>