[Mesa-dev] [PATCH 07/12] i965: Use util_next_power_of_two() for brw_get_scratch_size()

Francisco Jerez currojerez at riseup.net
Fri Oct 9 04:28:21 PDT 2015


Kristian Høgsberg Kristensen <krh at bitplanet.net> writes:

> This function computes the next power of two, but at least 1024. We can
> do that by bitwise or'ing in 1023 and calling util_next_power_of_two().
>
> We use brw_get_scratch_size() from the compiler so we need it out of
> brw_program.c. We could move it to brw_shader.cpp, but let's make it a
> small inline function instead.
>
> Signed-off-by: Kristian Høgsberg Kristensen <krh at bitplanet.net>
> ---
>  src/mesa/drivers/dri/i965/brw_context.h |  7 ++++++-
>  src/mesa/drivers/dri/i965/brw_program.c | 12 ------------
>  2 files changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> index 1869f28..aa1284d 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.h
> +++ b/src/mesa/drivers/dri/i965/brw_context.h
> @@ -1723,7 +1723,12 @@ void brw_validate_textures( struct brw_context *brw );
>   */
>  void brwInitFragProgFuncs( struct dd_function_table *functions );
>  
> -int brw_get_scratch_size(int size);
> +/* Per-thread scratch space is a power-of-two multiple of 1KB. */
> +static inline int
> +brw_get_scratch_size(int size)
> +{
> +   return util_next_power_of_two(size | 1023);
> +}

This will incorrectly overallocate scratch space if size is already a
power of two greater than 1024.  I suggest you do "MAX2(1024,
util_next_power_of_two(size))" instead which is also trivial enough that
you might want to open-code it in its only use rather than defining a
one-line function for it.

>  void brw_get_scratch_bo(struct brw_context *brw,
>  			drm_intel_bo **scratch_bo, int size);
>  void brw_init_shader_time(struct brw_context *brw);
> diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
> index 108eb34..69ecc36 100644
> --- a/src/mesa/drivers/dri/i965/brw_program.c
> +++ b/src/mesa/drivers/dri/i965/brw_program.c
> @@ -242,18 +242,6 @@ brw_add_texrect_params(struct gl_program *prog)
>     }
>  }
>  
> -/* Per-thread scratch space is a power-of-two multiple of 1KB. */
> -int
> -brw_get_scratch_size(int size)
> -{
> -   int i;
> -
> -   for (i = 1024; i < size; i *= 2)
> -      ;
> -
> -   return i;
> -}
> -
>  void
>  brw_get_scratch_bo(struct brw_context *brw,
>  		   drm_intel_bo **scratch_bo, int size)
> -- 
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151009/9d6d871d/attachment-0001.sig>


More information about the mesa-dev mailing list