[Mesa-dev] [PATCH] glsl: add ir_unop_b2d
Ilia Mirkin
imirkin at alum.mit.edu
Tue Jan 12 07:29:18 PST 2016
IIRC this should come out as b2i + i2d. You should be able to test this
with llvmpipe/softpipe, which support fp64.
On Jan 12, 2016 9:49 AM, "Iago Toral Quiroga" <itoral at igalia.com> wrote:
> For boolean to double conversions
> ---
>
> Looks like d2b is present but this one was missing for some reason. I found
> this while testing fp64 support on Intel.
>
> I have the NIR and i965 implementation of this too but that is be part of
> the fp64 enablement in NIR/i965 that is not ready for review yet.
>
> I guess drivers that already implement fp64 should implement this operation
> too.
>
> src/glsl/ir.cpp | 1 +
> src/glsl/ir.h | 1 +
> src/glsl/ir_validate.cpp | 4 ++++
> src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp | 1 +
> src/mesa/program/ir_to_mesa.cpp | 1 +
> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 +
> 6 files changed, 9 insertions(+)
>
> diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
> index d82bccd..f4a6f85 100644
> --- a/src/glsl/ir.cpp
> +++ b/src/glsl/ir.cpp
> @@ -518,6 +518,7 @@ static const char *const operator_strs[] = {
> "i2f",
> "f2b",
> "b2f",
> + "b2d",
> "i2b",
> "b2i",
> "u2f",
> diff --git a/src/glsl/ir.h b/src/glsl/ir.h
> index 93e0734..f64fbec 100644
> --- a/src/glsl/ir.h
> +++ b/src/glsl/ir.h
> @@ -1337,6 +1337,7 @@ enum ir_expression_operation {
> ir_unop_i2f, /**< Integer-to-float conversion. */
> ir_unop_f2b, /**< Float-to-boolean conversion */
> ir_unop_b2f, /**< Boolean-to-float conversion */
> + ir_unop_b2d, /**< Boolean-to-double conversion */
> ir_unop_i2b, /**< int-to-boolean conversion */
> ir_unop_b2i, /**< Boolean-to-int conversion */
> ir_unop_u2f, /**< Unsigned-to-float conversion. */
> diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp
> index dcc079c..7ae01a9 100644
> --- a/src/glsl/ir_validate.cpp
> +++ b/src/glsl/ir_validate.cpp
> @@ -283,6 +283,10 @@ ir_validate::visit_leave(ir_expression *ir)
> assert(ir->operands[0]->type->base_type == GLSL_TYPE_BOOL);
> assert(ir->type->base_type == GLSL_TYPE_FLOAT);
> break;
> + case ir_unop_b2d:
> + assert(ir->operands[0]->type->base_type == GLSL_TYPE_BOOL);
> + assert(ir->type->base_type == GLSL_TYPE_DOUBLE);
> + break;
> case ir_unop_i2b:
> assert(ir->operands[0]->type->base_type == GLSL_TYPE_INT);
> assert(ir->type->base_type == GLSL_TYPE_BOOL);
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
> b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
> index 78a8240..9e1b8aa 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
> @@ -434,6 +434,7 @@
> ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
> case ir_unop_d2u:
> case ir_unop_u2d:
> case ir_unop_d2b:
> + case ir_unop_b2d:
> unreachable("no fp64 support yet");
> }
>
> diff --git a/src/mesa/program/ir_to_mesa.cpp
> b/src/mesa/program/ir_to_mesa.cpp
> index 852655d..9d85cbc 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -1259,6 +1259,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
> case ir_unop_d2u:
> case ir_unop_u2d:
> case ir_unop_d2b:
> + case ir_unop_b2d:
> case ir_unop_frexp_sig:
> case ir_unop_frexp_exp:
> assert(!"not supported");
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 27a0a4f..676e378 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -2197,6 +2197,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
> break;
>
> case ir_unop_get_buffer_size:
> + case ir_unop_b2d:
> assert(!"Not implemented yet");
> break;
> }
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20160112/f9e2a406/attachment-0001.html>
More information about the mesa-dev
mailing list