[Mesa-dev] [PATCH v2 3/5] i965: Fix INTEL_DEBUG=state to work with 64-bit dirty bits.

Chris Forbes chrisf at ijw.co.nz
Wed Oct 1 00:59:29 PDT 2014


For the series:

Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

On Sat, Sep 27, 2014 at 11:09 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> This will keep INTEL_DEBUG=state working when we add BRW_NEW_* bits
> beyond 1 << 31.  We missed doing this when widening the driver flags
> from uint32_t to uint64_t.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_state_upload.c | 23 +++++++----------------
>  1 file changed, 7 insertions(+), 16 deletions(-)
>
> NAK on "i965: Update dirty_bit_map::bit to be a uint64_t."
> It wasn't sufficient to keep this working.  I've now actually created
> bits 32 and 33, and verified that they are counted and printed correctly.
>
> diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
> index f4b0475..e124ce4 100644
> --- a/src/mesa/drivers/dri/i965/brw_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
> @@ -438,7 +438,7 @@ static void xor_states( struct brw_state_flags *result,
>  }
>
>  struct dirty_bit_map {
> -   uint32_t bit;
> +   uint64_t bit;
>     char *name;
>     uint32_t count;
>  };
> @@ -475,7 +475,8 @@ static struct dirty_bit_map mesa_bits[] = {
>     DEFINE_BIT(_NEW_PROGRAM_CONSTANTS),
>     DEFINE_BIT(_NEW_BUFFER_OBJECT),
>     DEFINE_BIT(_NEW_FRAG_CLAMP),
> -   DEFINE_BIT(_NEW_VARYING_VP_INPUTS),
> +   /* Avoid sign extension problems. */
> +   {(unsigned) _NEW_VARYING_VP_INPUTS, "_NEW_VARYING_VP_INPUTS", 0},
>     {0, 0, 0}
>  };
>
> @@ -538,14 +539,9 @@ static struct dirty_bit_map cache_bits[] = {
>
>
>  static void
> -brw_update_dirty_count(struct dirty_bit_map *bit_map, int32_t bits)
> +brw_update_dirty_count(struct dirty_bit_map *bit_map, uint64_t bits)
>  {
> -   int i;
> -
> -   for (i = 0; i < 32; i++) {
> -      if (bit_map[i].bit == 0)
> -        return;
> -
> +   for (int i = 0; bit_map[i].bit != 0; i++) {
>        if (bit_map[i].bit & bits)
>          bit_map[i].count++;
>     }
> @@ -554,13 +550,8 @@ brw_update_dirty_count(struct dirty_bit_map *bit_map, int32_t bits)
>  static void
>  brw_print_dirty_count(struct dirty_bit_map *bit_map)
>  {
> -   int i;
> -
> -   for (i = 0; i < 32; i++) {
> -      if (bit_map[i].bit == 0)
> -        return;
> -
> -      fprintf(stderr, "0x%08x: %12d (%s)\n",
> +   for (int i = 0; bit_map[i].bit != 0; i++) {
> +      fprintf(stderr, "0x%016lx: %12d (%s)\n",
>               bit_map[i].bit, bit_map[i].count, bit_map[i].name);
>     }
>  }
> --
> 2.1.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list