summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Krol <[email protected]>2006-08-02 14:44:46 +0000
committerMichal Krol <[email protected]>2006-08-02 14:44:46 +0000
commit3b5e02cc7cecc88887da0bda009d828b124499a2 (patch)
tree55718f774faab0397443c4a920b0040c05578de7
parent60ba2d88b31b4858c019b41c982ca83ab5880dde (diff)
Add vec4 extension.
-rwxr-xr-xsrc/mesa/shader/slang/library/gc_to_bin.c3
-rwxr-xr-xsrc/mesa/shader/slang/library/slang_builtin_vec4.gc220
-rw-r--r--src/mesa/shader/slang/library/slang_builtin_vec4_gc.h62
-rw-r--r--src/mesa/shader/slang/library/slang_common_builtin_gc.h2
-rw-r--r--src/mesa/shader/slang/library/slang_core_gc.h2
-rw-r--r--src/mesa/shader/slang/library/slang_fragment_builtin_gc.h2
-rw-r--r--src/mesa/shader/slang/library/slang_vertex_builtin_gc.h2
7 files changed, 288 insertions, 5 deletions
diff --git a/src/mesa/shader/slang/library/gc_to_bin.c b/src/mesa/shader/slang/library/gc_to_bin.c
index 749c57a032f..69895d84bfd 100755
--- a/src/mesa/shader/slang/library/gc_to_bin.c
+++ b/src/mesa/shader/slang/library/gc_to_bin.c
@@ -32,7 +32,7 @@ static void gc_to_bin (grammar id, const char *in, const char *out)
f = fopen (out, "w");
fprintf (f, "\n");
- fprintf (f, "/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\n");
+ fprintf (f, "/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\n");
fprintf (f, "/* %s */\n", in);
fprintf (f, "\n");
for (i = 0; i < size; i++)
@@ -75,6 +75,7 @@ int main ()
gc_to_bin (id, "slang_core.gc", "slang_core_gc.h");
gc_to_bin (id, "slang_common_builtin.gc", "slang_common_builtin_gc.h");
gc_to_bin (id, "slang_fragment_builtin.gc", "slang_fragment_builtin_gc.h");
+ gc_to_bin (id, "slang_builtin_vec4.gc", "slang_builtin_vec4_gc.h");
grammar_set_reg8 (id, (const byte *) "shader_type", 2);
gc_to_bin (id, "slang_vertex_builtin.gc", "slang_vertex_builtin_gc.h");
diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4.gc b/src/mesa/shader/slang/library/slang_builtin_vec4.gc
new file mode 100755
index 00000000000..d549c0133a4
--- /dev/null
+++ b/src/mesa/shader/slang/library/slang_builtin_vec4.gc
@@ -0,0 +1,220 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 2006 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+//
+// This file overrides most of the standard built-in functions that operate on vec4 data type.
+// This file also overrides most commonly used functions that do not neccessarily operate
+// on vec4 data type, like dot(vec3,vec3). Those are adapted to vec4 instructions and are believed
+// to execute faster.
+// This file replaces parts of the core.gc and common.gc, so it must be included somewhere after
+// the common.gc file.
+//
+// Assembly instructions required:
+// float_to_vec4
+// vec4_add
+// vec4_subtract
+// vec4_multiply
+// vec4_divide
+// vec4_negate
+// vec4_dot
+//
+
+
+vec4 __constructor (const float f) {
+ vec4 v;
+ __asm float_to_vec4 v, f;
+ return v;
+}
+
+
+void __operator += (inout vec4 v, const vec4 u) {
+ __asm vec4_add v, u;
+}
+
+void __operator -= (inout vec4 v, const vec4 u) {
+ __asm vec4_subtract v, u;
+}
+
+void __operator *= (inout vec4 v, const vec4 u) {
+ __asm vec4_multiply v, u;
+}
+
+void __operator /= (inout vec4 v, const vec4 u) {
+ __asm vec4_divide v, u;
+}
+
+
+void __operator += (inout vec4 v, const float a) {
+ vec4 u;
+ __asm float_to_vec4 u, a;
+ __asm vec4_add v, u;
+}
+
+void __operator -= (inout vec4 v, const float a) {
+ vec4 u;
+ __asm float_to_vec4 u, a;
+ __asm vec4_subtract v, u;
+}
+
+void __operator *= (inout vec4 v, const float a) {
+ vec4 u;
+ __asm float_to_vec4 u, a;
+ __asm vec4_multiply v, u;
+}
+
+void __operator /= (inout vec4 v, const float a) {
+ vec4 u;
+ __asm float_to_vec4 u, a;
+ __asm vec4_divide v, u;
+}
+
+
+vec4 __operator + (vec4 v, const vec4 u) {
+ __asm vec4_add v, u;
+ return v;
+}
+
+vec4 __operator - (vec4 v, const vec4 u) {
+ __asm vec4_subtract v, u;
+ return v;
+}
+
+vec4 __operator * (vec4 v, const vec4 u) {
+ __asm vec4_multiply v, u;
+ return v;
+}
+
+vec4 __operator / (vec4 v, const vec4 u) {
+ __asm vec4_divide v, u;
+ return v;
+}
+
+
+vec4 __operator + (const float a, const vec4 u) {
+ vec4 v;
+ __asm float_to_vec4 v, a;
+ __asm vec4_add v, u;
+ return v;
+}
+
+vec4 __operator + (const vec4 v, const float b) {
+ vec4 u;
+ __asm float_to_vec4 u, b;
+ __asm vec4_add u, v;
+ return u;
+}
+
+vec4 __operator - (const float a, const vec4 u) {
+ vec4 v;
+ __asm float_to_vec4 v, a;
+ __asm vec4_subtract v, u;
+ return v;
+}
+
+vec4 __operator - (vec4 v, const float b) {
+ vec4 u;
+ __asm float_to_vec4 u, b;
+ __asm vec4_subtract v, u;
+ return v;
+}
+
+vec4 __operator * (const float a, const vec4 u) {
+ vec4 v;
+ __asm float_to_vec4 v, a;
+ __asm vec4_multiply v, u;
+ return v;
+}
+
+vec4 __operator * (const vec4 v, const float b) {
+ vec4 u;
+ __asm float_to_vec4 u, b;
+ __asm vec4_multiply u, v;
+ return u;
+}
+
+vec4 __operator / (const float a, const vec4 u) {
+ vec4 v;
+ __asm float_to_vec4 v, a;
+ __asm vec4_divide v, u;
+ return v;
+}
+
+vec4 __operator / (vec4 v, const float b) {
+ vec4 u;
+ __asm float_to_vec4 u, b;
+ __asm vec4_divide v, u;
+ return v;
+}
+
+
+vec4 __operator - (vec4 v) {
+ __asm vec4_negate v;
+ return v;
+}
+
+
+float dot (vec3 v, vec3 u) {
+ vec4 v4 = vec4 (v, 0.0);
+ vec4 u4 = vec4 (u, 0.0);
+ __asm vec4_dot v4, u4;
+ return v4.x;
+}
+
+float dot (vec4 v, vec4 u) {
+ __asm vec4_dot v, u;
+ return v.x;
+}
+
+
+float length (vec3 v) {
+ vec4 u = vec4 (v, 0.0);
+ __asm vec4_dot u, u;
+ return sqrt (u.x);
+}
+
+float length (vec4 v) {
+ __asm vec4_dot v, v;
+ return sqrt (v.x);
+}
+
+
+vec3 normalize (vec3 v) {
+ vec4 u = vec4 (v, 0.0);
+ vec4 w = u;
+ __asm vec4_dot u, u;
+ float l = sqrt (u.x);
+ __asm float_to_vec4 u, l;
+ __asm vec4_divide w, u;
+ return w.xyz;
+}
+
+vec4 normalize (vec4 v) {
+ vec4 w = v;
+ __asm vec4_dot v, v;
+ float l = sqrt (v.x);
+ __asm float_to_vec4 v, l;
+ __asm vec4_divide w, v;
+ return w;
+}
+
diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h b/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h
new file mode 100644
index 00000000000..9c3bae2644c
--- /dev/null
+++ b/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h
@@ -0,0 +1,62 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* slang_builtin_vec4.gc */
+
+3,1,0,12,1,1,1,0,9,102,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,
+52,0,18,118,0,0,18,102,0,0,0,8,18,118,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,
+101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,
+1,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,
+118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,
+117,0,0,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,
+101,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,
+4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,97,
+100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,
+0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,
+115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,9,97,0,0,
+0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,
+4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,4,1,0,2,12,
+118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,0,1,0,
+12,2,26,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,
+0,0,8,18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,115,117,98,
+116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,0,0,12,118,0,0,1,1,0,12,
+117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,
+0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,101,
+0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,
+1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,
+52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,0,9,98,
+0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,
+0,0,4,118,101,99,52,95,97,100,100,0,18,117,0,0,18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,27,1,1,0,9,97,
+0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,
+18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,
+116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,
+99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,
+2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,
+101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,
+1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,
+101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,117,0,0,
+18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,22,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,
+102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,
+118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,9,98,0,
+0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,
+0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,27,
+1,0,0,12,118,0,0,0,1,4,118,101,99,52,95,110,101,103,97,116,101,0,18,118,0,0,0,8,18,118,0,0,0,1,0,9,
+0,100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,12,1,118,52,0,2,58,118,101,99,52,0,18,
+118,0,0,17,48,0,48,0,0,0,0,0,0,3,2,0,12,1,117,52,0,2,58,118,101,99,52,0,18,117,0,0,17,48,0,48,0,0,
+0,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,52,0,0,18,117,52,0,0,0,8,18,118,52,0,59,120,0,0,0,
+1,0,9,0,100,111,116,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,4,118,101,99,52,95,100,111,116,0,18,
+118,0,0,18,117,0,0,0,8,18,118,0,59,120,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,11,118,0,0,0,
+1,3,2,0,12,1,117,0,2,58,118,101,99,52,0,18,118,0,0,17,48,0,48,0,0,0,0,0,0,4,118,101,99,52,95,100,
+111,116,0,18,117,0,0,18,117,0,0,0,8,58,115,113,114,116,0,18,117,0,59,120,0,0,0,0,0,1,0,9,0,108,101,
+110,103,116,104,0,1,0,0,12,118,0,0,0,1,4,118,101,99,52,95,100,111,116,0,18,118,0,0,18,118,0,0,0,8,
+58,115,113,114,116,0,18,118,0,59,120,0,0,0,0,0,1,0,11,0,110,111,114,109,97,108,105,122,101,0,1,0,0,
+11,118,0,0,0,1,3,2,0,12,1,117,0,2,58,118,101,99,52,0,18,118,0,0,17,48,0,48,0,0,0,0,0,0,3,2,0,12,1,
+119,0,2,18,117,0,0,0,4,118,101,99,52,95,100,111,116,0,18,117,0,0,18,117,0,0,0,3,2,0,9,1,108,0,2,58,
+115,113,114,116,0,18,117,0,59,120,0,0,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,
+117,0,0,18,108,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,119,0,0,18,117,0,0,0,8,18,119,
+0,59,120,121,122,0,0,0,1,0,12,0,110,111,114,109,97,108,105,122,101,0,1,0,0,12,118,0,0,0,1,3,2,0,12,
+1,119,0,2,18,118,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,0,0,18,118,0,0,0,3,2,0,9,1,108,0,2,
+58,115,113,114,116,0,18,118,0,59,120,0,0,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,118,0,0,18,108,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,119,0,0,18,118,0,0,0,8,18,
+119,0,0,0,0
diff --git a/src/mesa/shader/slang/library/slang_common_builtin_gc.h b/src/mesa/shader/slang/library/slang_common_builtin_gc.h
index 944378b3fbf..e5876528e1c 100644
--- a/src/mesa/shader/slang/library/slang_common_builtin_gc.h
+++ b/src/mesa/shader/slang/library/slang_common_builtin_gc.h
@@ -1,5 +1,5 @@
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
/* slang_common_builtin.gc */
3,2,2,1,5,1,103,108,95,77,97,120,76,105,103,104,116,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,
diff --git a/src/mesa/shader/slang/library/slang_core_gc.h b/src/mesa/shader/slang/library/slang_core_gc.h
index 51a9269e48c..a7aaa317fa7 100644
--- a/src/mesa/shader/slang/library/slang_core_gc.h
+++ b/src/mesa/shader/slang/library/slang_core_gc.h
@@ -1,5 +1,5 @@
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
/* slang_core.gc */
3,1,0,5,1,1,1,0,9,102,0,0,0,1,3,2,0,5,1,105,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,116,0,
diff --git a/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h b/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h
index 3ec7138e41b..b7f1d3816c1 100644
--- a/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h
+++ b/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h
@@ -1,5 +1,5 @@
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
/* slang_fragment_builtin.gc */
3,2,2,6,12,1,103,108,95,70,114,97,103,67,111,111,114,100,0,0,0,2,2,6,1,1,103,108,95,70,114,111,110,
diff --git a/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h b/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h
index 55324b12ddc..b47c2717c56 100644
--- a/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h
+++ b/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h
@@ -1,5 +1,5 @@
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
/* slang_vertex_builtin.gc */
3,2,2,5,12,1,103,108,95,80,111,115,105,116,105,111,110,0,0,0,2,2,5,9,1,103,108,95,80,111,105,110,