softpipe: Don't use mag filter for gather op
authorGert Wollny <gert.wollny@collabora.com>
Sun, 7 Apr 2019 07:39:22 +0000 (09:39 +0200)
committerGert Wollny <gert.wollny@collabora.com>
Tue, 9 Apr 2019 07:50:13 +0000 (09:50 +0200)
For the gather op no magnifictaion filter is provided, so always use
the filter given for minification (which is the linear filter)

Fixes: 0dff1533f25951adda3c36be6d9efa944741befb
    softpipe: Use mag texture filter also for clamped lod == 0

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/softpipe/sp_tex_sample.c

index 1b40e35..d20b7f9 100644 (file)
@@ -1956,7 +1956,7 @@ mip_filter_linear(const struct sp_sampler_view *sp_sview,
       args.p = p[j];
       args.face_id = filt_args->faces[j];
 
-      if (lod[j] <= 0.0) {
+      if (lod[j] <= 0.0 && !args.gather_only) {
          args.level = psview->u.tex.first_level;
          mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
       }
@@ -2040,7 +2040,7 @@ mip_filter_nearest(const struct sp_sampler_view *sp_sview,
       args.p = p[j];
       args.face_id = filt_args->faces[j];
 
-      if (lod[j] <= 0.0) {
+      if (lod[j] <= 0.0 && !args.gather_only) {
          args.level = psview->u.tex.first_level;
          mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
       } else {
@@ -2100,7 +2100,7 @@ mip_filter_none(const struct sp_sampler_view *sp_sview,
       args.t = t[j];
       args.p = p[j];
       args.face_id = filt_args->faces[j];
-      if (lod[j] <= 0.0f) {
+      if (lod[j] <= 0.0f && !args.gather_only) {
          mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
       }
       else {