@@ -113,7 +113,8 @@ static void apply_texture_parameters(TextureBinding *binding,
113
113
unsigned int filter ,
114
114
unsigned int address ,
115
115
bool is_bordered ,
116
- uint32_t border_color )
116
+ uint32_t border_color ,
117
+ uint32_t max_anisotropy )
117
118
{
118
119
unsigned int min_filter = GET_MASK (filter , NV_PGRAPH_TEXFILTER0_MIN );
119
120
unsigned int mag_filter = GET_MASK (filter , NV_PGRAPH_TEXFILTER0_MAG );
@@ -181,6 +182,8 @@ static void apply_texture_parameters(TextureBinding *binding,
181
182
needs_border_color = needs_border_color || binding -> addrp == NV_PGRAPH_TEXADDRESS0_ADDRU_BORDER ;
182
183
}
183
184
185
+ glTexParameterf (binding -> gl_target , GL_TEXTURE_MAX_ANISOTROPY , max_anisotropy );
186
+
184
187
if (!is_bordered && needs_border_color ) {
185
188
if (!binding -> border_color_set || binding -> border_color != border_color ) {
186
189
/* FIXME: Color channels might be wrong order */
@@ -219,6 +222,9 @@ void pgraph_gl_bind_textures(NV2AState *d)
219
222
uint32_t filter = pgraph_reg_r (pg , NV_PGRAPH_TEXFILTER0 + i * 4 );
220
223
uint32_t address = pgraph_reg_r (pg , NV_PGRAPH_TEXADDRESS0 + i * 4 );
221
224
uint32_t border_color = pgraph_reg_r (pg , NV_PGRAPH_BORDERCOLOR0 + i * 4 );
225
+ uint32_t max_anisotropy =
226
+ 1 << (GET_MASK (pgraph_reg_r (pg , NV_PGRAPH_TEXCTL0_0 + i * 4 ),
227
+ NV_PGRAPH_TEXCTL0_0_MAX_ANISOTROPY ));
222
228
223
229
/* Check for unsupported features */
224
230
if (filter & NV_PGRAPH_TEXFILTER0_ASIGNED ) NV2A_UNIMPLEMENTED ("NV_PGRAPH_TEXFILTER0_ASIGNED" );
@@ -268,7 +274,8 @@ void pgraph_gl_bind_textures(NV2AState *d)
268
274
filter ,
269
275
address ,
270
276
state .border ,
271
- border_color );
277
+ border_color ,
278
+ max_anisotropy );
272
279
continue ;
273
280
}
274
281
}
@@ -378,7 +385,8 @@ void pgraph_gl_bind_textures(NV2AState *d)
378
385
filter ,
379
386
address ,
380
387
state .border ,
381
- border_color );
388
+ border_color ,
389
+ max_anisotropy );
382
390
383
391
if (r -> texture_binding [i ]) {
384
392
if (r -> texture_binding [i ]-> gl_target != binding -> gl_target ) {
0 commit comments