Module: Mesa
Branch: master
Commit: 79f9a106b90bab7ff305b5f92cb8501d66c497ea
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=79f9a106b90bab7ff305b5f92cb8501d66c497ea

Author: Ilia Mirkin <imir...@alum.mit.edu>
Date:   Tue Dec  2 00:27:09 2014 -0500

freedreno/a3xx: implement anisotropic filtering

Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu>

---

 src/gallium/drivers/freedreno/a3xx/fd3_texture.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c 
b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c
index c35f9b3..567f6c7 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c
@@ -68,13 +68,13 @@ tex_clamp(unsigned wrap, bool clamp_to_edge)
 }
 
 static enum a3xx_tex_filter
-tex_filter(unsigned filter)
+tex_filter(unsigned filter, bool aniso)
 {
        switch (filter) {
        case PIPE_TEX_FILTER_NEAREST:
                return A3XX_TEX_NEAREST;
        case PIPE_TEX_FILTER_LINEAR:
-               return A3XX_TEX_LINEAR;
+               return aniso ? A3XX_TEX_ANISO : A3XX_TEX_LINEAR;
        default:
                DBG("invalid filter: %u", filter);
                return 0;
@@ -86,6 +86,7 @@ fd3_sampler_state_create(struct pipe_context *pctx,
                const struct pipe_sampler_state *cso)
 {
        struct fd3_sampler_stateobj *so = CALLOC_STRUCT(fd3_sampler_stateobj);
+       unsigned aniso = util_last_bit(MIN2(cso->max_anisotropy >> 1, 8));
        bool miplinear = false;
        bool clamp_to_edge;
 
@@ -115,8 +116,9 @@ fd3_sampler_state_create(struct pipe_context *pctx,
        so->texsamp0 =
                        COND(!cso->normalized_coords, 
A3XX_TEX_SAMP_0_UNNORM_COORDS) |
                        COND(miplinear, A3XX_TEX_SAMP_0_MIPFILTER_LINEAR) |
-                       A3XX_TEX_SAMP_0_XY_MAG(tex_filter(cso->mag_img_filter)) 
|
-                       A3XX_TEX_SAMP_0_XY_MIN(tex_filter(cso->min_img_filter)) 
|
+                       A3XX_TEX_SAMP_0_XY_MAG(tex_filter(cso->mag_img_filter, 
aniso)) |
+                       A3XX_TEX_SAMP_0_XY_MIN(tex_filter(cso->min_img_filter, 
aniso)) |
+                       A3XX_TEX_SAMP_0_ANISO(aniso) |
                        A3XX_TEX_SAMP_0_WRAP_S(tex_clamp(cso->wrap_s, 
clamp_to_edge)) |
                        A3XX_TEX_SAMP_0_WRAP_T(tex_clamp(cso->wrap_t, 
clamp_to_edge)) |
                        A3XX_TEX_SAMP_0_WRAP_R(tex_clamp(cso->wrap_r, 
clamp_to_edge));

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to