From: segal@spud.asd.sgi.com (Mark Segal)
Newsgroups: comp.graphics.opengl
Subject: Re: conformance question
Date: 16 Dec 1992 00:16:16 GMT
Organization: Silicon Graphics, Inc.
Distribution: world
NNTP-Posting-Host: spud.asd.sgi.com

In article <1992Dec15.204500.14333@dsd.es.com>, rthomson@mesa.dsd.es.com (Rich Thomson) writes:
|> In article <1992Dec15.080609.26325@microunity.com>
|> 	jsw@microunity.com (Jeff Weinstein) writes:
|> >  From the GLX extension spec, version 1.0:
|> >
|> >	A conformant GLX extension must provide at least one RGB visual
|> >	with a spencil buffer, a depth buffer, and an accumulation buffer
|> >	with color components of non-zero size.  A conformant extension
|> >	must also provide at least one color index type visual with depth
|> >	and stencil buffers.  Other visuals with fewer associated buffers
|> >	may also be made available.
|> >
|> >So the answer to your question is no, at least in the context of GLX.
|> 
|> How does this mesh with the following:
|> 
|>     ``All color buffers must have the same number of bitplanes,
|>     although an implementation or context may choose not to provide
|>     right buffers, back buffers, or auxiliary buffers at all.
|>     Further, an implementation or context may not provide depth,
|>     stencil, or accumulation buffers.''
|>     (OpenGL specification V1.0, pg. 88)
|> 
|> Further, it seems that the presence of double buffering, depth
|> buffering, stencil buffering and accumulation buffering isn't strictly
|> required of all OpenGL implementations since the glGet() function is
|> used to query the presence of these.
|> 
|> I'm still curious how this is different from subsetting.

OK, I'll give it a try.  The OpenGL specification describes how OpenGL
is supposed to act in a SINGLE visual, not over all visuals (see page 5
of the spec).  We wanted to allow visuals without z-buffers, for instance,
because, for instance, there may be some machines that can't provide both
a z-buffer and a whole bunch of framebuffer bits for other stuff.  Thus,
the specification needs to say how things operate in case certain buffers
aren't present.

The GLX specification describes how OpenGL integrates into X, and thus
describes facts about visuals and how they must relate to OpenGL (there
are analogous requirements for Windows/NT).  One of the requirements
of the integration is that certain visuals with certain features must
be provided, exactly because we want to be sure that minimum functionality
is always available in at least one visual.  As long as a programmer uses
only that functionality, there can't be any problem about 'subsetting.'

We cannot take the union of all possible framebuffer configurations and
require that these be present across all platforms; this would be both
impractical and undesirable.  So we came to a compromise.  It's true:
some machines may provide visuals with, say, 24 bits of stencil while
others may provide only 1 (you can determine how many bits you have by
making the appropriate glGet() call).  But it's never the case that some
feature or some arbitrary group of features can be missing from an
implementation (given the correct visual, anyway).

	Mark
Newsgroups: comp.graphics.opengl