i965: Create a macro for setting all dirty bits.
authorPaul Berry <stereotype441@gmail.com>
Fri, 10 Jan 2014 22:23:52 +0000 (14:23 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Tue, 2 Sep 2014 02:38:27 +0000 (19:38 -0700)
This will make it easier to extend dirty bit handling to support
compute shaders.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/drivers/dri/i965/brw_blorp.cpp
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_state_cache.c
src/mesa/drivers/dri/i965/brw_state_upload.c

index 6b161c9373a03974df445de92364d26febf6f27a..c5cc823261654f127f62b595f11403ce9a21b8d8 100644 (file)
@@ -273,8 +273,8 @@ retry:
    /* We've smashed all state compared to what the normal 3D pipeline
     * rendering tracks for GL.
     */
-   brw->state.dirty.brw = ~0;
-   brw->state.dirty.cache = ~0;
+   SET_DIRTY_ALL(brw);
+   SET_DIRTY_ALL(cache);
    brw->no_depth_or_stencil = false;
    brw->ib.type = -1;
 
index 7475135f3e86bd446115ded326288d8693caf3cd..5ffd9604a9c89174d63ca7e7fbab96a4bac71760 100644 (file)
@@ -248,6 +248,17 @@ struct brw_state_flags {
 #define SET_DIRTY_BIT(FIELD, FLAG) brw->state.dirty.FIELD |= (FLAG)
 
 
+/**
+ * Set all of the bits in a field of brw_state_flags.
+ */
+#define SET_DIRTY_ALL(FIELD) \
+   do { \
+      /* ~0 == 0xffffffff, so make sure field is <= 32 bits */ \
+      STATIC_ASSERT(sizeof(brw->state.dirty.FIELD) == 4); \
+      brw->state.dirty.FIELD = ~0; \
+   } while (false)
+
+
 /** Subclass of Mesa vertex program */
 struct brw_vertex_program {
    struct gl_vertex_program program;
index df2d806e7f6fc04ef71e59c5cb14c6971c675027..fcb7277bf275c10ba47f0c9960010ffb8ed04d51 100644 (file)
@@ -379,9 +379,9 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
    /* We need to make sure that the programs get regenerated, since
     * any offsets leftover in brw_context will no longer be valid.
     */
-   brw->state.dirty.mesa |= ~0;
-   brw->state.dirty.brw |= ~0;
-   brw->state.dirty.cache |= ~0;
+   SET_DIRTY_ALL(mesa);
+   SET_DIRTY_ALL(brw);
+   SET_DIRTY_ALL(cache);
    intel_batchbuffer_flush(brw);
 }
 
index b945e85bcf34717295e9a0e7d6a7c3438fa4effd..7324274a4068397560fb6774f0b71e7a1c8c96e5 100644 (file)
@@ -383,8 +383,8 @@ void brw_init_state( struct brw_context *brw )
 
    brw_upload_initial_gpu_state(brw);
 
-   brw->state.dirty.mesa = ~0;
-   brw->state.dirty.brw = ~0;
+   SET_DIRTY_ALL(mesa);
+   SET_DIRTY_ALL(brw);
 
    /* Make sure that brw->state.dirty.brw has enough bits to hold all possible
     * dirty flags.