diff options
author | Eric Anholt <[email protected]> | 2010-06-08 13:55:53 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-06-09 14:17:52 -0700 |
commit | 503eb57a003f51c25687e9cf0ad6f7939a757f1b (patch) | |
tree | 06d6a6612177552abc34481b6ac45bdd6b3250d7 /src/mesa/drivers/dri/i965/brw_context.h | |
parent | 45fb47d50c08bc4c11e4454883641501713e5710 (diff) |
i965: Avoid calloc/free in the CURBE upload process.
In exchange we end up with an extra memcpy, but that seems better than
calloc/free. Each buffer is 4k maximum, and on the i965-streaming
branch this allocation was showing up as the top entry in
brw_validate_state profiling for cairo-gl.
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_context.h')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 14552fa2724..d97634c1c60 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -573,7 +573,18 @@ struct brw_context /** Offset within curbe_bo of space for next curbe entry */ GLuint curbe_next_offset; + /** + * Copy of the last set of CURBEs uploaded. Frequently we'll end up + * in brw_curbe.c with the same set of constant data to be uploaded, + * so we'd rather not upload new constants in that case (it can cause + * a pipeline bubble since only up to 4 can be pipelined at a time). + */ GLfloat *last_buf; + /** + * Allocation for where to calculate the next set of CURBEs. + * It's a hot enough path that malloc/free of that data matters. + */ + GLfloat *next_buf; GLuint last_bufsz; } curbe; |