r600g: Evergreen has two extra frac_bits for the sampler LOD state.
authorHenri Verbeet <hverbeet@gmail.com>
Mon, 15 Nov 2010 21:18:12 +0000 (22:18 +0100)
committerHenri Verbeet <hverbeet@gmail.com>
Mon, 15 Nov 2010 21:20:12 +0000 (22:20 +0100)
The (piglit) mipmap_limits test shows the issue very clearly.

src/gallium/drivers/r600/evergreen_state.c

index 4725b5e75e2f7ca99487ebc0de1453a54c01c129..208959dbaacfe9ef1434614d12bd8426e7d19c28 100644 (file)
@@ -323,11 +323,11 @@ static void *evergreen_create_sampler_state(struct pipe_context *ctx,
                        S_03C000_BORDER_COLOR_TYPE(uc.ui ? V_03C000_SQ_TEX_BORDER_COLOR_REGISTER : 0), 0xFFFFFFFF, NULL);
        /* FIXME LOD it depends on texture base level ... */
        r600_pipe_state_add_reg(rstate, R_03C004_SQ_TEX_SAMPLER_WORD1_0,
-                       S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 6)) |
-                       S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 6)),
+                       S_03C004_MIN_LOD(S_FIXED(CLAMP(state->min_lod, 0, 15), 8)) |
+                       S_03C004_MAX_LOD(S_FIXED(CLAMP(state->max_lod, 0, 15), 8)),
                        0xFFFFFFFF, NULL);
        r600_pipe_state_add_reg(rstate, R_03C008_SQ_TEX_SAMPLER_WORD2_0,
-                               S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 6)) |
+                               S_03C008_LOD_BIAS(S_FIXED(CLAMP(state->lod_bias, -16, 16), 8)) |
                                S_03C008_TYPE(1),
                                0xFFFFFFFF, NULL);