[Mesa-dev] [PATCH 7/7] glsl: Add support for constant expression evaluation on round(), roundEven().
Kenneth Graunke
kenneth at whitecape.org
Wed Sep 28 01:06:14 PDT 2011
On 09/27/2011 03:08 PM, Eric Anholt wrote:
> They're both implemented the same in GLSL IR (since round() has
> undefined behavior for N.5).
>
> Fixes glsl-1.30/compiler/built-in-functions/round*
> ---
> src/glsl/ir_constant_expression.cpp | 10 ++++++++++
> 1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
> index b3fe6cf..59a7e67 100644
> --- a/src/glsl/ir_constant_expression.cpp
> +++ b/src/glsl/ir_constant_expression.cpp
> @@ -196,6 +196,13 @@ ir_expression::constant_expression_value()
> }
> break;
>
> + case ir_unop_round_even:
> + assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
> + for (unsigned c = 0; c < op[0]->type->components(); c++) {
> + data.f[c] = rint(op[0]->value.f[c]);
It's not obvious to me that rint() rounds correctly.
More information about the mesa-dev
mailing list