i965: Move intel_prepare_render() above first buffer access

The driver is supposed to ensure buffers before any drawing operation, but in
do_blit_drawpixels() and do_blit_copypixels() we inspect the buffer format
before calling intel_prepare_render().  That was covered up by the
unconditional call to intel_prepare_render() in intelMakeCurrent(), but we
now only do this on the initial intelMakeCurrent call for a context
(to get the size for the initial viewport values).

https://bugs.freedesktop.org/show_bug.cgi?id=74083

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Tested-by: Alexander Monakov <amonakov@gmail.com>
This commit is contained in:
Kristian Høgsberg
2014-02-05 10:59:02 -08:00
parent db98d238e2
commit 44338cd826
2 changed files with 4 additions and 4 deletions

View File

@@ -66,6 +66,8 @@ do_blit_copypixels(struct gl_context * ctx,
/* Update draw buffer bounds */
_mesa_update_state(ctx);
intel_prepare_render(brw);
switch (type) {
case GL_COLOR:
if (fb->_NumColorDrawBuffers != 1) {
@@ -148,8 +150,6 @@ do_blit_copypixels(struct gl_context * ctx,
return false;
}
intel_prepare_render(brw);
intel_batchbuffer_flush(brw);
/* Clip to destination buffer. */

View File

@@ -72,6 +72,8 @@ do_blit_drawpixels(struct gl_context * ctx,
return false;
}
intel_prepare_render(brw);
struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[0];
struct intel_renderbuffer *irb = intel_renderbuffer(rb);
@@ -101,8 +103,6 @@ do_blit_drawpixels(struct gl_context * ctx,
src_offset += _mesa_image_offset(2, unpack, width, height,
format, type, 0, 0, 0);
intel_prepare_render(brw);
src_buffer = intel_bufferobj_buffer(brw, src,
src_offset, width * height *
irb->mt->cpp);