[Mesa-dev] [PATCH 09/10] Float fbconfigs frontend patch [2/3] Creation of dummy X pixmap associated with float buffer.
Tomasz Lis
listom at gmail.com
Wed Jul 24 04:21:47 PDT 2013
Is there any progress regarding this patch?
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.
2013/7/19 Ian Romanick <idr at freedesktop.org>
> On 07/17/2013 04:49 AM, Tomasz Lis wrote:
>
>> From: Tomasz Lis <tomasz.lis at intel.com>
>>
>> glx: Creation of dummy X pixmap associated with float buffer.
>>
>> This change addresses the fact that float configs can be only used for
>> pbuffers,
>> and that 2D driver may not allow creation of an associated pixmap.
>> It wouldn't be needed if 2D driver could always support 128 bpp buffers,
>> but even then, there wouldn't be any point in allocating full-size
>> associated
>> pixmap which can never be used.
>>
>
> 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.
>
>
> Signed-off-by: Tomasz Lis <listom at gmail.com>
>> ---
>> src/glx/glx_pbuffer.c | 19 +++++++++++++++++--
>> 1 file changed, 17 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c
>> index f11305a..67776c4 100644
>> --- a/src/glx/glx_pbuffer.c
>> +++ b/src/glx/glx_pbuffer.c
>> @@ -554,8 +554,23 @@ CreatePbuffer(Display * dpy, struct glx_config
>> *config,
>> UnlockDisplay(dpy);
>> SyncHandle();
>>
>> - pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),
>> - width, height, config->rgbBits);
>> + /* From SGIX_pbuffer spec:
>> + * GLXPbuffers are equivalent to GLXPixmaps with the following
>> exceptions:
>> + * There is no associated X pixmap. Also, since a GLXPbuffer is a GLX
>> + * resource, it may not be possible to render to it using X or an
>> + * X extension other than GLX.
>> + */
>> + if (config->floatMode) {
>> + /* There are no float X pixmaps - create a dummy one, with 1 BPP.
>> + * The 1 BPP is a special value which disables BPP verification
>> + * in XServer. */
>> + pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),
>> + width, height, 1);
>> + } else {
>> + /* If it is possible to associate an X pixmap, do it. */
>> + pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),
>> + width, height, config->rgbBits);
>> + }
>>
>> if (!CreateDRIDrawable(dpy, config, pixmap, id, attrib_list, i)) {
>> CARD32 o = glx_1_3 ? X_GLXDestroyPbuffer : X_GLXvop_**
>> DestroyGLXPbufferSGIX;
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130724/29dccf97/attachment-0001.html>
More information about the mesa-dev
mailing list