[Mesa-dev] [PATCH 05/10] glsl: add support for the textureSamples function

Ian Romanick idr at freedesktop.org
Tue Sep 8 20:36:13 PDT 2015


This patch is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 08/27/2015 08:48 PM, Ilia Mirkin wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/glsl/builtin_functions.cpp | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
> index 5e05199..3fdda32 100644
> --- a/src/glsl/builtin_functions.cpp
> +++ b/src/glsl/builtin_functions.cpp
> @@ -428,6 +428,13 @@ shader_image_size(const _mesa_glsl_parse_state *state)
>  }
>  
>  static bool
> +shader_samples(const _mesa_glsl_parse_state *state)
> +{
> +   return state->is_version(450, 0) ||
> +          state->ARB_shader_texture_image_samples_enable;
> +}
> +
> +static bool
>  gs_streams(const _mesa_glsl_parse_state *state)
>  {
>     return gpu_shader5(state) && gs_only(state);
> @@ -667,6 +674,7 @@ private:
>     B1(all);
>     B1(not);
>     BA2(textureSize);
> +   B1(textureSamples);
>  
>  /** Flags to _texture() */
>  #define TEX_PROJECT 1
> @@ -1410,6 +1418,16 @@ builtin_builder::create_builtins()
>                  _textureSize(texture_multisample_array, glsl_type::ivec3_type, glsl_type::usampler2DMSArray_type),
>                  NULL);
>  
> +   add_function("textureSamples",
> +                _textureSamples(glsl_type::sampler2DMS_type),
> +                _textureSamples(glsl_type::isampler2DMS_type),
> +                _textureSamples(glsl_type::usampler2DMS_type),
> +
> +                _textureSamples(glsl_type::sampler2DMSArray_type),
> +                _textureSamples(glsl_type::isampler2DMSArray_type),
> +                _textureSamples(glsl_type::usampler2DMSArray_type),
> +                NULL);
> +
>     add_function("texture",
>                  _texture(ir_tex, v130, glsl_type::vec4_type,  glsl_type::sampler1D_type,  glsl_type::float_type),
>                  _texture(ir_tex, v130, glsl_type::ivec4_type, glsl_type::isampler1D_type, glsl_type::float_type),
> @@ -4173,6 +4191,19 @@ builtin_builder::_textureSize(builtin_available_predicate avail,
>  }
>  
>  ir_function_signature *
> +builtin_builder::_textureSamples(const glsl_type *sampler_type)
> +{
> +   ir_variable *s = in_var(sampler_type, "sampler");
> +   MAKE_SIG(glsl_type::int_type, shader_samples, 1, s);
> +
> +   ir_texture *tex = new(mem_ctx) ir_texture(ir_texture_samples);
> +   tex->set_sampler(new(mem_ctx) ir_dereference_variable(s), glsl_type::int_type);
> +   body.emit(ret(tex));
> +
> +   return sig;
> +}
> +
> +ir_function_signature *
>  builtin_builder::_texture(ir_texture_opcode opcode,
>                            builtin_available_predicate avail,
>                            const glsl_type *return_type,
> 



More information about the mesa-dev mailing list