[Mesa-dev] [PATCH 23/23] i965: Skip uploading border color when unnecessary.
Kenneth Graunke
kenneth at whitecape.org
Wed Oct 8 01:57:57 PDT 2014
On Tuesday, July 29, 2014 04:29:28 PM Kenneth Graunke wrote:
> The border color is only needed when using the
GL_CLAMP_TO_BORDER or
> (deprecated) GL_CLAMP wrap modes; all others ignore it, including
the
> common GL_CLAMP_TO_EDGE and GL_REPEAT wrap modes.
>
> In those cases, we can skip uploading it entirely, saving a bit of
space
> in the batchbuffer. Instead, we just point it at the start of the
> batch (offset 0); we have to program something, and that address is
safe
> to read.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/brw_sampler_state.c | 22
++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_sampler_state.c
> b/src/mesa/drivers/dri/i965/brw_sampler_state.c index
f48e3c9..ad9a527
> 100644
> --- a/src/mesa/drivers/dri/i965/brw_sampler_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_sampler_state.c
> @@ -161,6 +161,16 @@ translate_wrap_mode(struct brw_context
*brw, GLenum
> wrap, bool using_nearest) }
>
> /**
> + * Return true if the given wrap mode requires the border color to
exist.
> + */
> +static bool
> +wrap_mode_needs_border_color(unsigned wrap_mode)
> +{
> + return wrap_mode == BRW_TEXCOORDMODE_CLAMP_BORDER ||
> + wrap_mode == GEN8_TEXCOORDMODE_HALF_BORDER;
> +}
> +
> +/**
> * Upload SAMPLER_BORDER_COLOR_STATE.
> */
> static void
> @@ -410,8 +420,16 @@ brw_update_sampler_state(struct
brw_context *brw,
> lod_bits);
> base_level = U_FIXED(0, 1);
>
> - uint32_t border_color_offset;
> - upload_default_color(brw, sampler, unit, &border_color_offset);
> + /* Upload the border color if necessary. If not, just point it at
> + * offset 0 (the start of the batch) - the color should be ignored,
> + * but that address won't fault in case something reads it anyway.
> + */
> + uint32_t border_color_offset = 0;
> + if (wrap_mode_needs_border_color(wrap_s) ||
> + wrap_mode_needs_border_color(wrap_t) ||
> + wrap_mode_needs_border_color(wrap_r)) {
> + upload_default_color(brw, sampler, unit, &border_color_offset);
> + }
>
> brw_emit_sampler_state(brw,
> sampler_state,
I don't think I ever received any review on this patch (23/23). The rest
got pushed a long time ago.
Thoughts?
--Ken
-------------- 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/20141008/b15111d0/attachment.sig>
More information about the mesa-dev
mailing list