[Mesa-dev] [PATCH] gallium/r600: Replace ALIGN_DIVUP with DIV_ROUND_UP

Nicolai Hähnle nhaehnle at gmail.com
Tue Dec 29 14:27:42 PST 2015


On 29.12.2015 14:27, Krzysztof A. Sobiecki wrote:
> From: Krzysztof Sobiecki <sobkas at gmail.com>
>
> ALIGN_DIVUP is a driver specific(r600g) macro that duplicates DIV_ROUND_UP functionality.
> Replacing it with DIV_ROUND_UP eliminates this problems.

Those macros are actually slightly different, and the assembly generated 
by the ALIGN_DIVUP looks clearly better to me.

I remember seeing a very long thread about this not so long ago - what 
was the resolution there?

Cheers,
Nicolai

>
> Signed-off-by: Krzysztof A. Sobiecki <sobkas at gmail.com>
> ---
>   src/gallium/drivers/r600/evergreen_state.c | 2 +-
>   src/gallium/drivers/r600/r600_pipe.h       | 1 -
>   src/gallium/drivers/r600/r600_state.c      | 2 +-
>   3 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
> index 1aee7dd..9dfb849 100644
> --- a/src/gallium/drivers/r600/evergreen_state.c
> +++ b/src/gallium/drivers/r600/evergreen_state.c
> @@ -1956,7 +1956,7 @@ static void evergreen_emit_constant_buffers(struct r600_context *rctx,
>
>   		if (!gs_ring_buffer) {
>   			radeon_set_context_reg_flag(cs, reg_alu_constbuf_size + buffer_index * 4,
> -						    ALIGN_DIVUP(cb->buffer_size, 256), pkt_flags);
> +						    DIV_ROUND_UP(cb->buffer_size, 256), pkt_flags);
>   			radeon_set_context_reg_flag(cs, reg_alu_const_cache + buffer_index * 4, va >> 8,
>   						    pkt_flags);
>   		}
> diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
> index 31f2a72..0e4dd16 100644
> --- a/src/gallium/drivers/r600/r600_pipe.h
> +++ b/src/gallium/drivers/r600/r600_pipe.h
> @@ -946,7 +946,6 @@ static inline uint32_t S_FIXED(float value, uint32_t frac_bits)
>   {
>   	return value * (1 << frac_bits);
>   }
> -#define ALIGN_DIVUP(x, y) (((x) + (y) - 1) / (y))
>
>   /* 12.4 fixed-point */
>   static inline unsigned r600_pack_float_12p4(float x)
> diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c
> index 43b8074..f60e304 100644
> --- a/src/gallium/drivers/r600/r600_state.c
> +++ b/src/gallium/drivers/r600/r600_state.c
> @@ -1768,7 +1768,7 @@ static void r600_emit_constant_buffers(struct r600_context *rctx,
>
>   		if (!gs_ring_buffer) {
>   			radeon_set_context_reg(cs, reg_alu_constbuf_size + buffer_index * 4,
> -					       ALIGN_DIVUP(cb->buffer_size, 256));
> +					       DIV_ROUND_UP(cb->buffer_size, 256));
>   			radeon_set_context_reg(cs, reg_alu_const_cache + buffer_index * 4, offset >> 8);
>   		}
>
>


More information about the mesa-dev mailing list