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 85c99bc1822e01c23d07e27e64adde88e2794a7f..32b8b8f277b65581f14f04ca9523bbb83298705e 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 1b70e279339a891e8a8e570e2821af90bd193ab7..2f628206cae299e02e5cfac52fac7873b39a812c 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 1aa9da848477fb91584738f25c4eddf587a1a1d4..a49698cda46dda6081158068dc9e93f923a33519 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 bb83f7d12160e7252ce9a495d6d3769df784a2ec..f82c33e572f12ee65aecdbf26be3fd7cc664fab0 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 5872ae3e743940afe3ec23edc1d7b86c106fe839..42d6b75cb3e5722d54e5961e692e962c394d2de2 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 c732881c39d92dcd857068945722b4e68dabe636..dc68aa3d9731ea7024f86490f77a4c1e6c8b01e2 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,