Signed-off-by: Chris Forbes <chr...@ijw.co.nz> --- src/glsl/builtin_functions.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp index c55115c..b1ff152 100644 --- a/src/glsl/builtin_functions.cpp +++ b/src/glsl/builtin_functions.cpp @@ -566,6 +566,7 @@ private: B1(mulExtended) B1(interpolateAtCentroid) B1(interpolateAtOffset) + B1(interpolateAtSample) ir_function_signature *_atomic_intrinsic(builtin_available_predicate avail); ir_function_signature *_atomic_op(const char *intrinsic, @@ -2106,6 +2107,12 @@ builtin_builder::create_builtins() _interpolateAtOffset(glsl_type::vec3_type), _interpolateAtOffset(glsl_type::vec4_type), NULL); + add_function("interpolateAtSample", + _interpolateAtSample(glsl_type::float_type), + _interpolateAtSample(glsl_type::vec2_type), + _interpolateAtSample(glsl_type::vec3_type), + _interpolateAtSample(glsl_type::vec4_type), + NULL); add_function("atomicCounter", _atomic_op("__intrinsic_atomic_read", @@ -4007,6 +4014,29 @@ builtin_builder::_interpolateAtOffset(const glsl_type *type) } ir_function_signature * +builtin_builder::_interpolateAtSample(const glsl_type *type) +{ + ir_variable *interpolant = new(mem_ctx) ir_variable(type, "interpolant", ir_var_shader_in); + ir_variable *sample_num = in_var(glsl_type::int_type, "sample_num"); + MAKE_SIG(type, gpu_shader5, 2, interpolant, sample_num); + + ir_constant_data offset; + offset.f[0] = -0.5f; + offset.f[1] = -0.5f; + + ir_rvalue *sample_pos = sub( + new(mem_ctx) ir_dereference_array( + new(mem_ctx) ir_variable(glsl_type::get_array_instance(glsl_type::vec2_type, 0), + "gl_SamplePositionsMESA", + ir_var_uniform), + new(mem_ctx) ir_dereference_variable(sample_num)), + imm(glsl_type::vec2_type, offset)); + + body.emit(ret(interpolate_at_offset(interpolant, sample_pos))); + return sig; +} + +ir_function_signature * builtin_builder::_atomic_intrinsic(builtin_available_predicate avail) { ir_variable *counter = in_var(glsl_type::atomic_uint_type, "counter"); -- 1.8.4.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev