[Mesa-dev] [PATCH] i965/miptree_map_blit: Don't do the initial copy if INVALIDATE_RANGE is set
Kenneth Graunke
kenneth at whitecape.org
Tue Jan 13 18:35:13 PST 2015
On Tuesday, January 13, 2015 10:39:22 AM Jason Ekstrand wrote:
> Before we were always coping from the buffer being mapped into the
> temporary buffer. However, if INVALIDATE_RANGE is set, then we know that
> the data is going to be junk after we unmap so there's no point in doing
> the blit. This is important because doing the blit will cause a stall 3
> lines later when we map the buffer.
>
> Signed-off-by: Jason Ekstrand <jason.ekstrand at intel.com>
> ---
> src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> index f815fbe..d44df18 100644
> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> @@ -1807,14 +1807,21 @@ intel_miptree_map_blit(struct brw_context *brw,
> }
> map->stride = map->mt->pitch;
>
> - if (!intel_miptree_blit(brw,
> - mt, level, slice,
> - map->x, map->y, false,
> - map->mt, 0, 0,
> - 0, 0, false,
> - map->w, map->h, GL_COPY)) {
> - fprintf(stderr, "Failed to blit\n");
> - goto fail;
> + /* One of either READ_BIT or WRITE_BIT or both is set. READ_BIT implies no
> + * INVALIDATE_RANGE_BIT. WRITE_BIT needs the original values read in unless
> + * invalidate is set, since we'll be writing the whole rectangle from our
> + * temporary buffer back out.
> + */
> + if (!(map->mode & GL_MAP_INVALIDATE_RANGE_BIT)) {
> + if (!intel_miptree_blit(brw,
> + mt, level, slice,
> + map->x, map->y, false,
> + map->mt, 0, 0,
> + 0, 0, false,
> + map->w, map->h, GL_COPY)) {
> + fprintf(stderr, "Failed to blit\n");
> + goto fail;
> + }
> }
>
> map->ptr = intel_miptree_map_raw(brw, map->mt);
Just for the hell of it, how about
if (!(map->mode & (GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT)))
I don't think we pass INVALIDATE_BUFFER_BIT today, but we could someday,
and the same logic applies.
Either way,
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150113/f1782c63/attachment.sig>
More information about the mesa-dev
mailing list