please help - MIT-SHM extension > XShmCreatePixmap issue

Aaron Plattner aplattner at nvidia.com
Fri Jan 15 11:10:33 PST 2010


On Fri, Jan 15, 2010 at 11:02:13AM -0800, mark wrote:
> Hello all,
> 
> I've got a question regarding an error that I'm getting trying to
> communicate with the X server.  It seems my XShmCreatePixmap call is
> returning:
> 
> X Error of failed request:  BadImplementation (server does not implement operation)
> 
> I'm using a piece of software written to display a JPEG in a xwindow. The
> software basically just decodes a jpeg then puts it into shared memory
> and displays it on the screen every X seconds without ripping/flashing
> (some double buffering done).The software has been written to use the
> MIT-SHM extension.  The software runs fine compiled and executed on a
> different device running the 1.6.0 version of the Xorg server.  I'm
> running it on version 1.7.3 (I've tried 1.60, and 1.6.2 and get the same
> results);  xdpyinfo returns info stating that the server supports pixmaps
> (see below) and that MIT-SHM support is an available extension.  The X
> log file is attached below. My error handling routines are returning the
> below attached info.  I suspect that when syncing after the
> XShmCreatePixmap call was made the server rejects the call.  As a result,
> the pixmap drawable isn't created so when XShmPutImage is called this
> error occurs:
> 
> X Error of failed request:  BadDrawable (invalid Pixmap or Window
> parameter)
> 
> I've attached a snippet of the code where the error seems to occur. This
> software has worked perfect fine for years on 6.8.0 and Xfree 4.3.0
> versions of X.  Not sure what to do or try here or where to continue
> looking.  Any help would be greatly appreciated.  Thank you very much for
> your time so far.

SHM pixmaps are an optional part of the MIT-SHM extension, and are disabled
in most recent drivers / acceleration architectures because they cause
major performance headaches.  You need to query the extension with
XShmQueryVersion and look at the returned 'sharedPixmaps' boolean:

       XShmQueryVersion returns the version numbers of the extension
       implementation. Shared memory  pixmaps  are  supported if the
       pixmaps argument returns true.

You can do a similar query with 'xdpyinfo -ext MIT-SHM'.  Look at the botom
of the output:

       MIT-SHM version 1.1 opcode: 142, base event: 98, base error: 159
         shared pixmaps: no

If SHM pixmaps are not supported, your application needs to use something
else, such as XShmPutImage.

> Do any of you know where I would get a list of all the Major and Minor
> opcodes for X requests?

For the major opcodes, xdpyinfo -queryExtensions.  For the minor ones, look
at the protocol headers installed in /usr/include/X11/extensions/* by the
*proto packages.

Hope that helps!

Sincerely,
Aaron



More information about the xorg mailing list