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:
@@ -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. */
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user