Merge branch 'llvm-cliptest-viewport'
[mesa.git] / src / mesa / drivers / dri / nouveau / nouveau_state.h
index 5b85287445751ecb6a4d48ab58674c04c1422856..cc61cf1a527de7f27a84b9934d8663ef2b0175d7 100644 (file)
-/**************************************************************************
+/*
+ * Copyright (C) 2009 Francisco Jerez.
+ * 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 (including the
+ * next paragraph) 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 THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ */
 
-Copyright 2006 Jeremy Kolb
-All Rights Reserved.
+#ifndef __NOUVEAU_STATE_H__
+#define __NOUVEAU_STATE_H__
 
-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
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, 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:
+enum {
+       NOUVEAU_STATE_ALPHA_FUNC,
+       NOUVEAU_STATE_BLEND_COLOR,
+       NOUVEAU_STATE_BLEND_EQUATION,
+       NOUVEAU_STATE_BLEND_FUNC,
+       NOUVEAU_STATE_CLIP_PLANE0,
+       NOUVEAU_STATE_CLIP_PLANE1,
+       NOUVEAU_STATE_CLIP_PLANE2,
+       NOUVEAU_STATE_CLIP_PLANE3,
+       NOUVEAU_STATE_CLIP_PLANE4,
+       NOUVEAU_STATE_CLIP_PLANE5,
+       NOUVEAU_STATE_COLOR_MASK,
+       NOUVEAU_STATE_COLOR_MATERIAL,
+       NOUVEAU_STATE_CULL_FACE,
+       NOUVEAU_STATE_FRONT_FACE,
+       NOUVEAU_STATE_DEPTH,
+       NOUVEAU_STATE_DITHER,
+       NOUVEAU_STATE_FRAG,
+       NOUVEAU_STATE_FRAMEBUFFER,
+       NOUVEAU_STATE_FOG,
+       NOUVEAU_STATE_LIGHT_ENABLE,
+       NOUVEAU_STATE_LIGHT_MODEL,
+       NOUVEAU_STATE_LIGHT_SOURCE0,
+       NOUVEAU_STATE_LIGHT_SOURCE1,
+       NOUVEAU_STATE_LIGHT_SOURCE2,
+       NOUVEAU_STATE_LIGHT_SOURCE3,
+       NOUVEAU_STATE_LIGHT_SOURCE4,
+       NOUVEAU_STATE_LIGHT_SOURCE5,
+       NOUVEAU_STATE_LIGHT_SOURCE6,
+       NOUVEAU_STATE_LIGHT_SOURCE7,
+       NOUVEAU_STATE_LINE_STIPPLE,
+       NOUVEAU_STATE_LINE_MODE,
+       NOUVEAU_STATE_LOGIC_OPCODE,
+       NOUVEAU_STATE_MATERIAL_FRONT_AMBIENT,
+       NOUVEAU_STATE_MATERIAL_BACK_AMBIENT,
+       NOUVEAU_STATE_MATERIAL_FRONT_DIFFUSE,
+       NOUVEAU_STATE_MATERIAL_BACK_DIFFUSE,
+       NOUVEAU_STATE_MATERIAL_FRONT_SPECULAR,
+       NOUVEAU_STATE_MATERIAL_BACK_SPECULAR,
+       NOUVEAU_STATE_MATERIAL_FRONT_SHININESS,
+       NOUVEAU_STATE_MATERIAL_BACK_SHININESS,
+       NOUVEAU_STATE_MODELVIEW,
+       NOUVEAU_STATE_POINT_MODE,
+       NOUVEAU_STATE_POINT_PARAMETER,
+       NOUVEAU_STATE_POLYGON_MODE,
+       NOUVEAU_STATE_POLYGON_OFFSET,
+       NOUVEAU_STATE_POLYGON_STIPPLE,
+       NOUVEAU_STATE_PROJECTION,
+       NOUVEAU_STATE_RENDER_MODE,
+       NOUVEAU_STATE_SCISSOR,
+       NOUVEAU_STATE_SHADE_MODEL,
+       NOUVEAU_STATE_STENCIL_FUNC,
+       NOUVEAU_STATE_STENCIL_MASK,
+       NOUVEAU_STATE_STENCIL_OP,
+       NOUVEAU_STATE_TEX_ENV0,
+       NOUVEAU_STATE_TEX_ENV1,
+       NOUVEAU_STATE_TEX_ENV2,
+       NOUVEAU_STATE_TEX_ENV3,
+       NOUVEAU_STATE_TEX_GEN0,
+       NOUVEAU_STATE_TEX_GEN1,
+       NOUVEAU_STATE_TEX_GEN2,
+       NOUVEAU_STATE_TEX_GEN3,
+       NOUVEAU_STATE_TEX_MAT0,
+       NOUVEAU_STATE_TEX_MAT1,
+       NOUVEAU_STATE_TEX_MAT2,
+       NOUVEAU_STATE_TEX_MAT3,
+       NOUVEAU_STATE_TEX_OBJ0,
+       NOUVEAU_STATE_TEX_OBJ1,
+       NOUVEAU_STATE_TEX_OBJ2,
+       NOUVEAU_STATE_TEX_OBJ3,
+       NOUVEAU_STATE_VIEWPORT,
+       NUM_NOUVEAU_STATE,
 
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
+       /* Room for card-specific states. */
 
-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 NON-INFRINGEMENT. IN NO EVENT SHALL
-ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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.
+       MAX_NOUVEAU_STATE = NUM_NOUVEAU_STATE + 16,
+};
 
-**************************************************************************/
+typedef void (*nouveau_state_func)(struct gl_context *ctx, int emit);
 
-#ifndef __NOUVEAU_STATE_H__
-#define __NOUVEAU_STATE_H__
+void
+nouveau_state_init(struct gl_context *ctx);
 
-#include "nouveau_context.h"
+void
+nouveau_emit_nothing(struct gl_context *ctx, int emit);
 
-extern void nouveauDDInitState(nouveauContextPtr nmesa);
-extern void nouveauDDInitStateFuncs(GLcontext *ctx);
+int
+nouveau_next_dirty_state(struct gl_context *ctx);
 
-extern void nv04InitStateFuncs(GLcontext *ctx, struct dd_function_table *func);
-extern void nv10InitStateFuncs(GLcontext *ctx, struct dd_function_table *func);
-extern void nv20InitStateFuncs(GLcontext *ctx, struct dd_function_table *func);
-extern void nv30InitStateFuncs(GLcontext *ctx, struct dd_function_table *func);
+void
+nouveau_state_emit(struct gl_context *ctx);
 
-extern void nouveauInitState(GLcontext *ctx);
-
-/*
-extern void nouveauDDUpdateState(GLcontext *ctx);
-extern void nouveauDDUpdateHWState(GLcontext *ctx);
-
-extern void nouveauEmitHwStateLocked(nouveauContextPtr nmesa);
-*/
 #endif
-