gallium/tgsi: use _mesa_roundevenf in micro_rnd

Fixes the following piglit tests (for softpipe):

/spec/glsl-1.30/execution/built-in-functions/...
fs-roundeven-float
fs-roundeven-vec2
fs-roundeven-vec3
fs-roundeven-vec4
vs-roundeven-float
vs-roundeven-vec2
vs-roundeven-vec3
vs-roundeven-vec4

/spec/glsl-1.50/execution/built-in-functions/...
gs-roundeven-float
gs-roundeven-vec2
gs-roundeven-vec3
gs-roundeven-vec4

Signed-off-by: Lars Hamre <chemecse@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Lars Hamre 2016-05-19 15:34:00 -06:00 committed by Brian Paul
parent d519f59a9f
commit c626a86586

View file

@ -61,6 +61,7 @@
#include "util/u_half.h"
#include "util/u_memory.h"
#include "util/u_math.h"
#include "util/rounding.h"
#define DEBUG_EXECUTION 0
@ -543,10 +544,10 @@ static void
micro_rnd(union tgsi_exec_channel *dst,
const union tgsi_exec_channel *src)
{
dst->f[0] = floorf(src->f[0] + 0.5f);
dst->f[1] = floorf(src->f[1] + 0.5f);
dst->f[2] = floorf(src->f[2] + 0.5f);
dst->f[3] = floorf(src->f[3] + 0.5f);
dst->f[0] = _mesa_roundevenf(src->f[0]);
dst->f[1] = _mesa_roundevenf(src->f[1]);
dst->f[2] = _mesa_roundevenf(src->f[2]);
dst->f[3] = _mesa_roundevenf(src->f[3]);
}
static void