@@ -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"); |
@@ -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; | |||
} | |||
@@ -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 |
@@ -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, |
@@ -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, |
@@ -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, |
@@ -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, |