broadcom/vc5: Add support for anisotropic filtering.
authorEric Anholt <eric@anholt.net>
Thu, 2 Nov 2017 19:24:17 +0000 (12:24 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 7 Nov 2017 17:40:25 +0000 (09:40 -0800)
src/gallium/drivers/vc5/vc5_emit.c

index ea646e7d51041fb7b6e54628b4750ca6236425f3..24682d90669dea5c6fb08cba42b0534b8ac018c4 100644 (file)
@@ -166,6 +166,15 @@ emit_one_texture(struct vc5_context *vc5, struct vc5_texture_stateobj *stage_tex
         if (mag_img_filter == PIPE_TEX_FILTER_NEAREST)
                 unpacked.filter++;
 
+        if (psampler->max_anisotropy > 8)
+                unpacked.filter = V3D_TMU_FILTER_ANISOTROPIC_16_1;
+        else if (psampler->max_anisotropy > 4)
+                unpacked.filter = V3D_TMU_FILTER_ANISOTROPIC_8_1;
+        else if (psampler->max_anisotropy > 2)
+                unpacked.filter = V3D_TMU_FILTER_ANISOTROPIC_4_1;
+        else if (psampler->max_anisotropy)
+                unpacked.filter = V3D_TMU_FILTER_ANISOTROPIC_2_1;
+
         uint8_t packed[cl_packet_length(TEXTURE_SHADER_STATE)];
         cl_packet_pack(TEXTURE_SHADER_STATE)(&job->indirect, packed, &unpacked);