<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>