plug in texture/sampler state update
authorBrian <brian@i915.localnet.net>
Tue, 7 Aug 2007 21:12:22 +0000 (15:12 -0600)
committerBrian <brian@i915.localnet.net>
Tue, 7 Aug 2007 21:12:22 +0000 (15:12 -0600)
src/mesa/state_tracker/st_atom.c
src/mesa/state_tracker/st_atom.h
src/mesa/state_tracker/st_atom_sampler.c
src/mesa/state_tracker/st_atom_texture.c
src/mesa/state_tracker/st_cb_texture.c
src/mesa/state_tracker/st_cb_texture.h

index 85c99bc..32b8b8f 100644 (file)
@@ -54,6 +54,8 @@ static const struct st_tracked_state *atoms[] =
    &st_update_scissor,
    &st_update_blend,
    &st_update_stencil,
+   &st_update_sampler,
+   &st_update_texture,
    /* will be patched out at runtime */
 /*    &st_update_constants */
 };
index 1b70e27..2f62820 100644 (file)
@@ -57,6 +57,8 @@ const struct st_tracked_state st_update_constants;
 const struct st_tracked_state st_update_scissor;
 const struct st_tracked_state st_update_blend;
 const struct st_tracked_state st_update_stencil;
+const struct st_tracked_state st_update_sampler;
+const struct st_tracked_state st_update_texture;
 
 
 #endif
index 1aa9da8..a49698c 100644 (file)
@@ -103,14 +103,16 @@ update_samplers(struct st_context *st)
 
       memset(&sampler, 0, sizeof(sampler));
 
-      sampler.wrap_s = gl_wrap_to_sp(texobj->WrapS);
-      sampler.wrap_t = gl_wrap_to_sp(texobj->WrapT);
-      sampler.wrap_r = gl_wrap_to_sp(texobj->WrapR);
+      if (texobj) {
+         sampler.wrap_s = gl_wrap_to_sp(texobj->WrapS);
+         sampler.wrap_t = gl_wrap_to_sp(texobj->WrapT);
+         sampler.wrap_r = gl_wrap_to_sp(texobj->WrapR);
 
-      sampler.min_filter = gl_filter_to_sp(texobj->MinFilter);
-      sampler.mag_filter = gl_filter_to_sp(texobj->MagFilter);
+         sampler.min_filter = gl_filter_to_sp(texobj->MinFilter);
+         sampler.mag_filter = gl_filter_to_sp(texobj->MagFilter);
 
-      /* XXX more sampler state here */
+         /* XXX more sampler state here */
+      }
 
       if (memcmp(&sampler, &st->state.sampler[u], sizeof(sampler)) != 0) {
          /* state has changed */
index bb83f7d..f82c33e 100644 (file)
 #include "pipe/p_defines.h"
 
 
-
+/**
+ * XXX This needs some work yet....
+ * Need to "upload" texture images at appropriate times.
+ */
 static void 
 update_textures(struct st_context *st)
 {
index 5872ae3..42d6b75 100644 (file)
@@ -104,6 +104,14 @@ st_texture_image(struct gl_texture_image *img)
 }
 
 
+struct pipe_mipmap_tree *
+st_get_texobj_mipmap_tree(struct gl_texture_object *texObj)
+{
+   struct st_texture_object *stObj = st_texture_object(texObj);
+   return stObj->mt;
+}
+
+
 static int
 intel_compressed_num_bytes(GLuint mesaFormat)
 {
index c732881..dc68aa3 100644 (file)
@@ -2,6 +2,10 @@
 #define ST_CB_TEXTURE_H
 
 
+extern struct pipe_mipmap_tree *
+st_get_texobj_mipmap_tree(struct gl_texture_object *texObj);
+
+
 extern GLuint
 st_finalize_mipmap_tree(GLcontext *ctx,
                         struct pipe_context *pipe, GLuint unit,