Merge branch '7.8'
[mesa.git] / src / mesa / state_tracker / st_atom.c
index ff7d388ddecf103fe1ccc29120839fa2699e0972..9fa4dae5ca981a7382dc9c01fcffecb9cc9b24c6 100644 (file)
 #include "st_atom.h"
 #include "st_cb_bitmap.h"
 #include "st_program.h"
+#include "st_manager.h"
+
+#include "pipe/p_context.h"
 
-       
 
 /**
  * This is used to initialize st->atoms[].
@@ -46,7 +48,8 @@ static const struct st_tracked_state *atoms[] =
    &st_update_clip,
 
    &st_finalize_textures,
-   &st_update_shader,
+   &st_update_fp,
+   &st_update_vp,
 
    &st_update_rasterizer,
    &st_update_polygon_stipple,
@@ -64,18 +67,13 @@ static const struct st_tracked_state *atoms[] =
 
 void st_init_atoms( struct st_context *st )
 {
-   st->atoms = _mesa_malloc(sizeof(atoms));
-   st->nr_atoms = sizeof(atoms)/sizeof(*atoms);
-   memcpy(st->atoms, atoms, sizeof(atoms));
+   /* no-op */
 }
 
 
 void st_destroy_atoms( struct st_context *st )
 {
-   if (st->atoms) {
-      _mesa_free(st->atoms);
-      st->atoms = NULL;
-   }
+   /* no-op */
 }
 
 
@@ -139,10 +137,12 @@ void st_validate_state( struct st_context *st )
 
    check_program_state( st );
 
+   st_manager_validate_framebuffers(st);
+
    if (state->st == 0)
       return;
 
-//   _mesa_printf("%s %x/%x\n", __FUNCTION__, state->mesa, state->st);
+   /*printf("%s %x/%x\n", __FUNCTION__, state->mesa, state->st);*/
 
    if (1) {
       /* Debug version which enforces various sanity checks on the
@@ -153,21 +153,21 @@ void st_validate_state( struct st_context *st )
       memset(&examined, 0, sizeof(examined));
       prev = *state;
 
-      for (i = 0; i < st->nr_atoms; i++) {      
-        const struct st_tracked_state *atom = st->atoms[i];
+      for (i = 0; i < Elements(atoms); i++) {   
+        const struct st_tracked_state *atom = atoms[i];
         struct st_state_flags generated;
         
-//      _mesa_printf("atom %s %x/%x\n", atom->name, atom->dirty.mesa, atom->dirty.st);
+        /*printf("atom %s %x/%x\n", atom->name, atom->dirty.mesa, atom->dirty.st);*/
 
         if (!(atom->dirty.mesa || atom->dirty.st) ||
             !atom->update) {
-           _mesa_printf("malformed atom %s\n", atom->name);
+           printf("malformed atom %s\n", atom->name);
            assert(0);
         }
 
         if (check_state(state, &atom->dirty)) {
-           st->atoms[i]->update( st );
-//         _mesa_printf("after: %x\n", atom->dirty.mesa);
+           atoms[i]->update( st );
+           /*printf("after: %x\n", atom->dirty.mesa);*/
         }
 
         accumulate_state(&examined, &atom->dirty);
@@ -180,15 +180,13 @@ void st_validate_state( struct st_context *st )
         assert(!check_state(&examined, &generated));
         prev = *state;
       }
-//      _mesa_printf("\n");
+      /*printf("\n");*/
 
    }
    else {
-      const GLuint nr = st->nr_atoms;
-
-      for (i = 0; i < nr; i++) {        
-        if (check_state(state, &st->atoms[i]->dirty))
-           st->atoms[i]->update( st );
+      for (i = 0; i < Elements(atoms); i++) {   
+        if (check_state(state, &atoms[i]->dirty))
+           atoms[i]->update( st );
       }
    }