r600/compute: add support for TGSI compute shaders. (v1.1)
[mesa.git] / src / gallium / drivers / svga / svga_shader.c
index 5ff6f034cf8a134844dfd02f4ef4eb8711054138..9e2b65771cd2dfefa790f7d273ba231061617a2f 100644 (file)
@@ -192,7 +192,6 @@ svga_init_shader_key_common(const struct svga_context *svga,
                             struct svga_compile_key *key)
 {
    unsigned i, idx = 0;
-   const enum pipe_swizzle *swizzle_tab;
 
    assert(shader < ARRAY_SIZE(svga->curr.num_sampler_views));
 
@@ -224,16 +223,16 @@ svga_init_shader_key_common(const struct svga_context *svga,
             }
          }
 
-         swizzle_tab = (view->texture->target != PIPE_BUFFER &&
-                        !util_format_has_alpha(view->format) &&
-                        svga_texture_device_format_has_alpha(view->texture)) ?
-            set_alpha : copy_alpha;
-
          /* If we have a non-alpha view into an svga3d surface with an
           * alpha channel, then explicitly set the alpha channel to 1
           * when sampling. Note that we need to check the
           * actual device format to cover also imported surface cases.
           */
+         const enum pipe_swizzle *swizzle_tab =
+            (view->texture->target != PIPE_BUFFER &&
+             !util_format_has_alpha(view->format) &&
+             svga_texture_device_format_has_alpha(view->texture)) ?
+            set_alpha : copy_alpha;
 
          key->tex[i].swizzle_r = swizzle_tab[view->swizzle_r];
          key->tex[i].swizzle_g = swizzle_tab[view->swizzle_g];
@@ -247,6 +246,11 @@ svga_init_shader_key_common(const struct svga_context *svga,
             key->tex[i].width_height_idx = idx++;
             key->tex[i].unnormalized = TRUE;
             ++key->num_unnormalized_coords;
+
+            if (sampler->magfilter == SVGA3D_TEX_FILTER_NEAREST ||
+                sampler->minfilter == SVGA3D_TEX_FILTER_NEAREST) {
+                key->tex[i].texel_bias = TRUE;
+            }
          }
       }
    }