[Mesa-dev] [PATCH 2/3] mesa: Implement GL_ARB_texture_filter_anisotropic
Adam Jackson
ajax at redhat.com
Tue Aug 8 15:52:43 UTC 2017
The only difference from the EXT version is bumping the minmax to 16, so
just hit all the drivers at once.
Signed-off-by: Adam Jackson <ajax at redhat.com>
---
docs/features.txt | 4 +++-
src/glx/glxextensions.c | 1 +
src/glx/glxextensions.h | 1 +
src/mesa/drivers/dri/i965/intel_extensions.c | 1 +
src/mesa/drivers/dri/r200/r200_context.c | 1 +
src/mesa/drivers/dri/radeon/radeon_context.c | 1 +
src/mesa/main/extensions.c | 1 +
src/mesa/main/extensions_table.h | 1 +
src/mesa/main/mtypes.h | 1 +
src/mesa/main/version.c | 2 +-
src/mesa/state_tracker/st_extensions.c | 4 ++++
11 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/docs/features.txt b/docs/features.txt
index ac7645d069..b9cbd8818f 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -231,10 +231,12 @@ GL 4.6, GLSL 4.60
GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi)
GL_ARB_shader_group_vote DONE (i965, nvc0, radeonsi)
GL_ARB_spirv_extensions in progress (Nicolai Hähnle, Ian Romanick)
- GL_ARB_texture_filter_anisotropic not started
+ GL_ARB_texture_filter_anisotropic DONE (i965, nv40+, all radeons, softpipe (*), llvmpipe (*))
GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, radeonsi)
GL_KHR_no_error started (Timothy Arceri)
+(*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting
+
These are the extensions cherry-picked to make GLES 3.1
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi
diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index 22b078ce48..88bf0de3e6 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -190,6 +190,7 @@ static const struct extension_info known_gl_extensions[] = {
{ GL(ARB_texture_env_combine), VER(1,3), Y, N, N, N },
{ GL(ARB_texture_env_crossbar), VER(1,4), Y, N, N, N },
{ GL(ARB_texture_env_dot3), VER(1,3), Y, N, N, N },
+ { GL(ARB_texture_filter_anisotropic), VER(0,0), Y, N, N, N },
{ GL(ARB_texture_mirrored_repeat), VER(1,4), Y, N, N, N },
{ GL(ARB_texture_non_power_of_two), VER(1,5), Y, N, N, N },
{ GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N },
diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h
index 21ad02a44b..2a595516ee 100644
--- a/src/glx/glxextensions.h
+++ b/src/glx/glxextensions.h
@@ -101,6 +101,7 @@ enum
GL_ARB_texture_env_combine_bit,
GL_ARB_texture_env_crossbar_bit,
GL_ARB_texture_env_dot3_bit,
+ GL_ARB_texture_filter_anisotropic_bit,
GL_ARB_texture_mirrored_repeat_bit,
GL_ARB_texture_non_power_of_two_bit,
GL_ARB_texture_rectangle_bit,
diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
index b91bbdc8d9..c3cd8004a1 100644
--- a/src/mesa/drivers/dri/i965/intel_extensions.c
+++ b/src/mesa/drivers/dri/i965/intel_extensions.c
@@ -80,6 +80,7 @@ intelInitExtensions(struct gl_context *ctx)
ctx->Extensions.ARB_texture_env_combine = true;
ctx->Extensions.ARB_texture_env_crossbar = true;
ctx->Extensions.ARB_texture_env_dot3 = true;
+ ctx->Extensions.ARB_texture_filter_anisotropic = true;
ctx->Extensions.ARB_texture_float = true;
ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true;
ctx->Extensions.ARB_texture_non_power_of_two = true;
diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index ca1023c5c3..0a27985de7 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -339,6 +339,7 @@ GLboolean r200CreateContext( gl_api api,
ctx->Extensions.ARB_texture_env_combine = true;
ctx->Extensions.ARB_texture_env_dot3 = true;
ctx->Extensions.ARB_texture_env_crossbar = true;
+ ctx->Extensions.ARB_texture_filter_anisotropic = true;
ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true;
ctx->Extensions.ARB_vertex_program = true;
ctx->Extensions.ATI_fragment_shader = (ctx->Const.MaxTextureUnits == 6);
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
index 0c016b4da4..28a79860d7 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -300,6 +300,7 @@ r100CreateContext( gl_api api,
ctx->Extensions.ARB_texture_env_combine = true;
ctx->Extensions.ARB_texture_env_crossbar = true;
ctx->Extensions.ARB_texture_env_dot3 = true;
+ ctx->Extensions.ARB_texture_filter_anisotropic = true;
ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true;
ctx->Extensions.ATI_texture_env_combine3 = true;
ctx->Extensions.ATI_texture_mirror_once = true;
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 62a731675d..5a5fdd247f 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -130,6 +130,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
+ ctx->Extensions.ARB_texture_filter_anisotropic = GL_TRUE;
#ifdef TEXTURE_FLOAT_ENABLED
ctx->Extensions.ARB_texture_float = GL_TRUE;
#endif
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 347a6197ed..d096260891 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -144,6 +144,7 @@ EXT(ARB_texture_env_add , dummy_true
EXT(ARB_texture_env_combine , ARB_texture_env_combine , GLL, x , x , x , 2001)
EXT(ARB_texture_env_crossbar , ARB_texture_env_crossbar , GLL, x , x , x , 2001)
EXT(ARB_texture_env_dot3 , ARB_texture_env_dot3 , GLL, x , x , x , 2001)
+EXT(ARB_texture_filter_anisotropic , ARB_texture_filter_anisotropic , GLL, GLC, x , x , 2017)
EXT(ARB_texture_float , ARB_texture_float , GLL, GLC, x , x , 2004)
EXT(ARB_texture_gather , ARB_texture_gather , GLL, GLC, x , x , 2009)
EXT(ARB_texture_mirror_clamp_to_edge , ARB_texture_mirror_clamp_to_edge , GLL, GLC, x , x , 2013)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 49eb7d54bd..3caadcfceb 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4084,6 +4084,7 @@ struct gl_extensions
GLboolean ARB_texture_env_combine;
GLboolean ARB_texture_env_crossbar;
GLboolean ARB_texture_env_dot3;
+ GLboolean ARB_texture_filter_anisotropic;
GLboolean ARB_texture_float;
GLboolean ARB_texture_gather;
GLboolean ARB_texture_mirror_clamp_to_edge;
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 7cb4ee7f9c..59e7b89ff6 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -395,7 +395,7 @@ compute_version(const struct gl_extensions *extensions,
extensions->ARB_shader_atomic_counter_ops &&
extensions->ARB_shader_draw_parameters &&
extensions->ARB_shader_group_vote &&
- /* extensions->ARB_texture_filter_anisotropic */ 0 &&
+ extensions->ARB_texture_filter_anisotropic &&
extensions->ARB_transform_feedback_overflow_query);
if (ver_4_6) {
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index e37814412a..6dc9c779dd 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -1250,6 +1250,10 @@ void st_init_extensions(struct pipe_screen *screen,
}
}
+ if (extensions->EXT_texture_filter_anisotropic &&
+ screen->get_paramf(screen, PIPE_CAPF_MAX_TEXTURE_ANISOTROPY) >= 16.0)
+ extensions->ARB_texture_filter_anisotropic = GL_TRUE;
+
extensions->KHR_robustness = extensions->ARB_robust_buffer_access_behavior;
/* If we support ES 3.1, we support the ES3_1_compatibility ext. However
--
2.13.0
More information about the mesa-dev
mailing list