Mesa (7.10): i965: Fix ARL to work on gen6.
Eric Anholt
anholt at kemper.freedesktop.org
Mon Dec 27 22:31:22 UTC 2010
Module: Mesa
Branch: 7.10
Commit: da4ecaef8a288cc1fef12d671878db6649c5b5db
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=da4ecaef8a288cc1fef12d671878db6649c5b5db
Author: Eric Anholt <eric at anholt.net>
Date: Mon Dec 13 11:44:26 2010 -0800
i965: Fix ARL to work on gen6.
RNDD isn't one of the instructions that can do conversion from
execution type to destination type.
Fixes glsl-vs-arrays-3.
(cherry picked from commit 7cec7bf56c1b8aa03800e01fa06f29a02edae755)
---
src/mesa/drivers/dri/i965/brw_vs_emit.c | 18 +++++++++++++++++-
1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index 656292c..4873083 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -658,6 +658,22 @@ static void emit_min( struct brw_compile *p,
}
}
+static void emit_arl(struct brw_compile *p,
+ struct brw_reg dst,
+ struct brw_reg src)
+{
+ struct intel_context *intel = &p->brw->intel;
+
+ if (intel->gen >= 6) {
+ struct brw_reg dst_f = retype(dst, BRW_REGISTER_TYPE_F);
+
+ brw_RNDD(p, dst_f, src);
+ brw_MOV(p, dst, dst_f);
+ } else {
+ brw_RNDD(p, dst, src);
+ }
+}
+
static void emit_math1_gen4(struct brw_vs_compile *c,
GLuint function,
struct brw_reg dst,
@@ -1959,7 +1975,7 @@ void brw_vs_emit(struct brw_vs_compile *c )
emit_math1(c, BRW_MATH_FUNCTION_EXP, dst, args[0], BRW_MATH_PRECISION_FULL);
break;
case OPCODE_ARL:
- brw_RNDD(p, dst, args[0]);
+ emit_arl(p, dst, args[0]);
break;
case OPCODE_FLR:
brw_RNDD(p, dst, args[0]);
More information about the mesa-commit
mailing list