Expose triple/double buffering distinction in WGL_ARB_pixel_format

Yep. Direct3D can do it, most hardware can do it, but there’s no way to control that in OpenGL. So I’d like to propose a WGL_NUMBER_BACK_BUFFERS_ARB an while we’re at it, new tokens accepted by glDrawBuffer() and glReadBuffer():
WGL_BACK_BUFFER0_ARB
WGL_BACK_BUFFER1_ARB

up to a maximum enumerant of maybe WGL_BACK_BUFFER7_ARB.

I also think that the WGL_SWAP_METHOD_ARB attribute could easily be extended to include WGL_SWAP_FLIP_ARB. WGL_SWAP_EXCHANGE_ARB is just stupid (let’s face it) and WGL_SWAP_COPY_ARB is not exactly what I’d prefer if given the choice. Both could continue to exist, but it doesn’t help me at all when all pixel formats I get have WGL_SWAP_UNDEFINED_ARB anyway, all I want is a true pointer-swap style flip.

I want it, don’t ask me why
Thoughts, comments and stuff?

Thoughts, comments and stuff?

I’d prefer to see it in GL2_buffer_object.
May the WGL_ARB_pixel_format rest in peace

Originally posted by MZ:
[b] [quote]Thoughts, comments and stuff?

I’d prefer to see it in GL2_buffer_object.
May the WGL_ARB_pixel_format rest in peace

[/b][/QUOTE]

Well an argument for adding more frame buffers would be that when you issue an hardware occlusion querry for instance
it has some latency. One way to beat this latency is to have several frames buffers in the works on the same time.

One where you draw pass1 and do the querries
and a nother to draw pass2 and get some results from pass1 HW occlusion querries and then possible draw pass2 if any for previous frame. This will get the hardware time to return the HW occlusion querries in time before it’s being displayed.

workl

Originally posted by zeckensack:
WGL_SWAP_EXCHANGE_ARB is just stupid (let’s face it) and WGL_SWAP_COPY_ARB is not exactly what I’d prefer if given the choice.

I’m pretty sure WGL_SWAP_EXCHANGE_ARB is (or can be) a straight pointer flip - I can’t see anything in the extension wording that would prevent this, and since (AFAIK) you can’t access buffer contents at a fixed address a pointer flip would satisfy EXCHANGE semantics perfectly well.

I can also imagine WGL_SWAP_COPY_ARB being very useful in some circs - think about a 3d-hardware-accelerated desktop along the lines of OSX/Jaguar (OpenGL) or Windows Longhorn (D3D). With guaranteed COPY semantics you’d only have to render the dirty rectangle(s) each frame, not the whole display.

Originally posted by MikeC:
I’m pretty sure WGL_SWAP_EXCHANGE_ARB is (or can be) a straight pointer flip - I can’t see anything in the extension wording that would prevent this, and since (AFAIK) you can’t access buffer contents at a fixed address a pointer flip would satisfy EXCHANGE semantics perfectly well.
Actually it has the same effect for double buffering.

But it’s definitely something different for triple buffering. That’s where it completely breaks.

I figure that’s why all my fullscreen pixel formats get WGL_SWAP_UNDEFINED_ARB, because they default to triple buffering (I’ve measured that ) and the WGL_SWAP_EXCHANGE_ARB semantics simply don’t make any sense at all in that case.