Mesa (master): st: do away with dynamic state atom for const buffers

Brian Paul brianp at kemper.freedesktop.org
Tue Apr 21 23:02:01 UTC 2009


Module: Mesa
Branch: master
Commit: f4f39902fd0241162c06065e521151cd2572a34d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4f39902fd0241162c06065e521151cd2572a34d

Author: Brian Paul <brianp at vmware.com>
Date:   Tue Apr 21 16:47:30 2009 -0600

st: do away with dynamic state atom for const buffers

Just use the new _NEW_PROGRAM_CONSTANTS flag instead.

---

 src/mesa/state_tracker/st_atom.c          |   23 ++---------------------
 src/mesa/state_tracker/st_atom_constbuf.c |   10 ++--------
 2 files changed, 4 insertions(+), 29 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
index f790922..ff7d388 100644
--- a/src/mesa/state_tracker/st_atom.c
+++ b/src/mesa/state_tracker/st_atom.c
@@ -37,11 +37,8 @@
 
        
 
-/* This is used to initialize st->atoms[].  We could use this list
- * directly except for a single atom, st_update_constants, which has a
- * .dirty value which changes according to the parameters of the
- * current fragment and vertex programs, and so cannot be a static
- * value.
+/**
+ * This is used to initialize st->atoms[].
  */
 static const struct st_tracked_state *atoms[] =
 {
@@ -67,25 +64,9 @@ static const struct st_tracked_state *atoms[] =
 
 void st_init_atoms( struct st_context *st )
 {
-   GLuint i;
-
    st->atoms = _mesa_malloc(sizeof(atoms));
    st->nr_atoms = sizeof(atoms)/sizeof(*atoms);
    memcpy(st->atoms, atoms, sizeof(atoms));
-
-   /* Patch in a pointer to the dynamic state atom:
-    */
-   for (i = 0; i < st->nr_atoms; i++) {
-      if (st->atoms[i] == &st_update_vs_constants) {
-	 st->atoms[i] = &st->constants.tracked_state[PIPE_SHADER_VERTEX];
-	 st->atoms[i][0] = st_update_vs_constants;
-      }
-
-      if (st->atoms[i] == &st_update_fs_constants) {
-	 st->atoms[i] = &st->constants.tracked_state[PIPE_SHADER_FRAGMENT];
-	 st->atoms[i][0] = st_update_fs_constants;
-      }
-   }
 }
 
 
diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c
index ec3605e..c31b120 100644
--- a/src/mesa/state_tracker/st_atom_constbuf.c
+++ b/src/mesa/state_tracker/st_atom_constbuf.c
@@ -62,12 +62,6 @@ void st_upload_constants( struct st_context *st,
    if (params && params->NumParameters) {
       const uint paramBytes = params->NumParameters * sizeof(GLfloat) * 4;
 
-      /* Update our own dependency flags.  This works because this
-       * function will also be called whenever the program changes.
-       */
-      st->constants.tracked_state[id].dirty.mesa =
-         (params->StateFlags | _NEW_PROGRAM);
-
       _mesa_load_state_parameters(st->ctx, params);
 
       /* We always need to get a new buffer, to keep the drivers simple and
@@ -111,7 +105,7 @@ static void update_vs_constants(struct st_context *st )
 const struct st_tracked_state st_update_vs_constants = {
    "st_update_vs_constants",				/* name */
    {							/* dirty */
-      0,  /* set dynamically above */			/* mesa */
+      _NEW_PROGRAM_CONSTANTS,
       ST_NEW_VERTEX_PROGRAM,				/* st */
    },
    update_vs_constants					/* update */
@@ -130,7 +124,7 @@ static void update_fs_constants(struct st_context *st )
 const struct st_tracked_state st_update_fs_constants = {
    "st_update_fs_constants",				/* name */
    {							/* dirty */
-      0,  /* set dynamically above */			/* mesa */
+      _NEW_PROGRAM_CONSTANTS,
       ST_NEW_FRAGMENT_PROGRAM,				/* st */
    },
    update_fs_constants					/* update */




More information about the mesa-commit mailing list