Home | History | Annotate | Download | only in glsl
      1 /*
      2  * Copyright  2010 Intel Corporation
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining a
      5  * copy of this software and associated documentation files (the "Software"),
      6  * to deal in the Software without restriction, including without limitation
      7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8  * and/or sell copies of the Software, and to permit persons to whom the
      9  * Software is furnished to do so, subject to the following conditions:
     10  *
     11  * The above copyright notice and this permission notice (including the next
     12  * paragraph) shall be included in all copies or substantial portions of the
     13  * Software.
     14  *
     15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     21  * DEALINGS IN THE SOFTWARE.
     22  */
     23 
     24 #include "main/core.h" /* for slot numbers */
     25 
     26 struct builtin_variable {
     27    enum ir_variable_mode mode;
     28    int slot;
     29    const char *type;
     30    const char *name;
     31 };
     32 
     33 static const builtin_variable builtin_core_vs_variables[] = {
     34    { ir_var_out, VERT_RESULT_HPOS, "vec4",  "gl_Position" },
     35    { ir_var_out, VERT_RESULT_PSIZ, "float", "gl_PointSize" },
     36 };
     37 
     38 static const builtin_variable builtin_core_fs_variables[] = {
     39    { ir_var_in,  FRAG_ATTRIB_WPOS,  "vec4",  "gl_FragCoord" },
     40    { ir_var_in,  FRAG_ATTRIB_FACE,  "bool",  "gl_FrontFacing" },
     41    { ir_var_out, FRAG_RESULT_COLOR, "vec4",  "gl_FragColor" },
     42 };
     43 
     44 static const builtin_variable builtin_100ES_fs_variables[] = {
     45    { ir_var_in,  FRAG_ATTRIB_PNTC,   "vec2",   "gl_PointCoord" },
     46 };
     47 
     48 static const builtin_variable builtin_110_fs_variables[] = {
     49    { ir_var_out, FRAG_RESULT_DEPTH, "float", "gl_FragDepth" },
     50 };
     51 
     52 static const builtin_variable builtin_110_deprecated_fs_variables[] = {
     53    { ir_var_in,  FRAG_ATTRIB_COL0,  "vec4",  "gl_Color" },
     54    { ir_var_in,  FRAG_ATTRIB_COL1,  "vec4",  "gl_SecondaryColor" },
     55    { ir_var_in,  FRAG_ATTRIB_FOGC,  "float", "gl_FogFragCoord" },
     56 };
     57 
     58 static const builtin_variable builtin_110_deprecated_vs_variables[] = {
     59    { ir_var_in,  VERT_ATTRIB_POS,    "vec4",  "gl_Vertex" },
     60    { ir_var_in,  VERT_ATTRIB_NORMAL, "vec3",  "gl_Normal" },
     61    { ir_var_in,  VERT_ATTRIB_COLOR0, "vec4",  "gl_Color" },
     62    { ir_var_in,  VERT_ATTRIB_COLOR1, "vec4",  "gl_SecondaryColor" },
     63    { ir_var_in,  VERT_ATTRIB_TEX0,   "vec4",  "gl_MultiTexCoord0" },
     64    { ir_var_in,  VERT_ATTRIB_TEX1,   "vec4",  "gl_MultiTexCoord1" },
     65    { ir_var_in,  VERT_ATTRIB_TEX2,   "vec4",  "gl_MultiTexCoord2" },
     66    { ir_var_in,  VERT_ATTRIB_TEX3,   "vec4",  "gl_MultiTexCoord3" },
     67    { ir_var_in,  VERT_ATTRIB_TEX4,   "vec4",  "gl_MultiTexCoord4" },
     68    { ir_var_in,  VERT_ATTRIB_TEX5,   "vec4",  "gl_MultiTexCoord5" },
     69    { ir_var_in,  VERT_ATTRIB_TEX6,   "vec4",  "gl_MultiTexCoord6" },
     70    { ir_var_in,  VERT_ATTRIB_TEX7,   "vec4",  "gl_MultiTexCoord7" },
     71    { ir_var_in,  VERT_ATTRIB_FOG,    "float", "gl_FogCoord" },
     72    { ir_var_out, VERT_RESULT_HPOS,   "vec4",  "gl_ClipVertex" },
     73    { ir_var_out, VERT_RESULT_COL0,   "vec4",  "gl_FrontColor" },
     74    { ir_var_out, VERT_RESULT_BFC0,   "vec4",  "gl_BackColor" },
     75    { ir_var_out, VERT_RESULT_COL1,   "vec4",  "gl_FrontSecondaryColor" },
     76    { ir_var_out, VERT_RESULT_BFC1,   "vec4",  "gl_BackSecondaryColor" },
     77    { ir_var_out, VERT_RESULT_FOGC,   "float", "gl_FogFragCoord" },
     78 };
     79 
     80 static const builtin_variable builtin_120_fs_variables[] = {
     81    { ir_var_in,  FRAG_ATTRIB_PNTC,   "vec2",   "gl_PointCoord" },
     82 };
     83 
     84 static const builtin_variable builtin_130_vs_variables[] = {
     85    { ir_var_in,  -1,                 "int",   "gl_VertexID" },
     86 };
     87 
     88 static const builtin_variable builtin_110_deprecated_uniforms[] = {
     89    { ir_var_uniform, -1, "mat4", "gl_ModelViewMatrix" },
     90    { ir_var_uniform, -1, "mat4", "gl_ProjectionMatrix" },
     91    { ir_var_uniform, -1, "mat4", "gl_ModelViewProjectionMatrix" },
     92    { ir_var_uniform, -1, "mat3", "gl_NormalMatrix" },
     93    { ir_var_uniform, -1, "mat4", "gl_ModelViewMatrixInverse" },
     94    { ir_var_uniform, -1, "mat4", "gl_ProjectionMatrixInverse" },
     95    { ir_var_uniform, -1, "mat4", "gl_ModelViewProjectionMatrixInverse" },
     96    { ir_var_uniform, -1, "mat4", "gl_ModelViewMatrixTranspose" },
     97    { ir_var_uniform, -1, "mat4", "gl_ProjectionMatrixTranspose" },
     98    { ir_var_uniform, -1, "mat4", "gl_ModelViewProjectionMatrixTranspose" },
     99    { ir_var_uniform, -1, "mat4", "gl_ModelViewMatrixInverseTranspose" },
    100    { ir_var_uniform, -1, "mat4", "gl_ProjectionMatrixInverseTranspose" },
    101    { ir_var_uniform, -1, "mat4", "gl_ModelViewProjectionMatrixInverseTranspose" },
    102    { ir_var_uniform, -1, "float", "gl_NormalScale" },
    103    { ir_var_uniform, -1, "gl_LightModelParameters", "gl_LightModel"},
    104 };
    105 
    106