Home | History | Annotate | Download | only in nouveau
      1 /*
      2  * Copyright (C) 2009 Francisco Jerez.
      3  * All Rights Reserved.
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining
      6  * a copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sublicense, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice (including the
     14  * next paragraph) shall be included in all copies or substantial
     15  * portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
     20  * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
     21  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     22  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     23  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24  *
     25  */
     26 
     27 #ifndef __NOUVEAU_STATE_H__
     28 #define __NOUVEAU_STATE_H__
     29 
     30 enum {
     31 	NOUVEAU_STATE_ALPHA_FUNC,
     32 	NOUVEAU_STATE_BLEND_COLOR,
     33 	NOUVEAU_STATE_BLEND_EQUATION,
     34 	NOUVEAU_STATE_BLEND_FUNC,
     35 	NOUVEAU_STATE_CLIP_PLANE0,
     36 	NOUVEAU_STATE_CLIP_PLANE1,
     37 	NOUVEAU_STATE_CLIP_PLANE2,
     38 	NOUVEAU_STATE_CLIP_PLANE3,
     39 	NOUVEAU_STATE_CLIP_PLANE4,
     40 	NOUVEAU_STATE_CLIP_PLANE5,
     41 	NOUVEAU_STATE_COLOR_MASK,
     42 	NOUVEAU_STATE_COLOR_MATERIAL,
     43 	NOUVEAU_STATE_CULL_FACE,
     44 	NOUVEAU_STATE_FRONT_FACE,
     45 	NOUVEAU_STATE_DEPTH,
     46 	NOUVEAU_STATE_DITHER,
     47 	NOUVEAU_STATE_FRAG,
     48 	NOUVEAU_STATE_FRAMEBUFFER,
     49 	NOUVEAU_STATE_FOG,
     50 	NOUVEAU_STATE_LIGHT_ENABLE,
     51 	NOUVEAU_STATE_LIGHT_MODEL,
     52 	NOUVEAU_STATE_LIGHT_SOURCE0,
     53 	NOUVEAU_STATE_LIGHT_SOURCE1,
     54 	NOUVEAU_STATE_LIGHT_SOURCE2,
     55 	NOUVEAU_STATE_LIGHT_SOURCE3,
     56 	NOUVEAU_STATE_LIGHT_SOURCE4,
     57 	NOUVEAU_STATE_LIGHT_SOURCE5,
     58 	NOUVEAU_STATE_LIGHT_SOURCE6,
     59 	NOUVEAU_STATE_LIGHT_SOURCE7,
     60 	NOUVEAU_STATE_LINE_STIPPLE,
     61 	NOUVEAU_STATE_LINE_MODE,
     62 	NOUVEAU_STATE_LOGIC_OPCODE,
     63 	NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
     64 	NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
     65 	NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE,
     66 	NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE,
     67 	NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR,
     68 	NOUVEAU_STATE_MATERIAL_BACK_SPECULAR,
     69 	NOUVEAU_STATE_MATERIAL_FRONT_SHININESS,
     70 	NOUVEAU_STATE_MATERIAL_BACK_SHININESS,
     71 	NOUVEAU_STATE_MODELVIEW,
     72 	NOUVEAU_STATE_POINT_MODE,
     73 	NOUVEAU_STATE_POINT_PARAMETER,
     74 	NOUVEAU_STATE_POLYGON_MODE,
     75 	NOUVEAU_STATE_POLYGON_OFFSET,
     76 	NOUVEAU_STATE_POLYGON_STIPPLE,
     77 	NOUVEAU_STATE_PROJECTION,
     78 	NOUVEAU_STATE_RENDER_MODE,
     79 	NOUVEAU_STATE_SCISSOR,
     80 	NOUVEAU_STATE_SHADE_MODEL,
     81 	NOUVEAU_STATE_STENCIL_FUNC,
     82 	NOUVEAU_STATE_STENCIL_MASK,
     83 	NOUVEAU_STATE_STENCIL_OP,
     84 	NOUVEAU_STATE_TEX_ENV0,
     85 	NOUVEAU_STATE_TEX_ENV1,
     86 	NOUVEAU_STATE_TEX_ENV2,
     87 	NOUVEAU_STATE_TEX_ENV3,
     88 	NOUVEAU_STATE_TEX_GEN0,
     89 	NOUVEAU_STATE_TEX_GEN1,
     90 	NOUVEAU_STATE_TEX_GEN2,
     91 	NOUVEAU_STATE_TEX_GEN3,
     92 	NOUVEAU_STATE_TEX_MAT0,
     93 	NOUVEAU_STATE_TEX_MAT1,
     94 	NOUVEAU_STATE_TEX_MAT2,
     95 	NOUVEAU_STATE_TEX_MAT3,
     96 	NOUVEAU_STATE_TEX_OBJ0,
     97 	NOUVEAU_STATE_TEX_OBJ1,
     98 	NOUVEAU_STATE_TEX_OBJ2,
     99 	NOUVEAU_STATE_TEX_OBJ3,
    100 	NOUVEAU_STATE_VIEWPORT,
    101 	NUM_NOUVEAU_STATE,
    102 
    103 	/* Room for card-specific states. */
    104 
    105 	MAX_NOUVEAU_STATE = NUM_NOUVEAU_STATE + 16,
    106 };
    107 
    108 typedef void (*nouveau_state_func)(struct gl_context *ctx, int emit);
    109 
    110 void
    111 nouveau_state_init(struct gl_context *ctx);
    112 
    113 void
    114 nouveau_emit_nothing(struct gl_context *ctx, int emit);
    115 
    116 int
    117 nouveau_next_dirty_state(struct gl_context *ctx);
    118 
    119 void
    120 nouveau_state_emit(struct gl_context *ctx);
    121 
    122 #endif
    123