intel: Skip the flush before read-pixels via blit
As we will flush when reading the return values of the blit, we can forgo the earlier flush. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
@@ -80,6 +80,7 @@ do_blit_readpixels(struct gl_context * ctx,
|
||||
drm_intel_bo *dst_buffer;
|
||||
GLboolean all;
|
||||
GLint dst_x, dst_y;
|
||||
GLuint dirty;
|
||||
|
||||
DBG("%s\n", __FUNCTION__);
|
||||
|
||||
@@ -129,7 +130,9 @@ do_blit_readpixels(struct gl_context * ctx,
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
dirty = intel->front_buffer_dirty;
|
||||
intel_prepare_render(intel);
|
||||
intel->front_buffer_dirty = dirty;
|
||||
|
||||
all = (width * height * src->cpp == dst->Base.Size &&
|
||||
x == 0 && dst_offset == 0);
|
||||
@@ -171,6 +174,10 @@ intelReadPixels(struct gl_context * ctx,
|
||||
|
||||
DBG("%s\n", __FUNCTION__);
|
||||
|
||||
if (do_blit_readpixels
|
||||
(ctx, x, y, width, height, format, type, pack, pixels))
|
||||
return;
|
||||
|
||||
intel_flush(ctx);
|
||||
|
||||
/* glReadPixels() wont dirty the front buffer, so reset the dirty
|
||||
@@ -179,10 +186,6 @@ intelReadPixels(struct gl_context * ctx,
|
||||
intel_prepare_render(intel);
|
||||
intel->front_buffer_dirty = dirty;
|
||||
|
||||
if (do_blit_readpixels
|
||||
(ctx, x, y, width, height, format, type, pack, pixels))
|
||||
return;
|
||||
|
||||
fallback_debug("%s: fallback to swrast\n", __FUNCTION__);
|
||||
|
||||
/* Update Mesa state before calling down into _swrast_ReadPixels, as
|
||||
|
||||
Reference in New Issue
Block a user