On Thu, Sep 25, 2014 at 4:54 PM, Erik Faye-Lund <kusmab...@gmail.com> wrote:
> On Wed, Sep 24, 2014 at 1:35 PM, Erik Faye-Lund <kusmab...@gmail.com> wrote:
>> Hm. Don't I need to expand this last immediate to a vector of
>> type->components() size as well?
>>
>> If so, this patch should go on top:
>>
>> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
>> index 1820dd5..bfa46eb 100644
>> --- a/src/glsl/builtin_functions.cpp
>> +++ b/src/glsl/builtin_functions.cpp
>> @@ -2749,13 +2749,11 @@ builtin_builder::do_atan(ir_factory &body,
>> const glsl_type *type, ir_variable *r
>>     /* range-reduction fixup */
>>     body.emit(assign(tmp, add(tmp,
>>                               csel(greater(abs(y_over_x),
>> -                                          swizzle(imm(1.0f),
>> -                                                  SWIZZLE_XXXX,
>> -                                                  type->components())),
>> +                                          imm(1.0f, type->components())),
>>                                    add(mul(tmp,
>>                                            imm(-2.0f)),
>>                                        imm(M_PI_2f)),
>> -                                  imm(0.0f)))));
>> +                                  imm(0.0f, type->components())))));
>>
>>     /* sign fixup */
>>     body.emit(assign(res, mul(tmp, sign(y_over_x))));
>
> Ugh, it seems things fail piglit's shaders/glsl-fs-atan-1 pretty badly
> on swrast.
>
> ../../src/mesa/program/ir_to_mesa.cpp:1426: virtual void
> {anonymous}::ir_to_mesa_visitor::visit(ir_expression*): Assertion
> `!"not supported"' failed.
>
> Ugh, yeah. We don't seem to support ir_trip_csel on swrast, and
> there's no attempt to lower it unless it's condition is constant 0 or
> 1 (in opt_algebraic.cpp). So yeah, this regresses there, but looking
> at the other builtins, so does anything that uses gentype mix(gentype,
> gentype, genBtype) etc. However, that's at least blocked by a GLSL
> v130 check, which swrast does not support.
>
> So, I've got some more work to do :/

OK, that was easier than I thought:

diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
index bfa46eb..c126b60 100644
--- a/src/glsl/builtin_functions.cpp
+++ b/src/glsl/builtin_functions.cpp
@@ -2748,12 +2748,11 @@ builtin_builder::do_atan(ir_factory &body,
const glsl_type *type, ir_variable *r

    /* range-reduction fixup */
    body.emit(assign(tmp, add(tmp,
-                             csel(greater(abs(y_over_x),
-                                          imm(1.0f, type->components())),
+                             mul(b2f(greater(abs(y_over_x),
+                                          imm(1.0f, type->components()))),
                                   add(mul(tmp,
                                           imm(-2.0f)),
-                                      imm(M_PI_2f)),
-                                  imm(0.0f, type->components())))));
+                                      imm(M_PI_2f))))));

    /* sign fixup */
    body.emit(assign(res, mul(tmp, sign(y_over_x))));
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to