/*
* Mesa 3-D graphics library
- * Version: 6.5.2
+ * Version: 6.5.3
*
- * Copyright (C) 2006 Brian Paul All Rights Reserved.
+ * Copyright (C) 2007 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"),
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#if !defined SLANG_LINK_H
-#define SLANG_LINK_H
+#ifndef SLANG_LINK_H
+#define SLANG_LINK_H 1
#include "slang_compile.h"
-#if defined __cplusplus
-extern "C" {
-#endif
-
-enum
-{
- SLANG_SHADER_VERTEX,
- SLANG_SHADER_FRAGMENT,
- SLANG_SHADER_MAX
-};
-
-
-/**
- * Active variables.
- *
- * Active uniforms/attribs can be queried by the application to get a
- * list of uniforms/attribs actually used by shaders (uniforms) or
- * vertex shader only (attribs).
- */
-/*@{*/
-typedef struct
-{
- slang_export_data_quant *quant;
- GLchar *name;
-} slang_active_variable;
-
-typedef struct
-{
- slang_active_variable *table;
- GLuint count;
-} slang_active_variables;
-/*@}*/
-
-
-/**
- * Attrib binding override.
- *
- * The application can override GL attrib binding by specifying its
- * preferred index assignment for a given attrib name. Those overrides
- * are taken into account while linking the program.
- */
-/*@{*/
-typedef struct
-{
- GLuint index;
- GLchar *name;
-} slang_attrib_override;
-
-typedef struct
-{
- slang_attrib_override *table;
- GLuint count;
-} slang_attrib_overrides;
-/*@}*/
-
-
-extern GLboolean
-_slang_attrib_overrides_add (slang_attrib_overrides *, GLuint, const GLchar *);
-
-
-/**
- * Uniform bindings.
- *
- * Each slang_uniform_binding holds an array of addresses to actual
- * memory locations in those shader types that use that
- * uniform. Uniform bindings are held in an array and accessed by
- * array index which is seen to the application as a uniform location.
- *
- * When the application writes to a particular uniform, it specifies
- * its location. This location is treated as an array index to
- * slang_uniform_bindings::table and tested against
- * slang_uniform_bindings::count limit. The result is a pointer to
- * slang_uniform_binding. The type of data being written to uniform
- * is tested against slang_uniform_binding::quant. If the types are
- * compatible, the array slang_uniform_binding::address is iterated
- * for each shader type and if the address is valid (i.e. the uniform
- * is used by this shader type), the new uniform value is written at
- * that address.
- */
-/*@{*/
-typedef struct
-{
- slang_export_data_quant *quant;
- GLchar *name;
- GLuint address[SLANG_SHADER_MAX];
-} slang_uniform_binding;
-
-typedef struct
-{
- slang_uniform_binding *table;
- GLuint count;
-} slang_uniform_bindings;
-/*@}*/
-
-
-/**
- * Attrib bindings.
- *
- * There is a fixed number of vertex attrib vectors (attrib
- * slots). The slang_attrib_slot::addr maps vertex attrib index to the
- * actual memory location of the attrib in vertex shader. One vertex
- * attrib can span over many attrib slots (this is the case for
- * matrices). The slang_attrib_binding::first_slot_index holds the
- * first slot index that the attrib is bound to.
- */
-/*@{*/
-typedef struct
-{
- slang_export_data_quant *quant;
- GLchar *name;
- GLuint first_slot_index;
-} slang_attrib_binding;
-
-typedef struct
-{
- GLuint addr; /**< memory location */
- GLuint fill; /**< 1..4, number of components used */
-} slang_attrib_slot;
-
-typedef struct
-{
- slang_attrib_binding bindings[MAX_VERTEX_ATTRIBS];
- GLuint binding_count;
- slang_attrib_slot slots[MAX_VERTEX_ATTRIBS];
-} slang_attrib_bindings;
-/*@}*/
-
-
-
-/**
- * Varying bindings.
- *
- * There is a fixed number of varying floats (varying slots). The
- * slang_varying_slot::vert_addr maps varying float index to the
- * actual memory location of the output variable in vertex shader.
- * The slang_varying_slot::frag_addr maps varying float index to the
- * actual memory location of the input variable in fragment shader.
- */
-/*@{*/
-typedef struct
-{
- GLuint vert_addr;
- GLuint frag_addr;
-} slang_varying_slot;
-
-typedef struct
-{
- slang_export_data_quant *quant;
- GLchar *name;
- GLuint first_slot_index;
-} slang_varying_binding;
-
-typedef struct
-{
- slang_varying_binding bindings[MAX_VARYING * 4];
- GLuint binding_count;
- slang_varying_slot slots[MAX_VARYING * 4];
- GLuint slot_count;
-} slang_varying_bindings;
-/*@}*/
-
-
-/**
- * Texture usage.
- *
- * A slang_texture_usage struct holds indirect information about
- * texture image unit usage. The slang_texture_usages::table is
- * derived from active uniform table by extracting only uniforms that
- * are samplers.
- *
- * To collect current texture usage one must iterate the
- * slang_texture_usages::table and read uniform at address
- * slang_texture_usage::frag_address to get texture unit index. This
- * index, coupled with texture access type (target) taken from
- * slang_texture_usage::quant forms texture usage for that texture
- * unit.
- */
-/*@{*/
-typedef struct
-{
- slang_export_data_quant *quant;
- GLuint frag_address;
-} slang_texture_usage;
-
-typedef struct
-{
- slang_texture_usage *table;
- GLuint count;
-} slang_texture_usages;
-/*@}*/
-
-
-extern GLvoid
-_slang_texture_usages_ctr (slang_texture_usages *);
-
-extern GLvoid
-_slang_texture_usages_dtr (slang_texture_usages *);
-
-enum
-{
- SLANG_COMMON_FIXED_MODELVIEWMATRIX,
- SLANG_COMMON_FIXED_PROJECTIONMATRIX,
- SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIX,
- SLANG_COMMON_FIXED_TEXTUREMATRIX,
- SLANG_COMMON_FIXED_NORMALMATRIX,
- SLANG_COMMON_FIXED_MODELVIEWMATRIXINVERSE,
- SLANG_COMMON_FIXED_PROJECTIONMATRIXINVERSE,
- SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXINVERSE,
- SLANG_COMMON_FIXED_TEXTUREMATRIXINVERSE,
- SLANG_COMMON_FIXED_MODELVIEWMATRIXTRANSPOSE,
- SLANG_COMMON_FIXED_PROJECTIONMATRIXTRANSPOSE,
- SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXTRANSPOSE,
- SLANG_COMMON_FIXED_TEXTUREMATRIXTRANSPOSE,
- SLANG_COMMON_FIXED_MODELVIEWMATRIXINVERSETRANSPOSE,
- SLANG_COMMON_FIXED_PROJECTIONMATRIXINVERSETRANSPOSE,
- SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXINVERSETRANSPOSE,
- SLANG_COMMON_FIXED_TEXTUREMATRIXINVERSETRANSPOSE,
- SLANG_COMMON_FIXED_NORMALSCALE,
- SLANG_COMMON_FIXED_DEPTHRANGE,
- SLANG_COMMON_FIXED_CLIPPLANE,
- SLANG_COMMON_FIXED_POINT,
- SLANG_COMMON_FIXED_FRONTMATERIAL,
- SLANG_COMMON_FIXED_BACKMATERIAL,
- SLANG_COMMON_FIXED_LIGHTSOURCE,
- SLANG_COMMON_FIXED_LIGHTMODEL,
- SLANG_COMMON_FIXED_FRONTLIGHTMODELPRODUCT,
- SLANG_COMMON_FIXED_BACKLIGHTMODELPRODUCT,
- SLANG_COMMON_FIXED_FRONTLIGHTPRODUCT,
- SLANG_COMMON_FIXED_BACKLIGHTPRODUCT,
- SLANG_COMMON_FIXED_TEXTUREENVCOLOR,
- SLANG_COMMON_FIXED_EYEPLANES,
- SLANG_COMMON_FIXED_EYEPLANET,
- SLANG_COMMON_FIXED_EYEPLANER,
- SLANG_COMMON_FIXED_EYEPLANEQ,
- SLANG_COMMON_FIXED_OBJECTPLANES,
- SLANG_COMMON_FIXED_OBJECTPLANET,
- SLANG_COMMON_FIXED_OBJECTPLANER,
- SLANG_COMMON_FIXED_OBJECTPLANEQ,
- SLANG_COMMON_FIXED_FOG,
- SLANG_COMMON_FIXED_MAX
-};
-
-enum
-{
- SLANG_VERTEX_FIXED_POSITION,
- SLANG_VERTEX_FIXED_POINTSIZE,
- SLANG_VERTEX_FIXED_CLIPVERTEX,
- SLANG_VERTEX_FIXED_COLOR,
- SLANG_VERTEX_FIXED_SECONDARYCOLOR,
- SLANG_VERTEX_FIXED_NORMAL,
- SLANG_VERTEX_FIXED_VERTEX,
- SLANG_VERTEX_FIXED_MULTITEXCOORD0,
- SLANG_VERTEX_FIXED_MULTITEXCOORD1,
- SLANG_VERTEX_FIXED_MULTITEXCOORD2,
- SLANG_VERTEX_FIXED_MULTITEXCOORD3,
- SLANG_VERTEX_FIXED_MULTITEXCOORD4,
- SLANG_VERTEX_FIXED_MULTITEXCOORD5,
- SLANG_VERTEX_FIXED_MULTITEXCOORD6,
- SLANG_VERTEX_FIXED_MULTITEXCOORD7,
- SLANG_VERTEX_FIXED_FOGCOORD,
- SLANG_VERTEX_FIXED_FRONTCOLOR,
- SLANG_VERTEX_FIXED_BACKCOLOR,
- SLANG_VERTEX_FIXED_FRONTSECONDARYCOLOR,
- SLANG_VERTEX_FIXED_BACKSECONDARYCOLOR,
- SLANG_VERTEX_FIXED_TEXCOORD,
- SLANG_VERTEX_FIXED_FOGFRAGCOORD,
- SLANG_VERTEX_FIXED_MAX
-};
-
-enum
-{
- SLANG_FRAGMENT_FIXED_FRAGCOORD,
- SLANG_FRAGMENT_FIXED_FRONTFACING,
- SLANG_FRAGMENT_FIXED_FRAGCOLOR,
- SLANG_FRAGMENT_FIXED_FRAGDATA,
- SLANG_FRAGMENT_FIXED_FRAGDEPTH,
- SLANG_FRAGMENT_FIXED_COLOR,
- SLANG_FRAGMENT_FIXED_SECONDARYCOLOR,
- SLANG_FRAGMENT_FIXED_TEXCOORD,
- SLANG_FRAGMENT_FIXED_FOGFRAGCOORD,
- SLANG_FRAGMENT_FIXED_MAX
-};
-
-enum
-{
- SLANG_COMMON_CODE_MAIN,
- SLANG_COMMON_CODE_MAX
-};
-
-/**
- * XXX promote this to mtypes.h?
- */
-typedef struct
-{
- slang_active_variables active_uniforms;
- slang_active_variables active_attribs;
- slang_attrib_overrides attrib_overrides;
- slang_uniform_bindings uniforms;
- slang_attrib_bindings attribs;
- slang_varying_bindings varyings;
- slang_texture_usages texture_usage;
- GLuint common_fixed_entries[SLANG_SHADER_MAX][SLANG_COMMON_FIXED_MAX];
- GLuint vertex_fixed_entries[SLANG_VERTEX_FIXED_MAX];
- GLuint fragment_fixed_entries[SLANG_FRAGMENT_FIXED_MAX];
- GLuint code[SLANG_SHADER_MAX][SLANG_COMMON_CODE_MAX];
- slang_assembly_file *assemblies[SLANG_SHADER_MAX];
-} slang_program;
-
-extern GLvoid
-_slang_program_ctr (slang_program *);
-
-extern GLvoid
-_slang_program_dtr (slang_program *);
-
-extern GLvoid
-_slang_program_rst (slang_program *);
-
-extern GLboolean
-_slang_link (slang_program *, slang_code_object **, GLuint);
-
extern void
_slang_link2(GLcontext *ctx, GLhandleARB h,
struct gl_program *prog);
extern void
-_slang_remap_attribute(struct gl_program *prog, GLuint oldAttrib, GLuint newAttrib);
-
+_slang_remap_attribute(struct gl_program *prog, GLuint oldAttrib,
+ GLuint newAttrib);
-#ifdef __cplusplus
-}
-#endif
#endif