wined3d: Explicitly pass the wined3d context to context_apply_draw_buffer().
This commit is contained in:
parent
9253bbcb05
commit
85e2c05e4f
|
@ -1734,16 +1734,19 @@ retry:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Context activation is done by the caller. */
|
/* Context activation is done by the caller. */
|
||||||
static void apply_draw_buffer(IWineD3DDeviceImpl *This, IWineD3DSurface *target, BOOL blit)
|
static void context_apply_draw_buffer(struct WineD3DContext *context, BOOL blit)
|
||||||
{
|
{
|
||||||
const struct wined3d_gl_info *gl_info = This->activeContext->gl_info;
|
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||||
|
IWineD3DSurface *rt = context->current_rt;
|
||||||
IWineD3DSwapChain *swapchain;
|
IWineD3DSwapChain *swapchain;
|
||||||
|
IWineD3DDeviceImpl *device;
|
||||||
|
|
||||||
if (SUCCEEDED(IWineD3DSurface_GetContainer(target, &IID_IWineD3DSwapChain, (void **)&swapchain)))
|
device = ((IWineD3DSurfaceImpl *)rt)->resource.wineD3DDevice;
|
||||||
|
if (SUCCEEDED(IWineD3DSurface_GetContainer(rt, &IID_IWineD3DSwapChain, (void **)&swapchain)))
|
||||||
{
|
{
|
||||||
IWineD3DSwapChain_Release((IUnknown *)swapchain);
|
IWineD3DSwapChain_Release((IUnknown *)swapchain);
|
||||||
ENTER_GL();
|
ENTER_GL();
|
||||||
glDrawBuffer(surface_get_gl_buffer(target, swapchain));
|
glDrawBuffer(surface_get_gl_buffer(rt, swapchain));
|
||||||
checkGLcall("glDrawBuffers()");
|
checkGLcall("glDrawBuffers()");
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
}
|
}
|
||||||
|
@ -1756,12 +1759,12 @@ static void apply_draw_buffer(IWineD3DDeviceImpl *This, IWineD3DSurface *target,
|
||||||
{
|
{
|
||||||
if (GL_SUPPORT(ARB_DRAW_BUFFERS))
|
if (GL_SUPPORT(ARB_DRAW_BUFFERS))
|
||||||
{
|
{
|
||||||
GL_EXTCALL(glDrawBuffersARB(GL_LIMITS(buffers), This->draw_buffers));
|
GL_EXTCALL(glDrawBuffersARB(GL_LIMITS(buffers), device->draw_buffers));
|
||||||
checkGLcall("glDrawBuffers()");
|
checkGLcall("glDrawBuffers()");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glDrawBuffer(This->draw_buffers[0]);
|
glDrawBuffer(device->draw_buffers[0]);
|
||||||
checkGLcall("glDrawBuffer()");
|
checkGLcall("glDrawBuffer()");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1771,7 +1774,7 @@ static void apply_draw_buffer(IWineD3DDeviceImpl *This, IWineD3DSurface *target,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glDrawBuffer(This->offscreenBuffer);
|
glDrawBuffer(device->offscreenBuffer);
|
||||||
checkGLcall("glDrawBuffer()");
|
checkGLcall("glDrawBuffer()");
|
||||||
}
|
}
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
|
@ -1836,7 +1839,7 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
}
|
}
|
||||||
if (context->draw_buffer_dirty) {
|
if (context->draw_buffer_dirty) {
|
||||||
apply_draw_buffer(This, target, FALSE);
|
context_apply_draw_buffer(context, FALSE);
|
||||||
context->draw_buffer_dirty = FALSE;
|
context->draw_buffer_dirty = FALSE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1858,7 +1861,7 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU
|
||||||
context->draw_buffer_dirty = TRUE;
|
context->draw_buffer_dirty = TRUE;
|
||||||
}
|
}
|
||||||
if (context->draw_buffer_dirty) {
|
if (context->draw_buffer_dirty) {
|
||||||
apply_draw_buffer(This, target, TRUE);
|
context_apply_draw_buffer(context, TRUE);
|
||||||
if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) {
|
if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) {
|
||||||
context->draw_buffer_dirty = FALSE;
|
context->draw_buffer_dirty = FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue