intel: fix max anisotropy supported
authorRoland Scheidegger <sroland@vmware.com>
Wed, 22 Apr 2009 15:37:18 +0000 (17:37 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 22 Apr 2009 15:38:06 +0000 (17:38 +0200)
i915 actually supports up to 4 (according to header file - not tested),
i965 up to 16 (code already handled this but slightly broken), so don't use 2
for all chips, even though angular dependency is very high.

src/mesa/drivers/dri/i915/i830_context.c
src/mesa/drivers/dri/i915/i915_context.c
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
src/mesa/drivers/dri/intel/intel_context.c

index 10b9bf371c3befabf2c690cbbf501ff70b0e4658..840946f908ddb5a3eaca23f74bae65669368efa1 100644 (file)
@@ -98,6 +98,8 @@ i830CreateContext(const __GLcontextModes * mesaVis,
    ctx->Const.MaxTextureRectSize = (1 << 11);
    ctx->Const.MaxTextureUnits = I830_TEX_UNITS;
 
+   ctx->Const.MaxTextureMaxAnisotropy = 2.0;
+
    ctx->Const.MaxDrawBuffers = 1;
 
    _tnl_init_vertices(ctx, ctx->Const.MaxArrayLockSize + 12,
index fdd2cf610963d30c4a01d53d90497c207e930825..1f9f363df926b87e27adcf008bbffcc81028db3c 100644 (file)
@@ -145,6 +145,8 @@ i915CreateContext(const __GLcontextModes * mesaVis,
    ctx->Const.MaxTextureRectSize = (1 << 11);
    ctx->Const.MaxTextureUnits = I915_TEX_UNITS;
 
+   ctx->Const.MaxTextureMaxAnisotropy = 4.0;
+
    /* GL_ARB_fragment_program limits - don't think Mesa actually
     * validates programs against these, and in any case one ARB
     * instruction can translate to more than one HW instruction, so
index d96ff2931027dd0a7b66fcc600d895d336601403..4dbe551d832bfa46c2227a34c2ec84f43160ab5c 100644 (file)
@@ -118,6 +118,8 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
    ctx->Const.MaxCubeTextureLevels = 12;
    ctx->Const.MaxTextureRectSize = (1<<12);
    
+   ctx->Const.MaxTextureMaxAnisotropy = 16.0;
+
    /* if conformance mode is set, swrast can handle any size AA point */
    ctx->Const.MaxPointSizeAA = 255.0;
 
index 1fc9f013727f87a99df57f1591414aad16514726..c604ef0162a75c209adc7af476a7b675262c76fb 100644 (file)
@@ -152,7 +152,7 @@ static void brw_update_sampler_state(struct wm_sampler_entry *key,
       sampler->ss0.mag_filter = BRW_MAPFILTER_ANISOTROPIC;
 
       if (key->max_aniso > 2.0) {
-        sampler->ss3.max_aniso = MAX2((key->max_aniso - 2) / 2,
+        sampler->ss3.max_aniso = MIN2((key->max_aniso - 2) / 2,
                                       BRW_ANISORATIO_16);
       }
    }
index 3436b8ecd300d7d324dd2e056008fa6fcf9f6eab..9b628dbc8e37f1cb5ebbca4e3bfa13b3be965267 100644 (file)
@@ -528,8 +528,6 @@ intelInitContext(struct intel_context *intel,
       }
    }
 
-   ctx->Const.MaxTextureMaxAnisotropy = 2.0;
-
    /* This doesn't yet catch all non-conformant rendering, but it's a
     * start.
     */