diff options
Diffstat (limited to 'src/mesa/drivers/dri/intel/intel_span.c')
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_span.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index 1e73943457..28eabbc005 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -448,24 +448,22 @@ intel_map_unmap_framebuffer(struct intel_context *intel, struct gl_framebuffer *fb, GLboolean map) { - GLcontext *ctx = &intel->ctx; - GLuint i, j; - - /* color buffers */ - if (fb == ctx->DrawBuffer) { - for (j = 0; j < fb->_NumColorDrawBuffers; j++) { - if (map) - intel_renderbuffer_map(intel, fb->_ColorDrawBuffers[j]); - else - intel_renderbuffer_unmap(intel, fb->_ColorDrawBuffers[j]); - } - } else { + GLuint i; + + /* color draw buffers */ + for (i = 0; i < fb->_NumColorDrawBuffers; i++) { if (map) - intel_renderbuffer_map(intel, fb->_ColorReadBuffer); + intel_renderbuffer_map(intel, fb->_ColorDrawBuffers[i]); else - intel_renderbuffer_unmap(intel, fb->_ColorReadBuffer); + intel_renderbuffer_unmap(intel, fb->_ColorDrawBuffers[i]); } + /* color read buffer */ + if (map) + intel_renderbuffer_map(intel, fb->_ColorReadBuffer); + else + intel_renderbuffer_unmap(intel, fb->_ColorReadBuffer); + /* check for render to textures */ for (i = 0; i < BUFFER_COUNT; i++) { struct gl_renderbuffer_attachment *att = @@ -484,20 +482,17 @@ intel_map_unmap_framebuffer(struct intel_context *intel, /* depth buffer (Note wrapper!) */ if (fb->_DepthBuffer) { if (map) - intel_renderbuffer_map(intel, fb->_DepthBuffer->Wrapped); + intel_renderbuffer_map(intel, fb->_DepthBuffer->Wrapped); else - intel_renderbuffer_unmap(intel, - fb->_DepthBuffer->Wrapped); + intel_renderbuffer_unmap(intel, fb->_DepthBuffer->Wrapped); } /* stencil buffer (Note wrapper!) */ if (fb->_StencilBuffer) { if (map) - intel_renderbuffer_map(intel, - fb->_StencilBuffer->Wrapped); + intel_renderbuffer_map(intel, fb->_StencilBuffer->Wrapped); else - intel_renderbuffer_unmap(intel, - fb->_StencilBuffer->Wrapped); + intel_renderbuffer_unmap(intel, fb->_StencilBuffer->Wrapped); } } @@ -524,7 +519,8 @@ intelSpanRenderStart(GLcontext * ctx) } intel_map_unmap_framebuffer(intel, ctx->DrawBuffer, GL_TRUE); - intel_map_unmap_framebuffer(intel, ctx->ReadBuffer, GL_TRUE); + if (ctx->ReadBuffer != ctx->DrawBuffer) + intel_map_unmap_framebuffer(intel, ctx->ReadBuffer, GL_TRUE); } /** @@ -547,7 +543,8 @@ intelSpanRenderFinish(GLcontext * ctx) } intel_map_unmap_framebuffer(intel, ctx->DrawBuffer, GL_FALSE); - intel_map_unmap_framebuffer(intel, ctx->ReadBuffer, GL_FALSE); + if (ctx->ReadBuffer != ctx->DrawBuffer) + intel_map_unmap_framebuffer(intel, ctx->ReadBuffer, GL_FALSE); UNLOCK_HARDWARE(intel); } |