mesa: Implement GL_ARB_texture_filter_anisotropic
The only difference from the EXT version is bumping the minmax to 16, so just hit all the drivers at once. v2: Fix driver names, add to 17.3 release notes (Ilia Mirkin) Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -231,10 +231,12 @@ GL 4.6, GLSL 4.60
|
|||||||
GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi)
|
GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi)
|
||||||
GL_ARB_shader_group_vote 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_spirv_extensions in progress (Nicolai Hähnle, Ian Romanick)
|
||||||
GL_ARB_texture_filter_anisotropic not started
|
GL_ARB_texture_filter_anisotropic DONE (i965, nv50, nvc0, r600, radeonsi, softpipe (*), llvmpipe (*))
|
||||||
GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, radeonsi, llvmpipe, softpipe)
|
GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, radeonsi, llvmpipe, softpipe)
|
||||||
GL_KHR_no_error started (Timothy Arceri)
|
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
|
These are the extensions cherry-picked to make GLES 3.1
|
||||||
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi
|
GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi
|
||||||
|
|
||||||
|
@@ -45,6 +45,7 @@ Note: some of the new features are only available with certain drivers.
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>GL_ARB_transform_feedback_overflow_query on radeonsi</li>
|
<li>GL_ARB_transform_feedback_overflow_query on radeonsi</li>
|
||||||
|
<li>GL_ARB_texture_filter_anisotropic on i965, nv50, nvc0, r600, radeonsi</li>
|
||||||
<li>GL_EXT_memory_object on radeonsi</li>
|
<li>GL_EXT_memory_object on radeonsi</li>
|
||||||
<li>GL_EXT_memory_object_fd on radeonsi</li>
|
<li>GL_EXT_memory_object_fd on radeonsi</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@@ -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_combine), VER(1,3), Y, N, N, N },
|
||||||
{ GL(ARB_texture_env_crossbar), VER(1,4), 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_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_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_non_power_of_two), VER(1,5), Y, N, N, N },
|
||||||
{ GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N },
|
{ GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N },
|
||||||
|
@@ -101,6 +101,7 @@ enum
|
|||||||
GL_ARB_texture_env_combine_bit,
|
GL_ARB_texture_env_combine_bit,
|
||||||
GL_ARB_texture_env_crossbar_bit,
|
GL_ARB_texture_env_crossbar_bit,
|
||||||
GL_ARB_texture_env_dot3_bit,
|
GL_ARB_texture_env_dot3_bit,
|
||||||
|
GL_ARB_texture_filter_anisotropic_bit,
|
||||||
GL_ARB_texture_mirrored_repeat_bit,
|
GL_ARB_texture_mirrored_repeat_bit,
|
||||||
GL_ARB_texture_non_power_of_two_bit,
|
GL_ARB_texture_non_power_of_two_bit,
|
||||||
GL_ARB_texture_rectangle_bit,
|
GL_ARB_texture_rectangle_bit,
|
||||||
@@ -150,7 +151,6 @@ enum
|
|||||||
GL_EXT_texture_edge_clamp_bit,
|
GL_EXT_texture_edge_clamp_bit,
|
||||||
GL_EXT_texture_env_combine_bit,
|
GL_EXT_texture_env_combine_bit,
|
||||||
GL_EXT_texture_env_dot3_bit,
|
GL_EXT_texture_env_dot3_bit,
|
||||||
GL_EXT_texture_filter_anisotropic_bit,
|
|
||||||
GL_EXT_texture_integer_bit,
|
GL_EXT_texture_integer_bit,
|
||||||
GL_EXT_texture_lod_bit,
|
GL_EXT_texture_lod_bit,
|
||||||
GL_EXT_texture_lod_bias_bit,
|
GL_EXT_texture_lod_bias_bit,
|
||||||
@@ -223,11 +223,10 @@ enum
|
|||||||
|
|
||||||
/* Alias extension bits. These extensions exist in either vendor-specific
|
/* Alias extension bits. These extensions exist in either vendor-specific
|
||||||
* or EXT form and were later promoted to either EXT or ARB form. In all
|
* or EXT form and were later promoted to either EXT or ARB form. In all
|
||||||
* cases, the meaning is *exactly* the same. That's why
|
* cases, the meaning (to GLX) is *exactly* the same. That's why
|
||||||
* EXT_texture_env_combine is *NOT* an alias of ARB_texture_env_combine and
|
* EXT_texture_env_combine is *NOT* an alias of ARB_texture_env_combine and
|
||||||
* EXT_texture_env_dot3 is *NOT* an alias of ARB_texture_env_dot3. Be
|
* EXT_texture_env_dot3 is *NOT* an alias of ARB_texture_env_dot3. Be
|
||||||
* careful! When in doubt, src/mesa/main/extensions.c in the Mesa tree
|
* careful! When in doubt, src/mesa/main/extensions.c is a great reference.
|
||||||
* is a great reference.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GL_ATI_blend_equation_separate_bit = GL_EXT_blend_equation_separate_bit,
|
GL_ATI_blend_equation_separate_bit = GL_EXT_blend_equation_separate_bit,
|
||||||
@@ -235,6 +234,7 @@ enum
|
|||||||
GL_ATIX_texture_env_combine3_bit = GL_ATI_texture_env_combine3_bit,
|
GL_ATIX_texture_env_combine3_bit = GL_ATI_texture_env_combine3_bit,
|
||||||
GL_EXT_point_parameters_bit = GL_ARB_point_parameters_bit,
|
GL_EXT_point_parameters_bit = GL_ARB_point_parameters_bit,
|
||||||
GL_EXT_texture_env_add_bit = GL_ARB_texture_env_add_bit,
|
GL_EXT_texture_env_add_bit = GL_ARB_texture_env_add_bit,
|
||||||
|
GL_EXT_texture_filter_anisotropic_bit = GL_ARB_texture_filter_anisotropic_bit,
|
||||||
GL_EXT_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
|
GL_EXT_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
|
||||||
GL_IBM_texture_mirrored_repeat_bit = GL_ARB_texture_mirrored_repeat_bit,
|
GL_IBM_texture_mirrored_repeat_bit = GL_ARB_texture_mirrored_repeat_bit,
|
||||||
GL_INGR_blend_func_separate_bit = GL_EXT_blend_func_separate_bit,
|
GL_INGR_blend_func_separate_bit = GL_EXT_blend_func_separate_bit,
|
||||||
|
@@ -80,6 +80,7 @@ intelInitExtensions(struct gl_context *ctx)
|
|||||||
ctx->Extensions.ARB_texture_env_combine = true;
|
ctx->Extensions.ARB_texture_env_combine = true;
|
||||||
ctx->Extensions.ARB_texture_env_crossbar = true;
|
ctx->Extensions.ARB_texture_env_crossbar = true;
|
||||||
ctx->Extensions.ARB_texture_env_dot3 = 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_float = true;
|
||||||
ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true;
|
ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true;
|
||||||
ctx->Extensions.ARB_texture_non_power_of_two = true;
|
ctx->Extensions.ARB_texture_non_power_of_two = true;
|
||||||
|
@@ -339,6 +339,7 @@ GLboolean r200CreateContext( gl_api api,
|
|||||||
ctx->Extensions.ARB_texture_env_combine = true;
|
ctx->Extensions.ARB_texture_env_combine = true;
|
||||||
ctx->Extensions.ARB_texture_env_dot3 = true;
|
ctx->Extensions.ARB_texture_env_dot3 = true;
|
||||||
ctx->Extensions.ARB_texture_env_crossbar = 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_texture_mirror_clamp_to_edge = true;
|
||||||
ctx->Extensions.ARB_vertex_program = true;
|
ctx->Extensions.ARB_vertex_program = true;
|
||||||
ctx->Extensions.ATI_fragment_shader = (ctx->Const.MaxTextureUnits == 6);
|
ctx->Extensions.ATI_fragment_shader = (ctx->Const.MaxTextureUnits == 6);
|
||||||
|
@@ -300,6 +300,7 @@ r100CreateContext( gl_api api,
|
|||||||
ctx->Extensions.ARB_texture_env_combine = true;
|
ctx->Extensions.ARB_texture_env_combine = true;
|
||||||
ctx->Extensions.ARB_texture_env_crossbar = true;
|
ctx->Extensions.ARB_texture_env_crossbar = true;
|
||||||
ctx->Extensions.ARB_texture_env_dot3 = 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.ARB_texture_mirror_clamp_to_edge = true;
|
||||||
ctx->Extensions.ATI_texture_env_combine3 = true;
|
ctx->Extensions.ATI_texture_env_combine3 = true;
|
||||||
ctx->Extensions.ATI_texture_mirror_once = true;
|
ctx->Extensions.ATI_texture_mirror_once = true;
|
||||||
|
@@ -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_combine = GL_TRUE;
|
||||||
ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
|
ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
|
||||||
ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
|
ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
|
||||||
|
ctx->Extensions.ARB_texture_filter_anisotropic = GL_TRUE;
|
||||||
#ifdef TEXTURE_FLOAT_ENABLED
|
#ifdef TEXTURE_FLOAT_ENABLED
|
||||||
ctx->Extensions.ARB_texture_float = GL_TRUE;
|
ctx->Extensions.ARB_texture_float = GL_TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -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_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_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_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_float , ARB_texture_float , GLL, GLC, x , x , 2004)
|
||||||
EXT(ARB_texture_gather , ARB_texture_gather , GLL, GLC, x , x , 2009)
|
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)
|
EXT(ARB_texture_mirror_clamp_to_edge , ARB_texture_mirror_clamp_to_edge , GLL, GLC, x , x , 2013)
|
||||||
|
@@ -4093,6 +4093,7 @@ struct gl_extensions
|
|||||||
GLboolean ARB_texture_env_combine;
|
GLboolean ARB_texture_env_combine;
|
||||||
GLboolean ARB_texture_env_crossbar;
|
GLboolean ARB_texture_env_crossbar;
|
||||||
GLboolean ARB_texture_env_dot3;
|
GLboolean ARB_texture_env_dot3;
|
||||||
|
GLboolean ARB_texture_filter_anisotropic;
|
||||||
GLboolean ARB_texture_float;
|
GLboolean ARB_texture_float;
|
||||||
GLboolean ARB_texture_gather;
|
GLboolean ARB_texture_gather;
|
||||||
GLboolean ARB_texture_mirror_clamp_to_edge;
|
GLboolean ARB_texture_mirror_clamp_to_edge;
|
||||||
|
@@ -395,7 +395,7 @@ compute_version(const struct gl_extensions *extensions,
|
|||||||
extensions->ARB_shader_atomic_counter_ops &&
|
extensions->ARB_shader_atomic_counter_ops &&
|
||||||
extensions->ARB_shader_draw_parameters &&
|
extensions->ARB_shader_draw_parameters &&
|
||||||
extensions->ARB_shader_group_vote &&
|
extensions->ARB_shader_group_vote &&
|
||||||
/* extensions->ARB_texture_filter_anisotropic */ 0 &&
|
extensions->ARB_texture_filter_anisotropic &&
|
||||||
extensions->ARB_transform_feedback_overflow_query);
|
extensions->ARB_transform_feedback_overflow_query);
|
||||||
|
|
||||||
if (ver_4_6) {
|
if (ver_4_6) {
|
||||||
|
@@ -1251,6 +1251,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;
|
extensions->KHR_robustness = extensions->ARB_robust_buffer_access_behavior;
|
||||||
|
|
||||||
/* If we support ES 3.1, we support the ES3_1_compatibility ext. However
|
/* If we support ES 3.1, we support the ES3_1_compatibility ext. However
|
||||||
|
Reference in New Issue
Block a user