2009/12/11 Stefan Dösinger <stefandoesin...@gmx.at>:
>>   - Setting "render_offscreen" is really the responsibility of the
>> context_create() call, similar to create_primary_opengl_context().
> context_create() doesn't take a swapchain as parameter, only a window. This 
> is correct, because GL contexts are linked to the drawable, not the 
> swapchain. Thus context_create doesn't have the needed information to set the 
> offscreen flag. (I could just pass in a TRUE or FALSE parameter, but there's 
> something else)
>
It has a "target" parameter that can be either an onscreen or
offscreen surface. This parameter is also used to set the initial
"current_rt" field. "similar to create_primary_opengl_context()" was
perhaps badly worded, what I meant is that context_create() should be
setting "render_offscreen", not its callers.

> As a sidenode, maybe create_primary_opengl_context is named badly. It's not 
> part of the context management, its a device helper function that happens to 
> use the context management to set up a GL context, among other things. Maybe 
> device_restart_opengl or something similar is better.
>
Yeah.

>>  - The line is actually wrong, the relevant context has been setup to
>> render to the front buffer, so "render_offscreen" should always be
>> FALSE, even if there is a back buffer.
> Well, this code is in the backbuffer path. Render_offscreen is false if we 
> don't set it due to the alloc HEAP_ZERO_MEMORY. The point of the line is to 
> set it to true if we render to an FBO. We never set a swapchain to render to 
> the front buffer at creation time if there is a back buffer.
>
"context_create(device, (IWineD3DSurfaceImpl *)swapchain->frontBuffer,
window, FALSE /* pbuffer */, present_parameters);"

The draw buffer handling in swapchain_init() is also broken in the
sense that it always sets GL_BACK if there's a back buffer, regardless
of what the context thinks it should be, but that's a separate issue,
I'm working on some patches to fix draw buffer handling in the general
case.


Reply via email to