intel: Don't force a batchbuffer flush in readpixels.
Renderbuffer mapping handles flushing the batchbuffer if required, so all we need to do is make sure any pending rendering has reached the batchbuffer. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
e7349a55f7
commit
ac6a376f52
|
@ -495,7 +495,7 @@ intelInvalidateState(struct gl_context * ctx, GLuint new_state)
|
|||
}
|
||||
|
||||
void
|
||||
intel_flush(struct gl_context *ctx)
|
||||
intel_flush_rendering_to_batch(struct gl_context *ctx)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
|
@ -504,6 +504,14 @@ intel_flush(struct gl_context *ctx)
|
|||
|
||||
if (intel->gen < 4)
|
||||
INTEL_FIREVERTICES(intel);
|
||||
}
|
||||
|
||||
void
|
||||
intel_flush(struct gl_context *ctx)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
intel_flush_rendering_to_batch(ctx);
|
||||
|
||||
if (intel->batch.used)
|
||||
intel_batchbuffer_flush(intel);
|
||||
|
|
|
@ -483,6 +483,7 @@ extern bool intelInitContext(struct intel_context *intel,
|
|||
struct dd_function_table *functions);
|
||||
|
||||
extern void intelFinish(struct gl_context * ctx);
|
||||
extern void intel_flush_rendering_to_batch(struct gl_context *ctx);
|
||||
extern void intel_flush(struct gl_context * ctx);
|
||||
|
||||
extern void intelInitDriverFunctions(struct dd_function_table *functions);
|
||||
|
|
|
@ -172,14 +172,14 @@ intelReadPixels(struct gl_context * ctx,
|
|||
struct intel_context *intel = intel_context(ctx);
|
||||
bool dirty;
|
||||
|
||||
intel_flush_rendering_to_batch(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
|
||||
* flag after calling intel_prepare_render(). */
|
||||
dirty = intel->front_buffer_dirty;
|
||||
|
|
Loading…
Reference in New Issue