--- /dev/null
+Name
+
+ MESA_sampler_objects
+
+Name Strings
+
+ GL_MESA_sampler_objects
+
+Contact
+
+ Adam Jackson <ajax@redhat.com>
+
+Contributors
+
+ Emma Anholt
+ The contributors to ARB_sampler_objects and OpenGL ES 3
+
+Status
+
+ Shipping
+
+Version
+
+ Last Modified Date: 14 Sep 2021
+ Author Revision: 3
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL ES 2.0 is required.
+
+ This extension interacts with:
+ - EXT_shadow_samplers
+ - EXT_texture_filter_anisotropic
+ - EXT_texture_sRGB_decode
+ - OES_texture_border_clamp
+
+Overview
+
+ This extension makes the sampler object subset of OpenGL ES 3.0 available
+ in OpenGL ES 2.0 contexts. As the intent is to allow access to the API
+ without necessarily requiring additional renderer functionality, some
+ sampler state that would be mandatory in GLES 3 is dependent on the
+ presence of additional extensions. Under GLES 3.0 or above this extension's
+ name string may be exposed for compatibility, but it is otherwise without
+ effect.
+
+ Refer to the OpenGL ES 3.0 specification for API details not covered here.
+
+New Procedures and Functions
+
+ void glGenSamplers (GLsizei count, GLuint *samplers);
+ void glDeleteSamplers (GLsizei count, const GLuint *samplers);
+ GLboolean glIsSampler (GLuint sampler);
+ void glBindSampler (GLuint unit, GLuint sampler);
+ void glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
+ void glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
+ void glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
+ void glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
+ void glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
+ void glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
+
+ Note that these names are exactly as in ES3, with no MESA suffix.
+
+New Tokens
+
+ SAMPLER_BINDING 0x8919
+
+Interactions
+
+ If EXT_shadow_samplers is not supported then TEXTURE_COMPARE_MODE and
+ TEXTURE_COMPARE_FUNC will generate INVALID_ENUM.
+
+ If EXT_texture_filter_anisotropic is not supported then
+ TEXTURE_MAX_ANISOTROPY_EXT will generate INVALID_ENUM.
+
+ If EXT_texture_sRGB_decode is not supported then TEXTURE_SRGB_DECODE_EXT
+ will generate INVALID_ENUM.
+
+ If OES_texture_border_clamp is not supported then TEXTURE_BORDER_COLOR
+ will generate INVALID_ENUM.
+
+Issues
+
+ 1) Why bother?
+
+ Sampler objects, at least in Mesa, are generically supported without any
+ driver-dependent requirements, so enabling this is essentially free. This
+ simplifies application support for otherwise GLES2 hardware, and for
+ drivers in development that haven't yet achieved GLES3.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- ---------------------------------------------
+ 1 2019/10/22 ajax Initial revision
+ 2 2019/11/14 ajax Add extension interactions:
+ - EXT_shadow_samplers
+ - EXT_texture_filter_anisotropic
+ - EXT_texture_sRGB_decode
+ - OES_texture_border_clamp
+ 3 2021/09/14 ajax Expand the justification and ES3 interaction
<category name="GL_ARB_sampler_objects" number="81">
- <function name="GenSamplers" es2="3.0" no_error="true">
+ <function name="GenSamplers" es2="2.0" no_error="true">
<param name="count" type="GLsizei"/>
<param name="samplers" type="GLuint *"/>
</function>
- <function name="DeleteSamplers" es2="3.0" no_error="true">
+ <function name="DeleteSamplers" es2="2.0" no_error="true">
<param name="count" type="GLsizei"/>
<param name="samplers" type="const GLuint *" count="count"/>
</function>
- <function name="IsSampler" es2="3.0">
+ <function name="IsSampler" es2="2.0">
<param name="sampler" type="GLuint"/>
<return type="GLboolean"/>
</function>
- <function name="BindSampler" es2="3.0" no_error="true" exec="dlist">
+ <function name="BindSampler" es2="2.0" no_error="true" exec="dlist">
<param name="unit" type="GLuint"/>
<param name="sampler" type="GLuint"/>
</function>
- <function name="SamplerParameteri" es2="3.0" exec="dlist">
+ <function name="SamplerParameteri" es2="2.0" exec="dlist">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="param" type="GLint"/>
</function>
- <function name="SamplerParameterf" es2="3.0" exec="dlist">
+ <function name="SamplerParameterf" es2="2.0" exec="dlist">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="param" type="GLfloat"/>
</function>
- <function name="SamplerParameteriv" es2="3.0" exec="dlist">
+ <function name="SamplerParameteriv" es2="2.0" exec="dlist">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/>
</function>
- <function name="SamplerParameterfv" es2="3.0" exec="dlist">
+ <function name="SamplerParameterfv" es2="2.0" exec="dlist">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="const GLfloat *" count="_mesa_tex_param_enum_to_count(pname)"/>
<param name="params" type="const GLuint *" count="_mesa_tex_param_enum_to_count(pname)"/>
</function>
- <function name="GetSamplerParameteriv" es2="3.0">
+ <function name="GetSamplerParameteriv" es2="2.0">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="GLint *"/>
</function>
- <function name="GetSamplerParameterfv" es2="3.0">
+ <function name="GetSamplerParameterfv" es2="2.0">
<param name="sampler" type="GLuint"/>
<param name="pname" type="GLenum"/>
<param name="params" type="GLfloat *"/>
EXT(MESA_bgra , dummy_true , x , x , x , ES2, 2021)
EXT(MESA_framebuffer_flip_y , MESA_framebuffer_flip_y , 43, 43, x , 30, 2018)
EXT(MESA_pack_invert , MESA_pack_invert , GLL, GLC, x , x , 2002)
+EXT(MESA_sampler_objects , dummy_true , x , x , x , ES2, 2019)
EXT(MESA_shader_integer_functions , MESA_shader_integer_functions , GLL, GLC, x , 30, 2016)
EXT(MESA_texture_signed_rgba , EXT_texture_snorm , GLL, GLC, x , x , 2009)
EXT(MESA_tile_raster_order , MESA_tile_raster_order , GLL, GLC, x , ES2, 2017)