[Mesa-dev] [PATCH] mesa: Convert NewDriverState to 64-bits

Marek Olšák maraeo at gmail.com
Mon Sep 1 03:15:59 PDT 2014


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Thu, Aug 28, 2014 at 6:44 AM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> i965 will have more than 32 bits when BRW_STATE_COMPUTE_PROGRAM is added.
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
> Ken,
>
> How about this to replace "i965: Convert brw state dirty bits to
> 64-bits"?
>
> -Jordan
>
>  src/mesa/drivers/dri/i965/brw_blorp.cpp      |  2 +-
>  src/mesa/drivers/dri/i965/brw_context.h      | 14 +++++++++++++-
>  src/mesa/drivers/dri/i965/brw_state_cache.c  |  2 +-
>  src/mesa/drivers/dri/i965/brw_state_upload.c |  2 +-
>  src/mesa/main/mtypes.h                       | 16 ++++++++--------
>  src/mesa/state_tracker/st_context.h          |  2 +-
>  6 files changed, 25 insertions(+), 13 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 13403f5..ef68c53 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;
> +   uint64_t brw;
>     /**
>      * State update flags that used to be signalled by brw_state_cache.c
>      * searches.
> @@ -283,6 +283,18 @@ typedef enum {
>
>
>  /**
> + * Set all of the bits in a field of brw_state_flags.
> + */
> +#define SET_DIRTY64_ALL(FIELD) \
> +   do { \
> +      /* ~0ULL == 0xffffffffffffffff, so make sure field is <= 64 bits */ \
> +      STATIC_ASSERT(sizeof(brw->state.pipeline_dirty[0].FIELD) == 8); \
> +      for (int pipeline = 0; pipeline < BRW_NUM_PIPELINES; pipeline++) \
> +         brw->state.pipeline_dirty[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.
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index cb2a4df..c84d1ea 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3908,32 +3908,32 @@ typedef enum
>  struct gl_driver_flags
>  {
>     /** gl_context::Array::_DrawArrays (vertex array state) */
> -   GLbitfield NewArray;
> +   uint64_t NewArray;
>
>     /** gl_context::TransformFeedback::CurrentObject */
> -   GLbitfield NewTransformFeedback;
> +   uint64_t NewTransformFeedback;
>
>     /** gl_context::TransformFeedback::CurrentObject::shader_program */
> -   GLbitfield NewTransformFeedbackProg;
> +   uint64_t NewTransformFeedbackProg;
>
>     /** gl_context::RasterDiscard */
> -   GLbitfield NewRasterizerDiscard;
> +   uint64_t NewRasterizerDiscard;
>
>     /**
>      * gl_context::UniformBufferBindings
>      * gl_shader_program::UniformBlocks
>      */
> -   GLbitfield NewUniformBuffer;
> +   uint64_t NewUniformBuffer;
>
>     /**
>      * gl_context::AtomicBufferBindings
>      */
> -   GLbitfield NewAtomicBuffer;
> +   uint64_t NewAtomicBuffer;
>
>     /**
>      * gl_context::ImageUnits
>      */
> -   GLbitfield NewImageUnits;
> +   uint64_t NewImageUnits;
>  };
>
>  struct gl_uniform_buffer_binding
> @@ -4240,7 +4240,7 @@ struct gl_context
>
>     GLenum RenderMode;        /**< either GL_RENDER, GL_SELECT, GL_FEEDBACK */
>     GLbitfield NewState;      /**< bitwise-or of _NEW_* flags */
> -   GLbitfield NewDriverState;/**< bitwise-or of flags from DriverFlags */
> +   uint64_t NewDriverState;  /**< bitwise-or of flags from DriverFlags */
>
>     struct gl_driver_flags DriverFlags;
>
> diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
> index 6d572bd..58f14f9 100644
> --- a/src/mesa/state_tracker/st_context.h
> +++ b/src/mesa/state_tracker/st_context.h
> @@ -56,7 +56,7 @@ struct u_upload_mgr;
>
>  struct st_state_flags {
>     GLuint mesa;
> -   GLuint st;
> +   uint64_t st;
>  };
>
>  struct st_tracked_state {
> --
> 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