projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mesa: GL_ARB_shader_objects is not optional
[mesa.git]
/
src
/
mesa
/
drivers
/
dri
/
i915
/
i830_state.c
diff --git
a/src/mesa/drivers/dri/i915/i830_state.c
b/src/mesa/drivers/dri/i915/i830_state.c
index 645ebe305774410b90153bf7a31ceca0fa9ae888..cedc58a2d1cb31956335dd121c6d11a09ccf20c4 100644
(file)
--- a/
src/mesa/drivers/dri/i915/i830_state.c
+++ b/
src/mesa/drivers/dri/i915/i830_state.c
@@
-30,14
+30,15
@@
#include "main/context.h"
#include "main/macros.h"
#include "main/enums.h"
#include "main/context.h"
#include "main/macros.h"
#include "main/enums.h"
+#include "main/fbobject.h"
#include "main/dd.h"
#include "main/dd.h"
-
-#include "texmem.h"
+#include "main/state.h"
#include "drivers/common/driverfuncs.h"
#include "intel_screen.h"
#include "intel_batchbuffer.h"
#include "drivers/common/driverfuncs.h"
#include "intel_screen.h"
#include "intel_batchbuffer.h"
+#include "intel_mipmap_tree.h"
#include "intel_fbo.h"
#include "intel_buffers.h"
#include "intel_fbo.h"
#include "intel_buffers.h"
@@
-47,7
+48,7
@@
#define FILE_DEBUG_FLAG DEBUG_STATE
static void
#define FILE_DEBUG_FLAG DEBUG_STATE
static void
-i830StencilFuncSeparate(
GL
context * ctx, GLenum face, GLenum func, GLint ref,
+i830StencilFuncSeparate(
struct gl_
context * ctx, GLenum face, GLenum func, GLint ref,
GLuint mask)
{
struct i830_context *i830 = i830_context(ctx);
GLuint mask)
{
struct i830_context *i830 = i830_context(ctx);
@@
-72,7
+73,7
@@
i830StencilFuncSeparate(GLcontext * ctx, GLenum face, GLenum func, GLint ref,
}
static void
}
static void
-i830StencilMaskSeparate(
GL
context * ctx, GLenum face, GLuint mask)
+i830StencilMaskSeparate(
struct gl_
context * ctx, GLenum face, GLuint mask)
{
struct i830_context *i830 = i830_context(ctx);
{
struct i830_context *i830 = i830_context(ctx);
@@
-87,7
+88,7
@@
i830StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask)
}
static void
}
static void
-i830StencilOpSeparate(
GL
context * ctx, GLenum face, GLenum fail, GLenum zfail,
+i830StencilOpSeparate(
struct gl_
context * ctx, GLenum face, GLenum fail, GLenum zfail,
GLenum zpass)
{
struct i830_context *i830 = i830_context(ctx);
GLenum zpass)
{
struct i830_context *i830 = i830_context(ctx);
@@
-199,7
+200,7
@@
i830StencilOpSeparate(GLcontext * ctx, GLenum face, GLenum fail, GLenum zfail,
}
static void
}
static void
-i830AlphaFunc(
GL
context * ctx, GLenum func, GLfloat ref)
+i830AlphaFunc(
struct gl_
context * ctx, GLenum func, GLfloat ref)
{
struct i830_context *i830 = i830_context(ctx);
int test = intel_translate_compare_func(func);
{
struct i830_context *i830 = i830_context(ctx);
int test = intel_translate_compare_func(func);
@@
-228,13
+229,13
@@
i830AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref)
* I'm not sure which is correct.
*/
static void
* I'm not sure which is correct.
*/
static void
-i830EvalLogicOpBlendState(
GL
context * ctx)
+i830EvalLogicOpBlendState(
struct gl_
context * ctx)
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
- if (
RGBA_LOGICOP_ENABLED(ctx)
) {
+ if (
ctx->Color.ColorLogicOpEnabled
) {
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~(ENABLE_COLOR_BLEND |
ENABLE_LOGIC_OP_MASK);
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= (DISABLE_COLOR_BLEND |
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~(ENABLE_COLOR_BLEND |
ENABLE_LOGIC_OP_MASK);
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= (DISABLE_COLOR_BLEND |
@@
-255,7
+256,7
@@
i830EvalLogicOpBlendState(GLcontext * ctx)
}
static void
}
static void
-i830BlendColor(
GL
context * ctx, const GLfloat color[4])
+i830BlendColor(
struct gl_
context * ctx, const GLfloat color[4])
{
struct i830_context *i830 = i830_context(ctx);
GLubyte r, g, b, a;
{
struct i830_context *i830 = i830_context(ctx);
GLubyte r, g, b, a;
@@
-279,7
+280,7
@@
i830BlendColor(GLcontext * ctx, const GLfloat color[4])
* change the interpretation of the blend function.
*/
static void
* change the interpretation of the blend function.
*/
static void
-i830_set_blend_state(
GL
context * ctx)
+i830_set_blend_state(
struct gl_
context * ctx)
{
struct i830_context *i830 = i830_context(ctx);
int funcA;
{
struct i830_context *i830 = i830_context(ctx);
int funcA;
@@
-291,10
+292,10
@@
i830_set_blend_state(GLcontext * ctx)
funcRGB =
funcRGB =
- SRC_BLND_FACT(intel_translate_blend_factor(ctx->Color.BlendSrcRGB))
- | DST_BLND_FACT(intel_translate_blend_factor(ctx->Color.BlendDstRGB));
+ SRC_BLND_FACT(intel_translate_blend_factor(ctx->Color.Blend
[0].
SrcRGB))
+ | DST_BLND_FACT(intel_translate_blend_factor(ctx->Color.Blend
[0].
DstRGB));
- switch (ctx->Color.BlendEquationRGB) {
+ switch (ctx->Color.Blend
[0].
EquationRGB) {
case GL_FUNC_ADD:
eqnRGB = BLENDFUNC_ADD;
break;
case GL_FUNC_ADD:
eqnRGB = BLENDFUNC_ADD;
break;
@@
-314,15
+315,15
@@
i830_set_blend_state(GLcontext * ctx)
break;
default:
fprintf(stderr, "[%s:%u] Invalid RGB blend equation (0x%04x).\n",
break;
default:
fprintf(stderr, "[%s:%u] Invalid RGB blend equation (0x%04x).\n",
- __FUNCTION__, __LINE__, ctx->Color.BlendEquationRGB);
+ __FUNCTION__, __LINE__, ctx->Color.Blend
[0].
EquationRGB);
return;
}
return;
}
- funcA = SRC_ABLEND_FACT(intel_translate_blend_factor(ctx->Color.BlendSrcA))
- | DST_ABLEND_FACT(intel_translate_blend_factor(ctx->Color.BlendDstA));
+ funcA = SRC_ABLEND_FACT(intel_translate_blend_factor(ctx->Color.Blend
[0].
SrcA))
+ | DST_ABLEND_FACT(intel_translate_blend_factor(ctx->Color.Blend
[0].
DstA));
- switch (ctx->Color.BlendEquationA) {
+ switch (ctx->Color.Blend
[0].
EquationA) {
case GL_FUNC_ADD:
eqnA = BLENDFUNC_ADD;
break;
case GL_FUNC_ADD:
eqnA = BLENDFUNC_ADD;
break;
@@
-342,7
+343,7
@@
i830_set_blend_state(GLcontext * ctx)
break;
default:
fprintf(stderr, "[%s:%u] Invalid alpha blend equation (0x%04x).\n",
break;
default:
fprintf(stderr, "[%s:%u] Invalid alpha blend equation (0x%04x).\n",
- __FUNCTION__, __LINE__, ctx->Color.BlendEquationA);
+ __FUNCTION__, __LINE__, ctx->Color.Blend
[0].
EquationA);
return;
}
return;
}
@@
-385,7
+386,7
@@
i830_set_blend_state(GLcontext * ctx)
static void
static void
-i830BlendEquationSeparate(
GL
context * ctx, GLenum modeRGB, GLenum modeA)
+i830BlendEquationSeparate(
struct gl_
context * ctx, GLenum modeRGB, GLenum modeA)
{
DBG("%s -> %s, %s\n", __FUNCTION__,
_mesa_lookup_enum_by_nr(modeRGB),
{
DBG("%s -> %s, %s\n", __FUNCTION__,
_mesa_lookup_enum_by_nr(modeRGB),
@@
-398,7
+399,7
@@
i830BlendEquationSeparate(GLcontext * ctx, GLenum modeRGB, GLenum modeA)
static void
static void
-i830BlendFuncSeparate(
GL
context * ctx, GLenum sfactorRGB,
+i830BlendFuncSeparate(
struct gl_
context * ctx, GLenum sfactorRGB,
GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA)
{
DBG("%s -> RGB(%s, %s) A(%s, %s)\n", __FUNCTION__,
GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA)
{
DBG("%s -> RGB(%s, %s) A(%s, %s)\n", __FUNCTION__,
@@
-417,7
+418,7
@@
i830BlendFuncSeparate(GLcontext * ctx, GLenum sfactorRGB,
static void
static void
-i830DepthFunc(
GL
context * ctx, GLenum func)
+i830DepthFunc(
struct gl_
context * ctx, GLenum func)
{
struct i830_context *i830 = i830_context(ctx);
int test = intel_translate_compare_func(func);
{
struct i830_context *i830 = i830_context(ctx);
int test = intel_translate_compare_func(func);
@@
-431,12
+432,15
@@
i830DepthFunc(GLcontext * ctx, GLenum func)
}
static void
}
static void
-i830DepthMask(
GL
context * ctx, GLboolean flag)
+i830DepthMask(
struct gl_
context * ctx, GLboolean flag)
{
struct i830_context *i830 = i830_context(ctx);
DBG("%s flag (%d)\n", __FUNCTION__, flag);
{
struct i830_context *i830 = i830_context(ctx);
DBG("%s flag (%d)\n", __FUNCTION__, flag);
-
+
+ if (!ctx->DrawBuffer || !ctx->DrawBuffer->Visual.depthBits)
+ flag = false;
+
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_2] &= ~ENABLE_DIS_DEPTH_WRITE_MASK;
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_2] &= ~ENABLE_DIS_DEPTH_WRITE_MASK;
@@
-449,18
+453,16
@@
i830DepthMask(GLcontext * ctx, GLboolean flag)
/** Called from ctx->Driver.Viewport() */
static void
/** Called from ctx->Driver.Viewport() */
static void
-i830Viewport(
GL
context * ctx,
+i830Viewport(
struct gl_
context * ctx,
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
-
- intel_viewport(ctx, x, y, width, height);
}
/** Called from ctx->Driver.DepthRange() */
static void
}
/** Called from ctx->Driver.DepthRange() */
static void
-i830DepthRange(
GL
context * ctx, GLclampd nearval, GLclampd farval)
+i830DepthRange(
struct gl_
context * ctx, GLclampd nearval, GLclampd farval)
{
intelCalcViewport(ctx);
}
{
intelCalcViewport(ctx);
}
@@
-472,10
+474,10
@@
i830DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval)
* Fortunately stipple is usually a repeating pattern.
*/
static void
* Fortunately stipple is usually a repeating pattern.
*/
static void
-i830PolygonStipple(
GL
context * ctx, const GLubyte * mask)
+i830PolygonStipple(
struct gl_
context * ctx, const GLubyte * mask)
{
struct i830_context *i830 = i830_context(ctx);
{
struct i830_context *i830 = i830_context(ctx);
- const GLubyte *m
= mask
;
+ const GLubyte *m;
GLubyte p[4];
int i, j, k;
int active = (ctx->Polygon.StippleFlag &&
GLubyte p[4];
int i, j, k;
int active = (ctx->Polygon.StippleFlag &&
@@
-487,6
+489,12
@@
i830PolygonStipple(GLcontext * ctx, const GLubyte * mask)
i830->state.Stipple[I830_STPREG_ST1] &= ~ST1_ENABLE;
}
i830->state.Stipple[I830_STPREG_ST1] &= ~ST1_ENABLE;
}
+ /* Use the already unpacked stipple data from the context rather than the
+ * uninterpreted mask passed in.
+ */
+ mask = (const GLubyte *)ctx->PolygonStipple;
+ m = mask;
+
p[0] = mask[12] & 0xf;
p[0] |= p[0] << 4;
p[1] = mask[8] & 0xf;
p[0] = mask[12] & 0xf;
p[0] |= p[0] << 4;
p[1] = mask[8] & 0xf;
@@
-528,7
+536,7
@@
i830PolygonStipple(GLcontext * ctx, const GLubyte * mask)
* Hardware clipping
*/
static void
* Hardware clipping
*/
static void
-i830Scissor(
GL
context * ctx, GLint x, GLint y, GLsizei w, GLsizei h)
+i830Scissor(
struct gl_
context * ctx, GLint x, GLint y, GLsizei w, GLsizei h)
{
struct i830_context *i830 = i830_context(ctx);
int x1, y1, x2, y2;
{
struct i830_context *i830 = i830_context(ctx);
int x1, y1, x2, y2;
@@
-538,7
+546,7
@@
i830Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h)
DBG("%s %d,%d %dx%d\n", __FUNCTION__, x, y, w, h);
DBG("%s %d,%d %dx%d\n", __FUNCTION__, x, y, w, h);
- if (
ctx->DrawBuffer->Name == 0
) {
+ if (
_mesa_is_winsys_fbo(ctx->DrawBuffer)
) {
x1 = x;
y1 = ctx->DrawBuffer->Height - (y + h);
x2 = x + w - 1;
x1 = x;
y1 = ctx->DrawBuffer->Height - (y + h);
x2 = x + w - 1;
@@
-568,7
+576,7
@@
i830Scissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h)
}
static void
}
static void
-i830LogicOp(
GL
context * ctx, GLenum opcode)
+i830LogicOp(
struct gl_
context * ctx, GLenum opcode)
{
struct i830_context *i830 = i830_context(ctx);
int tmp = intel_translate_logic_op(opcode);
{
struct i830_context *i830 = i830_context(ctx);
int tmp = intel_translate_logic_op(opcode);
@@
-583,7
+591,7
@@
i830LogicOp(GLcontext * ctx, GLenum opcode)
static void
static void
-i830CullFaceFrontFace(
GL
context * ctx, GLenum unused)
+i830CullFaceFrontFace(
struct gl_
context * ctx, GLenum unused)
{
struct i830_context *i830 = i830_context(ctx);
GLuint mode;
{
struct i830_context *i830 = i830_context(ctx);
GLuint mode;
@@
-611,7
+619,7
@@
i830CullFaceFrontFace(GLcontext * ctx, GLenum unused)
}
static void
}
static void
-i830LineWidth(
GL
context * ctx, GLfloat widthf)
+i830LineWidth(
struct gl_
context * ctx, GLfloat widthf)
{
struct i830_context *i830 = i830_context(ctx);
int width;
{
struct i830_context *i830 = i830_context(ctx);
int width;
@@
-620,7
+628,7
@@
i830LineWidth(GLcontext * ctx, GLfloat widthf)
DBG("%s\n", __FUNCTION__);
width = (int) (widthf * 2);
DBG("%s\n", __FUNCTION__);
width = (int) (widthf * 2);
-
CLAMP_SELF
(width, 1, 15);
+
width = CLAMP
(width, 1, 15);
state5 = i830->state.Ctx[I830_CTXREG_STATE5] & ~FIXED_LINE_WIDTH_MASK;
state5 |= (ENABLE_FIXED_LINE_WIDTH | FIXED_LINE_WIDTH(width));
state5 = i830->state.Ctx[I830_CTXREG_STATE5] & ~FIXED_LINE_WIDTH_MASK;
state5 |= (ENABLE_FIXED_LINE_WIDTH | FIXED_LINE_WIDTH(width));
@@
-632,14
+640,14
@@
i830LineWidth(GLcontext * ctx, GLfloat widthf)
}
static void
}
static void
-i830PointSize(
GL
context * ctx, GLfloat size)
+i830PointSize(
struct gl_
context * ctx, GLfloat size)
{
struct i830_context *i830 = i830_context(ctx);
GLint point_size = (int) size;
DBG("%s\n", __FUNCTION__);
{
struct i830_context *i830 = i830_context(ctx);
GLint point_size = (int) size;
DBG("%s\n", __FUNCTION__);
-
CLAMP_SELF
(point_size, 1, 256);
+
point_size = CLAMP
(point_size, 1, 256);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_STATE5] &= ~FIXED_POINT_WIDTH_MASK;
i830->state.Ctx[I830_CTXREG_STATE5] |= (ENABLE_FIXED_POINT_WIDTH |
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_STATE5] &= ~FIXED_POINT_WIDTH_MASK;
i830->state.Ctx[I830_CTXREG_STATE5] |= (ENABLE_FIXED_POINT_WIDTH |
@@
-652,7
+660,7
@@
i830PointSize(GLcontext * ctx, GLfloat size)
*/
static void
*/
static void
-i830ColorMask(
GL
context * ctx,
+i830ColorMask(
struct gl_
context * ctx,
GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
struct i830_context *i830 = i830_context(ctx);
GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
struct i830_context *i830 = i830_context(ctx);
@@
-674,21
+682,21
@@
i830ColorMask(GLcontext * ctx,
}
static void
}
static void
-update_specular(
GL
context * ctx)
+update_specular(
struct gl_
context * ctx)
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~ENABLE_SPEC_ADD_MASK;
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~ENABLE_SPEC_ADD_MASK;
- if (
NEED_SECONDARY_COLOR
(ctx))
+ if (
_mesa_need_secondary_color
(ctx))
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= ENABLE_SPEC_ADD;
else
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= DISABLE_SPEC_ADD;
}
static void
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= ENABLE_SPEC_ADD;
else
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= DISABLE_SPEC_ADD;
}
static void
-i830LightModelfv(
GL
context * ctx, GLenum pname, const GLfloat * param)
+i830LightModelfv(
struct gl_
context * ctx, GLenum pname, const GLfloat * param)
{
DBG("%s\n", __FUNCTION__);
{
DBG("%s\n", __FUNCTION__);
@@
-700,7
+708,7
@@
i830LightModelfv(GLcontext * ctx, GLenum pname, const GLfloat * param)
/* In Mesa 3.5 we can reliably do native flatshading.
*/
static void
/* In Mesa 3.5 we can reliably do native flatshading.
*/
static void
-i830ShadeModel(
GL
context * ctx, GLenum mode)
+i830ShadeModel(
struct gl_
context * ctx, GLenum mode)
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
{
struct i830_context *i830 = i830_context(ctx);
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
@@
-729,7
+737,7
@@
i830ShadeModel(GLcontext * ctx, GLenum mode)
* Fog
*/
static void
* Fog
*/
static void
-i830Fogfv(
GL
context * ctx, GLenum pname, const GLfloat * param)
+i830Fogfv(
struct gl_
context * ctx, GLenum pname, const GLfloat * param)
{
struct i830_context *i830 = i830_context(ctx);
{
struct i830_context *i830 = i830_context(ctx);
@@
-750,7
+758,7
@@
i830Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param)
*/
static void
*/
static void
-i830Enable(
GL
context * ctx, GLenum cap, GLboolean state)
+i830Enable(
struct gl_
context * ctx, GLenum cap, GLboolean state)
{
struct i830_context *i830 = i830_context(ctx);
{
struct i830_context *i830 = i830_context(ctx);
@@
-797,6
+805,9
@@
i830Enable(GLcontext * ctx, GLenum cap, GLboolean state)
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~ENABLE_DIS_DEPTH_TEST_MASK;
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
i830->state.Ctx[I830_CTXREG_ENABLES_1] &= ~ENABLE_DIS_DEPTH_TEST_MASK;
+ if (!ctx->DrawBuffer || !ctx->DrawBuffer->Visual.depthBits)
+ state = false;
+
if (state)
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= ENABLE_DEPTH_TEST;
else
if (state)
i830->state.Ctx[I830_CTXREG_ENABLES_1] |= ENABLE_DEPTH_TEST;
else
@@
-847,11
+858,11
@@
i830Enable(GLcontext * ctx, GLenum cap, GLboolean state)
case GL_STENCIL_TEST:
{
case GL_STENCIL_TEST:
{
-
GLboolean hw_stencil = GL_FALSE
;
+
bool hw_stencil = false
;
if (ctx->DrawBuffer) {
struct intel_renderbuffer *irbStencil
= intel_get_renderbuffer(ctx->DrawBuffer, BUFFER_STENCIL);
if (ctx->DrawBuffer) {
struct intel_renderbuffer *irbStencil
= intel_get_renderbuffer(ctx->DrawBuffer, BUFFER_STENCIL);
- hw_stencil = (irbStencil && irbStencil->
region
);
+ hw_stencil = (irbStencil && irbStencil->
mt
);
}
if (hw_stencil) {
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
}
if (hw_stencil) {
I830_STATECHANGE(i830, I830_UPLOAD_CTX);
@@
-1069,7
+1080,7
@@
i830_init_packets(struct i830_context *i830)
}
void
}
void
-i830_update_provoking_vertex(
GL
context * ctx)
+i830_update_provoking_vertex(
struct gl_
context * ctx)
{
struct i830_context *i830 = i830_context(ctx);
{
struct i830_context *i830 = i830_context(ctx);
@@
-1090,6
+1101,15
@@
i830_update_provoking_vertex(GLcontext * ctx)
}
}
}
}
+/* Fallback to swrast for select and feedback.
+ */
+static void
+i830RenderMode(struct gl_context *ctx, GLenum mode)
+{
+ struct intel_context *intel = intel_context(ctx);
+ FALLBACK(intel, INTEL_FALLBACK_RENDERMODE, (mode != GL_RENDER));
+}
+
void
i830InitStateFuncs(struct dd_function_table *functions)
{
void
i830InitStateFuncs(struct dd_function_table *functions)
{
@@
-1109,6
+1129,7
@@
i830InitStateFuncs(struct dd_function_table *functions)
functions->LogicOpcode = i830LogicOp;
functions->PointSize = i830PointSize;
functions->PolygonStipple = i830PolygonStipple;
functions->LogicOpcode = i830LogicOp;
functions->PointSize = i830PointSize;
functions->PolygonStipple = i830PolygonStipple;
+ functions->RenderMode = i830RenderMode;
functions->Scissor = i830Scissor;
functions->ShadeModel = i830ShadeModel;
functions->StencilFuncSeparate = i830StencilFuncSeparate;
functions->Scissor = i830Scissor;
functions->ShadeModel = i830ShadeModel;
functions->StencilFuncSeparate = i830StencilFuncSeparate;
@@
-1121,15
+1142,12
@@
i830InitStateFuncs(struct dd_function_table *functions)
void
i830InitState(struct i830_context *i830)
{
void
i830InitState(struct i830_context *i830)
{
-
GL
context *ctx = &i830->intel.ctx;
+
struct gl_
context *ctx = &i830->intel.ctx;
i830_init_packets(i830);
_mesa_init_driver_state(ctx);
i830_init_packets(i830);
_mesa_init_driver_state(ctx);
- memcpy(&i830->initial, &i830->state, sizeof(i830->state));
-
- i830->current = &i830->state;
i830->state.emitted = 0;
i830->state.active = (I830_UPLOAD_INVARIENT |
I830_UPLOAD_RASTER_RULES |
i830->state.emitted = 0;
i830->state.active = (I830_UPLOAD_INVARIENT |
I830_UPLOAD_RASTER_RULES |