summaryrefslogtreecommitdiff
path: root/src/glsl/builtins
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-09-22 11:47:03 -0700
committerEric Anholt <eric@anholt.net>2010-09-22 13:09:51 -0700
commitb39e6f33b60ef9bbaf81f320aaca6a440d8a6a8f (patch)
treec3547819e402b729d84a4847aed95b81ec09fdbf /src/glsl/builtins
parent38da5c9cb636387539daaf5688c2a3badee32447 (diff)
glsl: Rework assignments with write_masks to have LHS chan count match RHS.
It turns out that most people new to this IR are surprised when an assignment to (say) 3 components on the LHS takes 4 components on the RHS. It also makes for quite strange IR output: (assign (constant bool (1)) (x) (var_ref color) (swiz x (var_ref v) )) (assign (constant bool (1)) (y) (var_ref color) (swiz yy (var_ref v) )) (assign (constant bool (1)) (z) (var_ref color) (swiz zzz (var_ref v) )) But even worse, even we get it wrong, as shown by this line of our current step(float, vec4): (assign (constant bool (1)) (w) (var_ref t) (expression float b2f (expression bool >= (swiz w (var_ref x))(var_ref edge)))) where we try to assign a float to the writemasked-out x channel and don't supply anything for the actual w channel we're writing. Drivers right now just get lucky since ir_to_mesa spams the float value across all the source channels of a vec4. Instead, the RHS will now have a number of components equal to the number of components actually being written. Hopefully this confuses everyone less, and it also makes codegen for a scalar target simpler. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Diffstat (limited to 'src/glsl/builtins')
-rw-r--r--src/glsl/builtins/ir/noise216
-rw-r--r--src/glsl/builtins/ir/noise324
-rw-r--r--src/glsl/builtins/ir/noise434
3 files changed, 37 insertions, 37 deletions
diff --git a/src/glsl/builtins/ir/noise2 b/src/glsl/builtins/ir/noise2
index 008f8b00f1..383fccfadf 100644
--- a/src/glsl/builtins/ir/noise2
+++ b/src/glsl/builtins/ir/noise2
@@ -8,8 +8,8 @@
(assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
(return (var_ref t))
))
@@ -22,8 +22,8 @@
(assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
(return (var_ref t))
))
@@ -38,8 +38,8 @@
(assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
(return (var_ref t))
))
@@ -54,8 +54,8 @@
(assign (constant bool (1)) (x) (var_ref a) (expression float noise (var_ref p)))
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xx (var_ref b)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
(return (var_ref t))
))
))
diff --git a/src/glsl/builtins/ir/noise3 b/src/glsl/builtins/ir/noise3
index f191e145f9..ed7ad5190f 100644
--- a/src/glsl/builtins/ir/noise3
+++ b/src/glsl/builtins/ir/noise3
@@ -11,9 +11,9 @@
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (601.0 313.0 29.0 277.0)))))
(assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec4 + (var_ref p) (constant vec4 (1559.0 113.0 1861.0 797.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))
- (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
+ (assign (constant bool (1)) (z) (var_ref t) (var_ref c))
(return (var_ref t))
))
@@ -29,9 +29,9 @@
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (601.0 313.0 29.0)))))
(assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec3 + (var_ref p) (constant vec3 (1559.0 113.0 1861.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))
- (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
+ (assign (constant bool (1)) (z) (var_ref t) (var_ref c))
(return (var_ref t))
))
@@ -47,9 +47,9 @@
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (601.0 313.0)))))
(assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression vec2 + (var_ref p) (constant vec2 (1559.0 113.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))
- (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
+ (assign (constant bool (1)) (z) (var_ref t) (var_ref c))
(return (var_ref t))
))
@@ -65,9 +65,9 @@
(assign (constant bool (1)) (x) (var_ref b) (expression float noise (expression float + (var_ref p) (constant float (601.0)))))
(assign (constant bool (1)) (x) (var_ref c) (expression float noise (expression float + (var_ref p) (constant float (1559.0)))))
- (assign (constant bool (1)) (x) (var_ref t) (swiz xxx (var_ref a)))
- (assign (constant bool (1)) (y) (var_ref t) (swiz xxx (var_ref b)))
- (assign (constant bool (1)) (z) (var_ref t) (swiz xxx (var_ref c)))
+ (assign (constant bool (1)) (x) (var_ref t) (var_ref a))
+ (assign (constant bool (1)) (y) (var_ref t) (var_ref b))
+ (assign (constant bool (1)) (z) (var_ref t) (var_ref c))
(return (var_ref t))
))
))
diff --git a/src/glsl/builtins/ir/noise4 b/src/glsl/builtins/ir/noise4
index fb300fd148..77a2529a18 100644
--- a/src/glsl/builtins/ir/noise4
+++ b/src/glsl/builtins/ir/noise4
@@ -16,10 +16,10 @@
(assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))
(assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec4 + (var_ref _p) (constant vec4 (601.0 313.0 29.0 277.0)))))
- (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))
- (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))
- (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))
- (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))
+ (assign (constant bool (1)) (x) (var_ref _r) (var_ref _x))
+ (assign (constant bool (1)) (y) (var_ref _r) (var_ref _y))
+ (assign (constant bool (1)) (z) (var_ref _r) (var_ref _z))
+ (assign (constant bool (1)) (w) (var_ref _r) (var_ref _w))
(return (var_ref _r))
))
@@ -40,10 +40,10 @@
(assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))
(assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec3 + (var_ref _p) (constant vec3 (601.0 313.0 29.0)))))
- (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))
- (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))
- (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))
- (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))
+ (assign (constant bool (1)) (x) (var_ref _r) (var_ref _x))
+ (assign (constant bool (1)) (y) (var_ref _r) (var_ref _y))
+ (assign (constant bool (1)) (z) (var_ref _r) (var_ref _z))
+ (assign (constant bool (1)) (w) (var_ref _r) (var_ref _w))
(return (var_ref _r))
))
@@ -64,10 +64,10 @@
(assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))
(assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression vec2 + (var_ref _p) (constant vec2 (601.0 313.0)))))
- (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))
- (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))
- (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))
- (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))
+ (assign (constant bool (1)) (x) (var_ref _r) (var_ref _x))
+ (assign (constant bool (1)) (y) (var_ref _r) (var_ref _y))
+ (assign (constant bool (1)) (z) (var_ref _r) (var_ref _z))
+ (assign (constant bool (1)) (w) (var_ref _r) (var_ref _w))
(return (var_ref _r))
))
@@ -81,17 +81,17 @@
(declare () vec4 _r)
(declare () float _p)
- (assign (constant bool (1)) (xy) (var_ref _p) (expression float + (var_ref p) (constant float (1559.0))) )
+ (assign (constant bool (1)) (x) (var_ref _p) (expression float + (var_ref p) (constant float (1559.0))) )
(assign (constant bool (1)) (x) (var_ref _x) (expression float noise(var_ref p)))
(assign (constant bool (1)) (x) (var_ref _y) (expression float noise(expression float + (var_ref p) (constant float (601.0 313.0 29.0 277.0)))))
(assign (constant bool (1)) (x) (var_ref _z) (expression float noise(var_ref _p)))
(assign (constant bool (1)) (x) (var_ref _w) (expression float noise(expression float + (var_ref _p) (constant float (601.0 313.0 29.0 277.0)))))
- (assign (constant bool (1)) (x) (var_ref _r) (swiz xxxx (var_ref _x)))
- (assign (constant bool (1)) (y) (var_ref _r) (swiz xxxx (var_ref _y)))
- (assign (constant bool (1)) (z) (var_ref _r) (swiz xxxx (var_ref _z)))
- (assign (constant bool (1)) (w) (var_ref _r) (swiz xxxx (var_ref _w)))
+ (assign (constant bool (1)) (x) (var_ref _r) (var_ref _x))
+ (assign (constant bool (1)) (y) (var_ref _r) (var_ref _y))
+ (assign (constant bool (1)) (z) (var_ref _r) (var_ref _z))
+ (assign (constant bool (1)) (w) (var_ref _r) (var_ref _w))
(return (var_ref _r))
))
))