Matt Turner <matts...@gmail.com> writes: > On Fri, Aug 28, 2015 at 12:10 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: >> On Fri, Aug 28, 2015 at 3:02 AM, Matt Turner <matts...@gmail.com> wrote: >>> On Thu, Aug 27, 2015 at 8:48 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: >>>> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> >>>> --- >>>> src/glsl/builtin_functions.cpp | 48 >>>> +++++++++++++++++++++++++++++++++++++++--- >>>> 1 file changed, 45 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/src/glsl/builtin_functions.cpp >>>> b/src/glsl/builtin_functions.cpp >>>> index 3fdda32..b3982f4 100644 >>>> --- a/src/glsl/builtin_functions.cpp >>>> +++ b/src/glsl/builtin_functions.cpp >>>> @@ -540,7 +540,8 @@ private: >>>> IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3), >>>> IMAGE_FUNCTION_READ_ONLY = (1 << 4), >>>> IMAGE_FUNCTION_WRITE_ONLY = (1 << 5), >>>> - IMAGE_FUNCTION_AVAIL_ATOMIC = (1 << 6) >>>> + IMAGE_FUNCTION_AVAIL_ATOMIC = (1 << 6), >>>> + IMAGE_FUNCTION_MS_ONLY = (1 << 7), >>>> }; >>>> >>>> /** >>>> @@ -753,6 +754,10 @@ private: >>>> const char >>>> *intrinsic_name, >>>> unsigned num_arguments, >>>> unsigned flags); >>>> + ir_function_signature *_image_samples_prototype(const glsl_type >>>> *image_type, >>>> + const char >>>> *intrinsic_name, >>>> + unsigned num_arguments, >>>> + unsigned flags); >>>> ir_function_signature *_image(image_prototype_ctr prototype, >>>> const glsl_type *image_type, >>>> const char *intrinsic_name, >>>> @@ -2688,8 +2693,10 @@ builtin_builder::add_image_function(const char >>>> *name, >>>> ir_function *f = new(mem_ctx) ir_function(name); >>>> >>>> for (unsigned i = 0; i < ARRAY_SIZE(types); ++i) { >>>> - if (types[i]->sampler_type != GLSL_TYPE_FLOAT || >>>> - (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE)) >>>> + if ((types[i]->sampler_type != GLSL_TYPE_FLOAT || >>>> + (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE)) && >>>> + (types[i]->sampler_dimensionality == GLSL_SAMPLER_DIM_MS || >>>> + !(flags & IMAGE_FUNCTION_MS_ONLY))) >>>> f->add_signature(_image(prototype, types[i], intrinsic_name, >>>> num_arguments, flags)); >>>> } >>>> @@ -2757,6 +2764,11 @@ builtin_builder::add_image_functions(bool glsl) >>>> "__intrinsic_image_size", >>>> &builtin_builder::_image_size_prototype, 1, >>>> flags | IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE); >>>> + >>>> + add_image_function(glsl ? "imageSamples" : "__intrinsic_image_samples", >>>> + "__intrinsic_image_samples", >>>> + &builtin_builder::_image_samples_prototype, 1, >>>> + flags | IMAGE_FUNCTION_MS_ONLY); >>>> } >>>> >>>> ir_variable * >>>> @@ -4987,6 +4999,36 @@ builtin_builder::_image_size_prototype(const >>>> glsl_type *image_type, >>>> } >>>> >>>> ir_function_signature * >>>> +builtin_builder::_image_samples_prototype(const glsl_type *image_type, >>>> + const char *intrinsic_name, >>>> + unsigned num_arguments, >>>> + unsigned flags) >>>> +{ >>>> + const glsl_type *ret_type; >>>> + unsigned num_components = image_type->coordinate_components(); >>>> + >>>> + ret_type = glsl_type::get_instance(GLSL_TYPE_INT, num_components, 1); >>>> + >>>> + ir_variable *image = in_var(image_type, "image"); >>>> + ir_function_signature *sig = new_sig(ret_type, shader_samples, 1, >>>> image); >>>> + >>>> + /* Set the maximal set of qualifiers allowed for this image >>>> + * built-in. Function calls with arguments having fewer >>>> + * qualifiers than present in the prototype are allowed by the >>>> + * spec, but not with more, i.e. this will make the compiler >>>> + * accept everything that needs to be accepted, and reject cases >>>> + * like loads from write-only or stores to read-only images. >>>> + */ >>> >>> This can be line wrapped better. I don't know how in emacs, but in vim >>> I highlight it with shift+v, and then gq. >> >> I copied this directly from _image_size_prototype, word for word, line >> for line. It's easy to rewrap in emacs too (Alt-q, I think...), happy >> to do it. But it seems more consistent to have the same text. Or >> perhaps just not have that comment at all. > > Bah :(
FYI the original comment was line-wrapped using alt-q on emacs. > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev