From 2f99f95288562382469f1e043a447ae78d7c69d7 Mon Sep 17 00:00:00 2001 From: sarbes Date: Mon, 22 Sep 2025 12:25:22 +0200 Subject: [PATCH] lima: wire up anisotropic filtering v2: - AF seems to be log2 based, so convert accordingly v3: - actually expose AF v4: - REALLY expose AF - remove log2 modifier assert - use log2 modifier - rename AF field - advertise AF support in features Reviewed-by: Vasily Khoruzhick Reviewed-by: Erik Faye-Lund Part-of: --- docs/features.txt | 2 +- src/gallium/drivers/lima/genxml/common.xml | 2 +- src/gallium/drivers/lima/genxml/gen_pack.py | 2 -- src/gallium/drivers/lima/lima_screen.c | 1 + src/gallium/drivers/lima/lima_texture.c | 2 ++ 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 8c78cce677e..f4f56d8bad0 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -236,7 +236,7 @@ GL 4.6, GLSL 4.60 -- all DONE: radeonsi, virgl, zink, iris, crocus/gen7+, d3d12, GL_ARB_shader_draw_parameters DONE (freedreno/a6xx+, nvc0, crocus/gen6+, r600/evergreen+) GL_ARB_shader_group_vote DONE (freedreno/a6xx, nvc0, crocus, r600) GL_ARB_spirv_extensions DONE (freedreno, r600) - GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, v3d, panfrost/v6+, crocus) + GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, v3d, panfrost/v6+, crocus, lima) GL_ARB_transform_feedback_overflow_query DONE (freedreno/a6xx+, nvc0, softpipe, crocus/gen6+, r600/evergreen+) GL_KHR_no_error DONE (all drivers) diff --git a/src/gallium/drivers/lima/genxml/common.xml b/src/gallium/drivers/lima/genxml/common.xml index 535166cd9b0..c7574d13128 100644 --- a/src/gallium/drivers/lima/genxml/common.xml +++ b/src/gallium/drivers/lima/genxml/common.xml @@ -170,7 +170,7 @@ - + diff --git a/src/gallium/drivers/lima/genxml/gen_pack.py b/src/gallium/drivers/lima/genxml/gen_pack.py index 9cb502e9416..c970d1f003f 100644 --- a/src/gallium/drivers/lima/genxml/gen_pack.py +++ b/src/gallium/drivers/lima/genxml/gen_pack.py @@ -262,8 +262,6 @@ class Group(object): print(f" assert((values->{field.name} & {mask}) == 0);") elif field.modifier[0] == "minus": print(f" assert(values->{field.name} >= {field.modifier[1]});") - elif field.modifier[0] == "log2": - print(f" assert(IS_POT_NONZERO(values->{field.name}));") for index in range(math.ceil(self.length / 4)): # Handle MBZ words diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index 066c216b703..56cbd79ac4a 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -210,6 +210,7 @@ lima_init_screen_caps(struct pipe_screen *screen) caps->max_point_size = caps->max_point_size_aa = 100.0f; + caps->anisotropic_filter = true; caps->max_texture_anisotropy = 16.0f; caps->max_texture_lod_bias = 15.0f; diff --git a/src/gallium/drivers/lima/lima_texture.c b/src/gallium/drivers/lima/lima_texture.c index e7e1b6ccb83..89ff7431b9b 100644 --- a/src/gallium/drivers/lima/lima_texture.c +++ b/src/gallium/drivers/lima/lima_texture.c @@ -179,6 +179,8 @@ lima_update_tex_desc(struct lima_context *ctx, struct lima_sampler_state *sample desc.max_lod = max_lod; desc.lod_bias = sampler->base.lod_bias; + desc.max_anisotropy = sampler->base.max_anisotropy; + switch (sampler->base.min_mip_filter) { case PIPE_TEX_MIPFILTER_LINEAR: desc.mipfilter = LIMA_MIPFILTER_LINEAR;