Feedback on GL_EXT_texture_from_pixmap

David Reveman davidr at novell.com
Tue Feb 7 16:21:42 PST 2006


On Tue, 2006-02-07 at 15:46 -0800, James Jones wrote:
> On Tuesday 07 February 2006 03:11 pm, Deron Johnson wrote:
> > I've reviewed the extension spec and I feel that this is
> > definitely heading in the right direction. Looking Glass
> > definitely needs something like this and I'm eager to try it out.
> 
> I'm glad others are excited about this as well :-)
> 
> > A couple of questions/concerns:
> >
> > My biggest concern is about the statement that clients need to
> > rebind in order to get the latest pixmap contents for use by
> > texturing. This seems to be an accomodation for devices which
> > copy on BindTexImage. I'm mostly interested in getting excellent
> > performance on devices which don't do a copy. Forcing clients to
> > go through an expensive rebind transaction when it is not
> > necessary for a device seems like an unnecessary slow-down.
> > Perhaps one way of addressing this is to indicate to the user in
> > the FBconfig whether the device is going to do a copy so that the
> > client can rebind or not.
> 
> I believe this statement has been left in as an oversite.  The 
> resolution to this issue was to not require rebinding to obtain 
> up-to-date pixmap contents.  Implementations that require a copy 
> would either need to perform that copy whenever the pixmap is 
> rendered to, or simply not support the extension.  This extension 
> is meant only as a way to expose direct texturing from drawables on 
> implementations that can support it.  No benefit is gained if 
> implementations must perform an internal copy.  As not all pixmaps 
> will necessarily be compatible with this extension, even on 
> implementations that support it, applications should always have a 
> fallback path anyway.
> 
> Please also refer to paragraph 7 in the description of 
> glXBindTexImageEXT.  This paragraph defines the result of texturing 
> operations using a pixmap that is currently being rendered to.

Maybe we should add some text to spec that explains that this is only
really a problem when using direct rendering or a threaded server.

> 
> > Also, could someone please provide an example of how to switch
> > between rendering with one pixmap texture and then rendering
> > with another pixmap texture? I'm not exactly sure whether a
> > release is necessary in between; an example would clarify this.
> 
> No unbinding should be necessary if the pixmaps have already been 
> set up to be used as textures:
> 
> /* Step 0: Assume these are set up elsewhere */
> GLXpixmap pm1;
> GLXpixmap pm2;
> 
> /* Step 1: Create pixmap textures */
> GLint textures[2];
> glGenTextures(2, textures);
> 
> glBindTexture(GL_TEXTURE_2D, textures[0]);
> glXBindTextureImageEXT(display, pm1, GLX_FRONT_LEFT_EXT, NULL);
> 
> glBindTexture(GL_TEXTURE_2D, textures[1]);
> glXBindTextureImageEXT(display, pm2, GLX_FRONT_LEFT_EXT, NULL);
> 
> /* Step 2: Draw, texturing from pixmap "pm1" */
> glBindTexture(GL_TEXTURE_2D, textures[0]);
> glBegin(...);
> ...
> glEnd();
> 
> /* Step 3: Draw, texturing from pixmap "pm2" */
> glBindTexture(GL_TEXTURE_2D, textures[1]);
> glBegin(...);
> ...
> glEnd();
> 
> An optimized application would only perform Step 1 when necessary, 
> for example when a new pixmap was allocated.  It would then leave 
> the pixmap bound to a texture until the pixmap or texture was no 
> longer needed.
> 
> Does this example clarify the intended usage?
> 
> > Another question that I have is whether this extension will be
> > supported by other versions of Xorg besides Xgl? Or is Xgl
> > eventually going to be mainstreamed into Xorg? If so, in what
> > time frame?
> 
> NVIDIA will support this extension in a future driver release, so 
> no, it will not be an Xgl only feature.  Any driver that supports 
> OpenGL rendering could potentially be modified to support this 
> extension.
> 
> > Finally, do we need a new request to tell the Composite extension
> > to round up its backing pixmap dimensions to the nearest power
> > of two? Otherwise we can use texture_from_pixmap on devices that
> > don't support rectangle_texture and/or non-power-of-two
> > extension.
> 
> It's not clear to me that it is desireable to support this extension 
> on these devices.  Perhaps users should fall back to calling 
> CopyTexSubImage, and use a scheme that stores the contents of 
> multiple pixmaps in a single texture to avoid eating up memory in 
> this case?  This seems like something that would be best dealt with 
> by an application with more knowledge than the X or OpenGL driver.
> 
> Thanks,
> -James Jones
> 
> >
> > _______________________________________________
> > xorg mailing list
> > xorg at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/xorg

-David




More information about the xorg mailing list