[cairo] Re: [Mesa3d-dev] Re: Points in Cairo Glitz paper

Allen Akin akin at pobox.com
Thu Apr 22 13:17:26 PDT 2004


On Thu, Apr 22, 2004 at 01:25:20PM -0400, Owen Taylor wrote:
| But in a desktop, all the apps are redrawing on their own schedule;
| once you want to integrate those apps in a more sophisticated way
| than "you get this rectangular area of the screen" then you need
| the apps drawing offscreen.

Point of terminology: I think many 3D folks would say, Yes, for the
desktop you need double- or multi-buffering.  Nowadays you also want
composition in addition to buffer swapping.  But in the 3D world the
term "offscreen drawing" typically refers to a more general process that
may or may not produce a simple visual result.  As a rule, offscreen
drawing also has different constraints than multibuffering (different
size limits, color buffer formats, volatility/residency, etc.)  As an
example, offscreen drawing is used to produce shadow maps, which consist
of a depth buffer without an associated image.

In OpenGL, PBuffers are surfaces for offscreen drawing.  Back buffers,
stereo buffers, and (to a lesser extent) auxiliary buffers are used for
multibuffering.  The need for different types of drawing surfaces
reflects differences in drawing semantics for onscreen vs. offscreen.

Some confusion arises because offscreen drawing is often used to
implement multibuffering.

|  Yes, you could conceive of a desktop that works by apps creating
|  scene graph fragments, but I don't see this as realistic; ...

Actually, game engines are more like this than the "single simple stream
of drawing commands" abstraction mentioned earlier.  Multithreaded
engines in particular.

|                                                     ... and 
|  additionally has no easy fall back to old hardware / software
|  rendering.

I don't see a problem in that respect.  (Though there are others, it's
still an interesting approach.  Lots of experience from the NeWS days
should be relevant.)

Allen




More information about the cairo mailing list