diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/mtypes.h | 267 | 
1 files changed, 167 insertions, 100 deletions
| diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 57db1acffb..5586e68510 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -156,7 +156,8 @@ struct gl_texture_format;   * In GL_ARB_vertex_shader / OpenGL 2.0 the aliasing is disallowed (the   * generic attributes are distinct/separate).   */ -enum { +enum +{     VERT_ATTRIB_POS = 0,     VERT_ATTRIB_WEIGHT = 1,     VERT_ATTRIB_NORMAL = 2, @@ -214,7 +215,8 @@ enum {  /**   * Indexes for fragment program input attributes.   */ -enum { +enum +{     FRAG_ATTRIB_WPOS = 0,     FRAG_ATTRIB_COL0 = 1,     FRAG_ATTRIB_COL1 = 2, @@ -282,7 +284,8 @@ enum {  /**   * Data structure for color tables   */ -struct gl_color_table { +struct gl_color_table +{     GLenum Format;         /**< GL_ALPHA, GL_RGB, GL_RGB, etc */     GLenum IntFormat;     GLuint Size;           /**< number of entries (rows) in table */ @@ -364,7 +367,8 @@ struct gl_color_table {  /**   * Material shininess lookup table.   */ -struct gl_shine_tab { +struct gl_shine_tab +{     struct gl_shine_tab *next, *prev;     GLfloat tab[SHINE_TABLE_SIZE+1];     GLfloat shininess; @@ -373,9 +377,10 @@ struct gl_shine_tab {  /** - * Light. + * Light source state.   */ -struct gl_light { +struct gl_light +{     struct gl_light *next;	/**< double linked list with sentinel */     struct gl_light *prev; @@ -415,9 +420,10 @@ struct gl_light {  /** - * Light model. + * Light model state.   */ -struct gl_lightmodel { +struct gl_lightmodel +{     GLfloat Ambient[4];		/**< ambient color */     GLboolean LocalViewer;	/**< Local (or infinite) view point? */     GLboolean TwoSide;		/**< Two (or one) sided lighting? */ @@ -427,7 +433,7 @@ struct gl_lightmodel {  /** - * Material. + * Material state.   */  struct gl_material  { @@ -436,17 +442,19 @@ struct gl_material  /** - * Accumulation buffer attributes. + * Accumulation buffer attribute group (GL_ACCUM_BUFFER_BIT)   */ -struct gl_accum_attrib { +struct gl_accum_attrib +{     GLfloat ClearColor[4];	/**< Accumulation buffer clear color */  };  /** - * Color buffer attributes. + * Color buffer attribute group (GL_COLOR_BUFFER_BIT).   */ -struct gl_colorbuffer_attrib { +struct gl_colorbuffer_attrib +{     GLuint ClearIndex;			/**< Index to use for glClear */     GLclampf ClearColor[4];		/**< Color to use for glClear */ @@ -494,9 +502,10 @@ struct gl_colorbuffer_attrib {  /** - * Current attributes. + * Current attribute group (GL_CURRENT_BIT).   */ -struct gl_current_attrib { +struct gl_current_attrib +{     /**      * \name Values valid only when FLUSH_VERTICES has been called.      */ @@ -526,9 +535,10 @@ struct gl_current_attrib {  /** - * Depth buffer attributes. + * Depth buffer attribute group (GL_DEPTH_BUFFER_BIT).   */ -struct gl_depthbuffer_attrib { +struct gl_depthbuffer_attrib +{     GLenum Func;			/**< Function for depth buffer compare */     GLclampd Clear;		/**< Value to clear depth buffer to */     GLboolean Test;		/**< Depth buffering enabled flag */ @@ -540,9 +550,10 @@ struct gl_depthbuffer_attrib {  /** - * glEnable()/glDisable() attributes. + * glEnable()/glDisable() attribute group (GL_ENABLE_BIT).   */ -struct gl_enable_attrib { +struct gl_enable_attrib +{     GLboolean AlphaTest;     GLboolean AutoNormal;     GLboolean Blend; @@ -618,9 +629,10 @@ struct gl_enable_attrib {  /** - * Eval attributes. + * Evaluator attribute group (GL_EVAL_BIT).   */ -struct gl_eval_attrib { +struct gl_eval_attrib +{     /**      * \name Enable bits       */ @@ -662,9 +674,10 @@ struct gl_eval_attrib {  /** - * Fog attributes. + * Fog attribute group (GL_FOG_BIT).   */ -struct gl_fog_attrib { +struct gl_fog_attrib +{     GLboolean Enabled;		/**< Fog enabled flag */     GLfloat Color[4];		/**< Fog color */     GLfloat Density;		/**< Density >= 0.0 */ @@ -678,11 +691,12 @@ struct gl_fog_attrib {  /**  - * Hint attributes. + * Hint attribute group (GL_HINT_BIT).   *    * Values are always one of GL_FASTEST, GL_NICEST, or GL_DONT_CARE.   */ -struct gl_hint_attrib { +struct gl_hint_attrib +{     GLenum PerspectiveCorrection;     GLenum PointSmooth;     GLenum LineSmooth; @@ -697,7 +711,8 @@ struct gl_hint_attrib {  /**   * Histogram attributes.   */ -struct gl_histogram_attrib { +struct gl_histogram_attrib +{     GLuint Width;				/**< number of table entries */     GLint Format;				/**< GL_ALPHA, GL_RGB, etc */     GLuint Count[HISTOGRAM_TABLE_SIZE][4];	/**< the histogram */ @@ -713,7 +728,8 @@ struct gl_histogram_attrib {  /**   * Color Min/max state.   */ -struct gl_minmax_attrib { +struct gl_minmax_attrib +{     GLenum Format;     GLboolean Sink;     GLfloat Min[4], Max[4];   /**< RGBA */ @@ -723,7 +739,8 @@ struct gl_minmax_attrib {  /**   * Image convolution state.   */ -struct gl_convolution_attrib { +struct gl_convolution_attrib +{     GLenum Format;     GLenum InternalFormat;     GLuint Width; @@ -744,10 +761,11 @@ struct gl_convolution_attrib {  /** - * Lighting attributes. + * Lighting attribute group (GL_LIGHT_BIT).   */ -struct gl_light_attrib { -   struct gl_light Light[MAX_LIGHTS];	/**< Array of lights */ +struct gl_light_attrib +{ +   struct gl_light Light[MAX_LIGHTS];	/**< Array of light sources */     struct gl_lightmodel Model;		/**< Lighting model */     /** @@ -767,7 +785,7 @@ struct gl_light_attrib {     struct gl_light EnabledList;         /**< List sentinel */     /**  -    * Derived for optimizations:  +    * Derived state for optimizations:       */     /*@{*/     GLboolean _NeedEyeCoords;		 @@ -779,9 +797,10 @@ struct gl_light_attrib {  /** - * Line attributes. + * Line attribute group (GL_LINE_BIT).   */ -struct gl_line_attrib { +struct gl_line_attrib +{     GLboolean SmoothFlag;	/**< GL_LINE_SMOOTH enabled? */     GLboolean StippleFlag;	/**< GL_LINE_STIPPLE enabled? */     GLushort StipplePattern;	/**< Stipple pattern */ @@ -792,14 +811,19 @@ struct gl_line_attrib {  /** - * Display list state. + * Display list attribute group (GL_LIST_BIT).   */ -struct gl_list_attrib { +struct gl_list_attrib +{     GLuint ListBase;  }; -struct gl_list_instruction { +/** + * Used by device drivers to hook new commands into display lists. + */ +struct gl_list_instruction +{     GLuint Size;     void (*Execute)( GLcontext *ctx, void *data );     void (*Destroy)( GLcontext *ctx, void *data ); @@ -808,16 +832,21 @@ struct gl_list_instruction {  #define MAX_DLIST_EXT_OPCODES 16 -struct gl_list_extensions { +/** + * Used by device drivers to hook new commands into display lists. + */ +struct gl_list_extensions +{     struct gl_list_instruction Opcode[MAX_DLIST_EXT_OPCODES];     GLuint NumOpcodes;  };  /** - * Multisample state + * Multisample attribute group (GL_MULTISAMPLE_BIT).   */ -struct gl_multisample_attrib { +struct gl_multisample_attrib +{     GLboolean Enabled;     GLboolean SampleAlphaToCoverage;     GLboolean SampleAlphaToOne; @@ -828,9 +857,10 @@ struct gl_multisample_attrib {  /** - * Pixel attributes. + * Pixel attribute group (GL_PIXEL_MODE_BIT).   */ -struct gl_pixel_attrib { +struct gl_pixel_attrib +{     GLenum ReadBuffer;		/**< source buffer for glReadPixels()/glCopyPixels() */     GLubyte _ReadSrcMask;	/**< Not really a mask, but like _DrawDestMask  				  * @@ -907,9 +937,10 @@ struct gl_pixel_attrib {  /** - * Point attributes. + * Point attribute group (GL_POINT_BIT).   */ -struct gl_point_attrib { +struct gl_point_attrib +{     GLboolean SmoothFlag;	/**< True if GL_POINT_SMOOTH is enabled */     GLfloat Size;		/**< User-specified point size */     GLfloat _Size;		/**< Size clamped to Const.Min/MaxPointSize */ @@ -925,9 +956,10 @@ struct gl_point_attrib {  /** - * Polygon attributes. + * Polygon attribute group (GL_POLYGON_BIT).   */ -struct gl_polygon_attrib { +struct gl_polygon_attrib +{     GLenum FrontFace;		/**< Either GL_CW or GL_CCW */     GLenum FrontMode;		/**< Either GL_POINT, GL_LINE or GL_FILL */     GLenum BackMode;		/**< Either GL_POINT, GL_LINE or GL_FILL */ @@ -945,9 +977,10 @@ struct gl_polygon_attrib {  /** - * Scissor attributes. + * Scissor attributes (GL_SCISSOR_BIT).   */ -struct gl_scissor_attrib { +struct gl_scissor_attrib +{     GLboolean Enabled;		/**< Scissor test enabled? */     GLint X, Y;			/**< Lower left corner of box */     GLsizei Width, Height;	/**< Size of box */ @@ -955,9 +988,10 @@ struct gl_scissor_attrib {  /** - * Stencil attributes. + * Stencil attribute group (GL_STENCIL_BUFFER_BIT).   */ -struct gl_stencil_attrib { +struct gl_stencil_attrib +{     GLboolean Enabled;		/**< Enabled flag */     GLboolean TestTwoSide;	/**< GL_EXT_stencil_two_side */     GLubyte ActiveFace;		/**< GL_EXT_stencil_two_side (0 or 1) */ @@ -1099,7 +1133,8 @@ typedef GLboolean (*StoreTexImageFunc)(GLcontext *ctx, GLuint dims,  /**   * Texture format record    */ -struct gl_texture_format { +struct gl_texture_format +{     GLint MesaFormat;		/**< One of the MESA_FORMAT_* values */     GLenum BaseFormat;		/**< Either GL_RGB, GL_RGBA, GL_ALPHA, @@ -1136,9 +1171,11 @@ struct gl_texture_format {  /** - * Texture image record  + * Texture image state.  Describes the dimensions of a texture image, + * the texel format and pointers to Texel Fetch functions.   */ -struct gl_texture_image { +struct gl_texture_image +{     GLenum Format;		/**< Either GL_RGB, GL_RGBA, GL_ALPHA,  				 *   GL_LUMINANCE, GL_LUMINANCE_ALPHA,  				 *   GL_INTENSITY, GL_COLOR_INDEX or @@ -1199,9 +1236,12 @@ struct gl_texture_image {  /** - * Texture object record + * Texture object state.  Contains the array of mipmap images, border color, + * wrap modes, filter modes, shadow/texcompare state, and the per-texture + * color palette.   */ -struct gl_texture_object { +struct gl_texture_object +{     _glthread_Mutex Mutex;	/**< for thread safety */     GLint RefCount;		/**< reference count */     GLboolean DeletePending;	/**< Has glDeleteTexture been called? */ @@ -1260,7 +1300,8 @@ struct gl_texture_object {   * If GL_NV_texture_env_combine4 is ever supported, the arrays in this   * structure will need to be expanded for 4 elements.   */ -struct gl_tex_env_combine_state { +struct gl_tex_env_combine_state +{     GLenum ModeRGB;       /**< GL_REPLACE, GL_DECAL, GL_ADD, etc. */     GLenum ModeA;         /**< GL_REPLACE, GL_DECAL, GL_ADD, etc. */     GLenum SourceRGB[3];  /**< GL_PRIMARY_COLOR, GL_TEXTURE, etc. */ @@ -1275,9 +1316,12 @@ struct gl_tex_env_combine_state {  /** - * Texture unit record  + * Texture unit state.  Contains enable flags, texture environment/function/ + * combiners, texgen state, pointers to current texture objects and + * post-filter color tables.   */ -struct gl_texture_unit { +struct gl_texture_unit +{     GLuint Enabled;              /**< bitmask of TEXTURE_*_BIT flags */     GLuint _ReallyEnabled;       /**< 0 or exactly one of TEXTURE_*_BIT flags */ @@ -1346,9 +1390,10 @@ struct gl_texture_unit {  /** - * Texture attributes + * Texture attribute group (GL_TEXTURE_BIT).   */ -struct gl_texture_attrib { +struct gl_texture_attrib +{     /**      * name multitexture       */ @@ -1376,9 +1421,10 @@ struct gl_texture_attrib {  /** - * Transformation attributes. + * Transformation attribute group (GL_TRANSFORM_BIT).   */ -struct gl_transform_attrib { +struct gl_transform_attrib +{     GLenum MatrixMode;				/**< Matrix mode */     GLfloat EyeUserPlane[MAX_CLIP_PLANES][4];	/**< User clip planes */     GLfloat _ClipUserPlane[MAX_CLIP_PLANES][4];	/**< derived */ @@ -1394,9 +1440,10 @@ struct gl_transform_attrib {  /** - * Viewport attributes. + * Viewport attribute group (GL_VIEWPORT_BIT).   */ -struct gl_viewport_attrib { +struct gl_viewport_attrib +{     GLint X, Y;			/**< position */     GLsizei Width, Height;	/**< size */     GLfloat Near, Far;		/**< Depth buffer range */ @@ -1405,9 +1452,10 @@ struct gl_viewport_attrib {  /** - * Node for the attribute stack + * Node for the attribute stack.   */ -struct gl_attrib_node { +struct gl_attrib_node +{     GLbitfield kind;     void *data;     struct gl_attrib_node *next; @@ -1417,7 +1465,8 @@ struct gl_attrib_node {  /**   * GL_ARB_vertex/pixel_buffer_object buffer object   */ -struct gl_buffer_object { +struct gl_buffer_object +{     GLint RefCount;     GLuint Name;     GLenum Usage; @@ -1434,7 +1483,8 @@ struct gl_buffer_object {  /**   * Client pixel packing/unpacking attributes   */ -struct gl_pixelstore_attrib { +struct gl_pixelstore_attrib +{     GLint Alignment;     GLint RowLength;     GLint SkipPixels; @@ -1455,7 +1505,8 @@ struct gl_pixelstore_attrib {  /**   * Client vertex array attributes   */ -struct gl_client_array { +struct gl_client_array +{     GLint Size;                  /**< components per element (1,2,3,4) */     GLenum Type;                 /**< datatype: GL_FLOAT, GL_INT, etc */     GLsizei Stride;		/**< user-specified stride */ @@ -1475,7 +1526,8 @@ struct gl_client_array {  /**   * Vertex array state   */ -struct gl_array_attrib { +struct gl_array_attrib +{     struct gl_client_array Vertex;	     /**< client data descriptors */     struct gl_client_array Normal;     struct gl_client_array Color; @@ -1506,7 +1558,8 @@ struct gl_array_attrib {  /**   * Feedback buffer state   */ -struct gl_feedback { +struct gl_feedback +{     GLenum Type;     GLuint _Mask;		/* FB_* bits */     GLfloat *Buffer; @@ -1518,7 +1571,8 @@ struct gl_feedback {  /**   * Selection buffer state   */ -struct gl_selection { +struct gl_selection +{     GLuint *Buffer;	/**< selection buffer */     GLuint BufferSize;	/**< size of the selection buffer */     GLuint BufferCount;	/**< number of values in the selection buffer */ @@ -1688,7 +1742,8 @@ struct fragment_program  /**   * State common to vertex and fragment programs.   */ -struct program_state { +struct gl_program_state +{     GLint ErrorPos;                       /* GL_PROGRAM_ERROR_POSITION_NV */     const char *ErrorString;              /* GL_PROGRAM_ERROR_STRING_NV */  }; @@ -1697,7 +1752,7 @@ struct program_state {  /**   * State vars for GL_ARB/GL_NV_vertex_program   */ -struct vertex_program_state +struct gl_vertex_program_state  {     GLboolean Enabled;                  /**< GL_VERTEX_PROGRAM_NV */     GLboolean _Enabled;                 /**< Really enabled? */ @@ -1728,7 +1783,7 @@ struct vertex_program_state  /*   * State for GL_ARB/NV_fragment_program   */ -struct fragment_program_state +struct gl_fragment_program_state  {     GLboolean Enabled;                    /* GL_VERTEX_PROGRAM_NV */     GLboolean _Enabled;                   /* Really enabled? */ @@ -1748,7 +1803,7 @@ struct fragment_program_state  /*   * State for GL_ARB_occlusion_query   */ -struct occlusion_state +struct gl_occlusion_state  {     GLboolean Active;     GLuint CurrentQueryObject; @@ -1921,7 +1976,8 @@ struct gl_constants  /** - * List of extensions. + * Enable flag for each OpenGL extension.  Different device drivers will + * enable different extensions at runtime.   */  struct gl_extensions  { @@ -2075,13 +2131,13 @@ struct matrix_stack  #define IMAGE_CLAMP_BIT                           0x800 /* extra */ -/** Transfer ops up to convolution */ +/** Pixel Transfer ops up to convolution */  #define IMAGE_PRE_CONVOLUTION_BITS (IMAGE_SCALE_BIAS_BIT |     \                                      IMAGE_SHIFT_OFFSET_BIT |   \                                      IMAGE_MAP_COLOR_BIT |      \                                      IMAGE_COLOR_TABLE_BIT) -/** Transfer ops after convolution */ +/** Pixel transfer ops after convolution */  #define IMAGE_POST_CONVOLUTION_BITS (IMAGE_POST_CONVOLUTION_SCALE_BIAS |      \                                       IMAGE_POST_CONVOLUTION_COLOR_TABLE_BIT | \                                       IMAGE_COLOR_MATRIX_BIT |                 \ @@ -2234,7 +2290,8 @@ typedef union node Node;  /**   * Core Mesa's support for tnl modules:   */ -struct gl_tnl_module { +struct gl_tnl_module +{     /**      * Vertex format to be lazily swapped into current dispatch.      */ @@ -2250,7 +2307,12 @@ struct gl_tnl_module {     /*@}*/  }; -struct mesa_list_state { + +/** + * State used during display list compilation and execution. + */ +struct mesa_list_state +{     GLuint CallDepth;		/**< Current recursion calling depth */     Node *CurrentListPtr;	/**< Head of list being compiled */     GLuint CurrentListNum;	/**< Number of the list being compiled */ @@ -2273,14 +2335,17 @@ struct mesa_list_state {  /** - * Mesa context + * Mesa rendering context.   *   * This is the central context data structure for Mesa.  Almost all   * OpenGL state is contained in this structure.   * Think of this as a base class from which device drivers will derive   * sub classes. + * + * The GLcontext typedef names this structure.   */ -struct __GLcontextRec { +struct __GLcontextRec +{     /**      * \name OS related interfaces.       * @@ -2373,15 +2438,6 @@ struct __GLcontextRec {     struct gl_viewport_attrib	Viewport;	/**< Viewport attributes */     /*@}*/ -   /** \name Other attribute groups */ -   /*@{*/ -   struct gl_histogram_attrib	Histogram; -   struct gl_minmax_attrib	MinMax; -   struct gl_convolution_attrib Convolution1D; -   struct gl_convolution_attrib Convolution2D; -   struct gl_convolution_attrib Separable2D; -   /*@}*/ -     /** \name Client attribute stack */     /*@{*/     GLuint ClientAttribStackDepth; @@ -2394,6 +2450,15 @@ struct __GLcontextRec {     struct gl_pixelstore_attrib	Pack;	/**< Pixel packing */     struct gl_pixelstore_attrib	Unpack;	/**< Pixel unpacking */     struct gl_pixelstore_attrib	DefaultPacking;	/**< Default params */ +   /*@}*/ + +   /** \name Other assorted state (not pushed/popped on attribute stack) */ +   /*@{*/ +   struct gl_histogram_attrib	Histogram; +   struct gl_minmax_attrib	MinMax; +   struct gl_convolution_attrib Convolution1D; +   struct gl_convolution_attrib Convolution2D; +   struct gl_convolution_attrib Separable2D;     struct gl_evaluators EvalMap;   /**< All evaluators */     struct gl_feedback   Feedback;  /**< Feedback */ @@ -2406,18 +2471,18 @@ struct __GLcontextRec {     struct gl_color_table PostColorMatrixColorTable;     struct gl_color_table ProxyPostColorMatrixColorTable; -   struct program_state Program;             /**< for vertex or fragment progs */ -   struct vertex_program_state VertexProgram;      /**< GL_NV_vertex_program */ -   struct fragment_program_state FragmentProgram;  /**< GL_NV_fragment_program */ +   struct gl_program_state Program;        /**< for vertex or fragment progs */ +   struct gl_vertex_program_state VertexProgram;   /**< GL_NV_vertex_program */ +   struct gl_fragment_program_state FragmentProgram;  /**< GL_NV_fragment_program */ -   struct occlusion_state Occlusion;  /**< GL_ARB_occlusion_query */ +   struct gl_occlusion_state Occlusion;  /**< GL_ARB_occlusion_query */ +   /*@}*/     GLenum ErrorValue;        /**< Last error code */     GLenum RenderMode;        /**< either GL_RENDER, GL_SELECT, GL_FEEDBACK */     GLuint NewState;          /**< bitwise-or of _NEW_* flags */ -   /*@}*/ -   /** \name Derived */ +   /** \name Derived state */     /*@{*/     GLuint _TriangleCaps;      /**< bitwise-or of DD_* flags */     GLuint _ImageTransferState;/**< bitwise-or of IMAGE_*_BIT flags */ @@ -2504,7 +2569,8 @@ extern int MESA_DEBUG_FLAGS;  #endif -enum _verbose { +enum _verbose +{     VERBOSE_VARRAY		= 0x0001,     VERBOSE_TEXTURE		= 0x0002,     VERBOSE_IMMEDIATE		= 0x0004, @@ -2519,7 +2585,8 @@ enum _verbose {  }; -enum _debug { +enum _debug +{     DEBUG_ALWAYS_FLUSH		= 0x1  }; | 
