On 16.07.2008 17:44, Ian Romanick wrote:
> Maciej Cencora wrote:
> 
> | I tried implementing GL_ATI_separate_stencil in r300 driver, but I
> | faced a problem. With my simple patch http://pastebin.com/m524d1ae7
> | r300 driver supports 2 stencil extensions (GL_ATI_separate_stencil and
> | GL_EXT_stencil_two_side). Supporting both extensions causes problem in
> 
> Are you sure r300 can do the full set of functionality of the EXT
> version?  I thought r300 couldn't handle having a different front and
> back "ref" value.  This is allowed by the EXT extension and OpenGL 2.0,
> but it is not allowed by the ATI extension.
> 
> Also, if you intend to support the EXT version, you also need to define
> need_GL_EXT_stencil_two_side.
> 
> | _mesa_update_stencil function (main/stencil.c). First condition in
> | that function checks if EXT extension is supported, if so sets up
> | ctx->Stencil._TestTwoSide properly. If both extensions are available
> | and ATI extension is used then ctx->Stencil._TestTwoSide will always
> | be false, and that's not what we want. Possibly other functions are
> | also affected. Any suggestions how to properly fix this?
> 
> Both extensions (and the OpenGL 2.0 functionality) can be supported
> together, but I don't think Mesa implements it correctly.  Basically, we
> have to maintain two different sets of "back" stencil state.  One is set
> via the 2.0 or ATI functions and is used when STENCIL_TEST_TWO_SIDE_EXT
> is disabled and is disabled.  The other is set by StencilFunc and
> StencilOp when the active stencil face is set to BACK.  The
> EXT_stencil_two_side spec has more details.
> 
> http://opengl.org/registry/specs/EXT/stencil_two_side.txt
Ahh you're right this defines what happens when both are supported so I
was wrong that behaviour is not predictable. IMHO, it's a horrible
kludge however (for something that doesn't offer any added functionality).

> 
> I believe the Mesa currently only tracks one set of back stencil state.
Yes.

> 
> I think that it is worth supporting the EXT version, when possible,
> because there is GLX protocol for it.  There is currently no GLX
> protocol for the OpenGL 2.0 version or the ATI version.  This means that
> the EXT version is the only way to get two-sided stencil with indirect
> rendering contexts.
True, though I wonder why there's no GLX protocol for at least the
OpenGL 2.0 version?

Roland

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to