[Mesa-dev] [PATCH] glsl: Do not allow scalar types in vector relational functions

Matt Turner mattst88 at gmail.com
Tue Nov 8 20:12:00 UTC 2016


On Tue, Nov 8, 2016 at 12:01 PM, Ian Romanick <idr at freedesktop.org> wrote:
> On 11/08/2016 11:58 AM, Ian Romanick wrote:
>> On 11/04/2016 12:23 PM, Matt Turner wrote:
>>> On Sun, Oct 30, 2016 at 11:45 PM, Boyan Ding <boyan.j.ding at gmail.com> wrote:
>>>> According to OpenGL Shading Language 4.50 spec, Section 8.7 "Vector
>>>> Relational Functions", functions of this type do not operate on scalar
>>>> types, so remove scalar types from signature definitions to make the
>>>> behavior consistent with glslangValidator and other drivers.
>>>
>>> Yep. Looks like it's always been this way.
>>>
>>> The patch is
>>>
>>> Reviewed-by: Matt Turner <mattst88 at gmail.com>
>>>
>>> Since this seems to be untested by any suite, could you provide some
>>> piglit parser tests that confirm that lessThanEqual(scalar, scalar),
>>> et al doesn't work?
>>>
>>> Rant: what a stupid mess to require <= for scalars but lessThanEqual
>>> for vectors.
>>
>> I think it makes sense.  What would 'vec4(...) < vec4(...)' return?  A

Yes, vec4(...) < vec4(...) would return a bvec4().

>> bvec4?  How much time would like to spend with a the compiler error that
>> would result from
>
> Or did you mean that you can't use lessThanEqual and friends with
> scalars is stupid?  I think we just didn't consider that when we added
> the ability to swizzle scalars, but we probably should have added that
> too.  I could get behind an extension that makes vector functions also
> work with vec1.

Definitely that, but I'm not convinced that supporting the operators
on vectors would be bad either.

bvec4 x = ...
if (x)
[...]

gives a very appropriate error on our compiler:

> error: if-statement condition must be scalar boolean


More information about the mesa-dev mailing list