r300g: fix regression in texdepth.
authorDave Airlie <airlied@redhat.com>
Thu, 15 Apr 2010 04:56:20 +0000 (14:56 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 15 Apr 2010 04:56:20 +0000 (14:56 +1000)
texdepth stopped working when npot went in, this brings it back
to life.

< MostAwesomeDude> That looks like what I was going to do.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r300/r300_fs.c

index 3cddf98675a88a8749d5112ea0be35dbab3c248d..dab57fdcc77e73d2a489b81b2785f0d00646f8b3 100644 (file)
@@ -140,14 +140,11 @@ static void get_external_state(
 
     for (i = 0; i < texstate->sampler_state_count; i++) {
         struct r300_sampler_state* s = texstate->sampler_states[i];
-        struct r300_texture *t;
 
-        if (!s || !texstate->sampler_views[i]) {
+        if (!s) {
             continue;
         }
 
-        t = (struct r300_texture*)texstate->sampler_views[i]->base.texture;
-
         if (s->state.compare_mode == PIPE_TEX_COMPARE_R_TO_TEXTURE) {
             /* XXX Gallium doesn't provide us with any information regarding
              * this mode, so we are screwed. I'm setting 0 = LUMINANCE. */
@@ -157,7 +154,12 @@ static void get_external_state(
             state->unit[i].texture_compare_func = s->state.compare_func;
         }
 
-        state->unit[i].fake_npot = t->uses_pitch;
+        if (texstate->sampler_views[i]) {
+            struct r300_texture *t;
+            t = (struct r300_texture*)texstate->sampler_views[i]->base.texture;
+
+            state->unit[i].fake_npot = t->uses_pitch;
+        }
         state->unit[i].non_normalized_coords = !s->state.normalized_coords;
 
         /* XXX this should probably take into account STR, not just S. */