Mesa (master): glsl: Reimplement the "cross" built-in without ir_binop_cross.

Kenneth Graunke kwg at kemper.freedesktop.org
Wed Nov 17 22:10:30 UTC 2010


Module: Mesa
Branch: master
Commit: 671ccf593e1079d0f3e1adf42831d09da91a2b68
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=671ccf593e1079d0f3e1adf42831d09da91a2b68

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Nov 17 13:20:30 2010 -0800

glsl: Reimplement the "cross" built-in without ir_binop_cross.

We are not aware of any GPU that actually implements the cross product
as a single instruction.  Hence, there's no need for it to be an opcode.
Future commits will remove it entirely.

---

 src/glsl/builtins/ir/cross |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/glsl/builtins/ir/cross b/src/glsl/builtins/ir/cross
index 24717a2..02991fe 100644
--- a/src/glsl/builtins/ir/cross
+++ b/src/glsl/builtins/ir/cross
@@ -1,7 +1,9 @@
 ((function cross
    (signature vec3
      (parameters
-       (declare (in) vec3 arg0)
-       (declare (in) vec3 arg1))
-     ((return (expression vec3 cross (var_ref arg0) (var_ref arg1)))))
+       (declare (in) vec3 a)
+       (declare (in) vec3 b))
+     ((return (expression vec3 -
+        (expression vec3 * (swiz yzx (var_ref a)) (swiz zxy (var_ref b)))
+        (expression vec3 * (swiz zxy (var_ref a)) (swiz yzx (var_ref b)))))))
 ))




More information about the mesa-commit mailing list