i965: Ignore anisotropic filtering in nearest mode.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 2 May 2016 02:09:14 +0000 (19:09 -0700)
committerDylan Baker <dylan@pnwbakers.com>
Mon, 19 Jun 2017 17:09:06 +0000 (10:09 -0700)
This fixes both Europa Universalis IV and Stellaris rendering on i965.
This was tested on SKL.

This fix was discovered by Jakub Szuppe at Stream HPC
(https://streamhpc.com/).

bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96958
bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95530
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Dylan Baker <dylan@pnwbakers.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: 17.1 <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/brw_sampler_state.c

index 5d57a35f20f311849b21c6ccba1fe55b7089cad7..26bf0cb3e2d59425928867449220ff232a472aa6 100644 (file)
@@ -450,8 +450,10 @@ brw_update_sampler_state(struct brw_context *brw,
    /* Enable anisotropic filtering if desired. */
    unsigned max_anisotropy = BRW_ANISORATIO_2;
    if (sampler->MaxAnisotropy > 1.0f) {
-      min_filter = BRW_MAPFILTER_ANISOTROPIC;
-      mag_filter = BRW_MAPFILTER_ANISOTROPIC;
+      if (min_filter == BRW_MAPFILTER_LINEAR)
+         min_filter = BRW_MAPFILTER_ANISOTROPIC;
+      if (mag_filter == BRW_MAPFILTER_LINEAR)
+         mag_filter = BRW_MAPFILTER_ANISOTROPIC;
 
       if (sampler->MaxAnisotropy > 2.0f) {
         max_anisotropy =