summaryrefslogtreecommitdiff
path: root/src/glsl
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-09-07 23:16:26 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-09-08 12:09:41 -0700
commit84160a0454b17306e6b9bff5b6e50e54959c5680 (patch)
treec97c2cdc6995552d927bb6e13aa6011b9a2623d9 /src/glsl
parent961f42c9bd795204e031ea6a31a2ae04ba2e4067 (diff)
glsl/builtins: Simplify degenerate scalar float cases.
The code being generated was just stupid, considering that: - normalize(x) = 1.0 - length(x) = x - distance(x, y) = x - y
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/builtins/ir/distance4
-rw-r--r--src/glsl/builtins/ir/length2
-rw-r--r--src/glsl/builtins/ir/normalize2
3 files changed, 3 insertions, 5 deletions
diff --git a/src/glsl/builtins/ir/distance b/src/glsl/builtins/ir/distance
index 1595bf669b..f73f755b32 100644
--- a/src/glsl/builtins/ir/distance
+++ b/src/glsl/builtins/ir/distance
@@ -3,9 +3,7 @@
(parameters
(declare (in) float p0)
(declare (in) float p1))
- ((declare () float p)
- (assign (constant bool (1)) (x) (var_ref p) (expression float - (var_ref p0) (var_ref p1)))
- (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
+ ((return (expression float - (var_ref p0) (var_ref p1)))))
(signature float
(parameters
diff --git a/src/glsl/builtins/ir/length b/src/glsl/builtins/ir/length
index 89ff7f3ef1..3fc3103da1 100644
--- a/src/glsl/builtins/ir/length
+++ b/src/glsl/builtins/ir/length
@@ -2,7 +2,7 @@
(signature float
(parameters
(declare (in) float arg0))
- ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))
+ ((return (var_ref arg0))))
(signature float
(parameters
diff --git a/src/glsl/builtins/ir/normalize b/src/glsl/builtins/ir/normalize
index be88a9830d..02b249a57f 100644
--- a/src/glsl/builtins/ir/normalize
+++ b/src/glsl/builtins/ir/normalize
@@ -2,7 +2,7 @@
(signature float
(parameters
(declare (in) float arg0))
- ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))
+ ((return (constant float (1.0)))))
(signature vec2
(parameters