From d74fe47101995d2659b1e59495d2f77b9dc14f3d Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 17 Sep 2020 12:38:45 -0400 Subject: [PATCH] glx: Allow depth-30 pbuffers to work without a depth-30 pixmap format The backing pixmap needs to be big enough to hold depth-30 rendering, but the server doesn't necessarily have a depth-30 pixmap format. Just round up to the 32bpp format you'd be using anyway. Fixes: mesa/mesa#3527 Part-of: --- src/glx/glx_pbuffer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 8208c977c34..72833526daa 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -558,6 +558,7 @@ CreatePbuffer(Display * dpy, struct glx_config *config, unsigned int i; Pixmap pixmap; GLboolean glx_1_3 = GL_FALSE; + int depth = config->rgbBits; if (priv == NULL) return None; @@ -622,8 +623,11 @@ CreatePbuffer(Display * dpy, struct glx_config *config, UnlockDisplay(dpy); SyncHandle(); + if (depth == 30) + depth = 32; + pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen), - width, height, config->rgbBits); + width, height, depth); if (!CreateDRIDrawable(dpy, config, pixmap, id, attrib_list, i)) { CARD32 o = glx_1_3 ? X_GLXDestroyPbuffer : X_GLXvop_DestroyGLXPbufferSGIX;