glsl2: Fix the type of (1.0 - arg2) for mix(gen, gen, float).
authorEric Anholt <eric@anholt.net>
Thu, 22 Jul 2010 21:25:26 +0000 (14:25 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 22 Jul 2010 21:25:26 +0000 (14:25 -0700)
Previously, we'd constant-fold up a value of vec4(1.0 - arg2, 0, 0, 0).

Fixes:
glsl1-mix(vec4) function

src/glsl/builtin_function.cpp
src/glsl/builtins/110/mix

index 10e59e491e47a02d069fa6d3cecb88dece66eee9..ae0eabcf778c8a2d654b70466bc7f27e7168db94 100644 (file)
@@ -1320,21 +1320,21 @@ static const char *builtins_110_mix = {
    "       (declare (in) vec2 arg0)\n"
    "       (declare (in) vec2 arg1)\n"
    "       (declare (in) float arg2))\n"
-   "     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression vec2 - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))\n"
+   "     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))\n"
    "\n"
    "   (signature vec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 arg0)\n"
    "       (declare (in) vec3 arg1)\n"
    "       (declare (in) float arg2))\n"
-   "     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression vec3 - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))\n"
+   "     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))\n"
    "\n"
    "   (signature vec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 arg0)\n"
    "       (declare (in) vec4 arg1)\n"
    "       (declare (in) float arg2))\n"
-   "     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression vec4 - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))\n"
+   "     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))\n"
    "))\n"
 };
 
index 032f29e5fa8fd612d7e3343664debd3ed851cd35..8638d06887c480267489085b8e8f2413176acdaf 100644 (file)
        (declare (in) vec2 arg0)
        (declare (in) vec2 arg1)
        (declare (in) float arg2))
-     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression vec2 - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))
+     ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))
 
    (signature vec3
      (parameters
        (declare (in) vec3 arg0)
        (declare (in) vec3 arg1)
        (declare (in) float arg2))
-     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression vec3 - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))
+     ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))
 
    (signature vec4
      (parameters
        (declare (in) vec4 arg0)
        (declare (in) vec4 arg1)
        (declare (in) float arg2))
-     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression vec4 - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))
+     ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))
 ))