[Mesa-dev] [PATCH 6/8] i965: Convert brw state dirty bits to 64-bits

Jordan Justen jljusten at gmail.com
Wed Aug 27 17:10:36 PDT 2014


r-b with these changes?

By the way, chrisf pointed out on irc that we should extend
ctx->NewDriverState to 64-bit as well. I'll look into that, but I
don't think it needs to block this change. Although, I'd be willing to
pull that in here as well if anyone prefers it.

-Jordan

On Wed, Aug 27, 2014 at 3:16 PM, Ian Romanick <idr at freedesktop.org> wrote:
> On 08/27/2014 02:30 PM, Jordan Justen wrote:
>> We will have more that 32 bits when COMPUTE_PROGRAM is added.
>>
>> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
>> ---
>>  src/mesa/drivers/dri/i965/brw_blorp.cpp      |  2 +-
>>  src/mesa/drivers/dri/i965/brw_context.h      | 16 +++++++++++++++-
>>  src/mesa/drivers/dri/i965/brw_state_cache.c  |  2 +-
>>  src/mesa/drivers/dri/i965/brw_state_upload.c |  2 +-
>>  4 files changed, 18 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp
>> index c5cc823..17ae2bf 100644
>> --- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
>> @@ -273,7 +273,7 @@ retry:
>>     /* We've smashed all state compared to what the normal 3D pipeline
>>      * rendering tracks for GL.
>>      */
>> -   SET_DIRTY_ALL(brw);
>> +   SET_DIRTY64_ALL(brw);
>>     SET_DIRTY_ALL(cache);
>>     brw->no_depth_or_stencil = false;
>>     brw->ib.type = -1;
>> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
>> index 7b2eea1..875c43b 100644
>> --- a/src/mesa/drivers/dri/i965/brw_context.h
>> +++ b/src/mesa/drivers/dri/i965/brw_context.h
>> @@ -229,7 +229,7 @@ struct brw_state_flags {
>>     /**
>>      * State update flags signalled as the result of brw_tracked_state updates
>>      */
>> -   GLuint brw;
>> +   GLuint64 brw;
>
> I'd take this opportunity to get rid of the GL type.  Make this uint64_t
> instead.
>
>>     /**
>>      * State update flags that used to be signalled by brw_state_cache.c
>>      * searches.
>> @@ -287,6 +287,20 @@ typedef enum {
>>
>>
>>  /**
>> + * Set all of the bits in a field of brw_state_flags.
>> + */
>> +#define SET_DIRTY64_ALL(FIELD) \
>> +   do { \
>> +      int which_pipeline; \
>
> Same comment about C99 as a previous patch.
>
>> +      /* ~0 == 0xffffffff, so make sure field is <= 32 bits */ \
>
> This comment seems... stale. :)
>
>> +      STATIC_ASSERT(sizeof(brw->state.pipeline_dirty[0].FIELD) == 8);  \
>> +      for (which_pipeline = 0; which_pipeline < BRW_NUM_PIPELINES; \
>> +           which_pipeline++) \
>> +         brw->state.pipeline_dirty[which_pipeline].FIELD = ~(0ULL);     \
>> +   } while (false)
>> +
>> +
>> +/**
>>   * Check one of the bits in a field of brw_state_flags.
>>   */
>>  #define CHECK_DIRTY_BIT(FIELD, FLAG) \
>> diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c
>> index fcb7277..19079c8 100644
>> --- a/src/mesa/drivers/dri/i965/brw_state_cache.c
>> +++ b/src/mesa/drivers/dri/i965/brw_state_cache.c
>> @@ -380,7 +380,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
>>      * any offsets leftover in brw_context will no longer be valid.
>>      */
>>     SET_DIRTY_ALL(mesa);
>> -   SET_DIRTY_ALL(brw);
>> +   SET_DIRTY64_ALL(brw);
>>     SET_DIRTY_ALL(cache);
>>     intel_batchbuffer_flush(brw);
>>  }
>> diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
>> index 3022ab1..9d93431 100644
>> --- a/src/mesa/drivers/dri/i965/brw_state_upload.c
>> +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
>> @@ -391,7 +391,7 @@ void brw_init_state( struct brw_context *brw )
>>     brw_upload_initial_gpu_state(brw);
>>
>>     SET_DIRTY_ALL(mesa);
>> -   SET_DIRTY_ALL(brw);
>> +   SET_DIRTY64_ALL(brw);
>>
>>     /* Make sure that brw->state.dirty.brw has enough bits to hold all possible
>>      * dirty flags.
>>
>
> _______________________________________________
> 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