[Mesa-dev] [PATCH] st/mesa: use u_bit_scan64() on 64-bit CPUs
Marek Olšák
maraeo at gmail.com
Fri Oct 21 10:04:47 UTC 2016
NAK.
This won't make it faster.
Marek
On Fri, Oct 21, 2016 at 11:58 AM, Jan Ziak <0xe2.0x9a.0x9b at gmail.com> wrote:
> st_validate_state() shows up in benchmarks. This patch makes it a little bit
> faster in 64-bit mode.
>
> Signed-off-by: Jan Ziak (http://atom-symbol.net) <0xe2.0x9a.0x9b at gmail.com>
> ---
> src/mesa/state_tracker/st_atom.c | 25 +++++++++++++------------
> 1 file changed, 13 insertions(+), 12 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
> index 94e012a..210f6f3 100644
> --- a/src/mesa/state_tracker/st_atom.c
> +++ b/src/mesa/state_tracker/st_atom.c
> @@ -155,7 +155,6 @@ void st_validate_state( struct st_context *st, enum st_pipeline pipeline )
> {
> struct gl_context *ctx = st->ctx;
> uint64_t dirty, pipeline_mask;
> - uint32_t dirty_lo, dirty_hi;
>
> /* Get Mesa driver state.
> *
> @@ -200,17 +199,19 @@ void st_validate_state( struct st_context *st, enum st_pipeline pipeline )
> if (!dirty)
> return;
>
> - dirty_lo = dirty;
> - dirty_hi = dirty >> 32;
> -
> - /* Update states.
> - *
> - * Don't use u_bit_scan64, it may be slower on 32-bit.
> - */
> - while (dirty_lo)
> - atoms[u_bit_scan(&dirty_lo)]->update(st);
> - while (dirty_hi)
> - atoms[32 + u_bit_scan(&dirty_hi)]->update(st);
> + /* Update states. */
> + if (sizeof(void*) > 4) {
> + while (dirty)
> + atoms[u_bit_scan64(&dirty)]->update(st);
> + } else {
> + /* Don't use u_bit_scan64, it may be slower on 32-bit. */
> + uint32_t dirty_lo = dirty;
> + uint32_t dirty_hi = dirty >> 32;
> + while (dirty_lo)
> + atoms[u_bit_scan(&dirty_lo)]->update(st);
> + while (dirty_hi)
> + atoms[32 + u_bit_scan(&dirty_hi)]->update(st);
> + }
>
> /* Clear the render or compute state bits. */
> st->dirty &= ~pipeline_mask;
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list