How to properly handle double-width framebuffer? Stereoscopic X?
wdraxinger.maillist at draxit.de
wdraxinger.maillist at draxit.de
Tue Apr 13 16:25:11 PDT 2010
Am Dienstag 13 April 2010 schrieb Chetan Raj:
> We have a LCD display panel whose real physical dimensions are of
> ratio 4:3. However, the panel only accepts framebuffer of
> resolution 640x240 (8:3).
>
> It would also be helpful if anyone can throw light on such a
> strange LCD panel configuration that has 4:3 physical dimension,
> but uses 8:3 pixel ratio.
Maybe the Panel, or its controller are for a stereoscopic display
system using a lenticular lens in front of it, where the images for
left and right eye are sent to the display column interlaced. You want
the double horizontal resolution then.
Intermediary solution: Just configure the monitor with the unusual
framebuffer size, and use the configuration option "DisplaySize" to
define it's physical dimensions. While it doesn't help with Pixmaps
everything rendered from vector data (like TrueType, OpenType,
Postscript fonts and such) will show with the correct aspect if the
applications don't abuse the libraries. I'm not sure about what the
current toolkits do, but it was even possible for them to properly
stretch pixmaps to match the framebuffer aspect.
ATM I'm quite busy working on stereoscopy systems, and unfortunately
there's no standards track for it in X11 (yet?).
I'd like to use the opportunity to trigger some discussion. I figured
for a proper support of stereoscopy, X11 must be extended by at least
the following:
* windows may be either a single drawable, or a dual/stereo drawable.
If a window is a "single" drawable, then it must be possible to assign
it to either "left eye", "right eye" or "both", preferrably not only
on creation time. Default is single drawable assigned to "both".
* It may desireable to allow overlapping sibling (sub)windows which
don't share a target drawable (i.e. one set is assigned only "left
eye" the other "right eye") don't occlude each other to enable stereo
rendering by creation of multiple windows, placed at the same
location.
* Composite/AIGLX must allow indiviual access to the "left" and
"right" drawables, so that compositing windowmanagers can properly
render stereoscopic windows.
* GLX/OpenGL quadbuffer stereo visuals shall only be supported on
dual/stereo drawables.
* A extension of GLX PBuffers for stereo is not neccesary. The whole
glDrawBuffer(GL_{FRONT|BACK}_{LEFT|RIGHT}); thing is only neccesary
for the final display. In intermediate rendering stages there's no
difference if one would pull separate left/right images from a PBuffer
into distinct textures, or pull it from separate PBuffers or
individual rendering passes.
* With the advent of steroscopic/3D material to the consumer market
(first 3D Blu-Ray can be pre-ordered on Amazon right now), it might be
neccesary to extend Xv to reflect that, though I think it should be
covered if one can address "dual/stereo" sub-/drawables for Xv ports.
Of course this will also require some changes on the driver side.
There are a couple of options how to implement stereo physically:
- Taking multiple outputs and join them into a stereo pair.
- Interlacing left and right into rows or columns.
- Overly large monitors, display left and right side by side or on top
of each other. A gap between them might be neccesary. On-Top + Gap is
the Frame Packing format defined for HDMI1.4 / 3D Blu-Ray.
- Swapping left/right frame with each VSync, used with either shutter
glasses or by displays with internal buffer.
I think X.Org eventually should define a standard set of options for
configuring those above, to prevent having each driver have it's own
set of options ending up in a mess of redundant, but not
interchangible configuration tokens. I also think the same goes with
the existing multimonitor setups, beyond multiple screens. I know that
the whole multimonitor stuff is quite a mess, but eventually this
issue should be cleaned up.
That's why I'd like to see stereo being properly specified in the
first place, even if it's X.Org only, and a "proprietary" extension.
Wolfgang
More information about the xorg
mailing list