added _mesa_init_driver_state() to replace duplicated code in intel drivers
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.5.3
|
* Version: 7.1
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
@@ -292,3 +292,97 @@ _mesa_init_glsl_driver_functions(struct dd_function_table *driver)
|
|||||||
driver->UseProgram = _mesa_use_program;
|
driver->UseProgram = _mesa_use_program;
|
||||||
driver->ValidateProgram = _mesa_validate_program;
|
driver->ValidateProgram = _mesa_validate_program;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call the ctx->Driver.* state functions with current values to initialize
|
||||||
|
* driver state.
|
||||||
|
* Only the Intel drivers use this so far.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
_mesa_init_driver_state(GLcontext *ctx)
|
||||||
|
{
|
||||||
|
ctx->Driver.AlphaFunc(ctx, ctx->Color.AlphaFunc, ctx->Color.AlphaRef);
|
||||||
|
|
||||||
|
ctx->Driver.BlendColor(ctx, ctx->Color.BlendColor);
|
||||||
|
|
||||||
|
ctx->Driver.BlendEquationSeparate(ctx,
|
||||||
|
ctx->Color.BlendEquationRGB,
|
||||||
|
ctx->Color.BlendEquationA);
|
||||||
|
|
||||||
|
ctx->Driver.BlendFuncSeparate(ctx,
|
||||||
|
ctx->Color.BlendSrcRGB,
|
||||||
|
ctx->Color.BlendDstRGB,
|
||||||
|
ctx->Color.BlendSrcA, ctx->Color.BlendDstA);
|
||||||
|
|
||||||
|
ctx->Driver.ColorMask(ctx,
|
||||||
|
ctx->Color.ColorMask[RCOMP],
|
||||||
|
ctx->Color.ColorMask[GCOMP],
|
||||||
|
ctx->Color.ColorMask[BCOMP],
|
||||||
|
ctx->Color.ColorMask[ACOMP]);
|
||||||
|
|
||||||
|
ctx->Driver.CullFace(ctx, ctx->Polygon.CullFaceMode);
|
||||||
|
ctx->Driver.DepthFunc(ctx, ctx->Depth.Func);
|
||||||
|
ctx->Driver.DepthMask(ctx, ctx->Depth.Mask);
|
||||||
|
|
||||||
|
ctx->Driver.Enable(ctx, GL_ALPHA_TEST, ctx->Color.AlphaEnabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_BLEND, ctx->Color.BlendEnabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_COLOR_LOGIC_OP, ctx->Color.ColorLogicOpEnabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_COLOR_SUM, ctx->Fog.ColorSumEnabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_CULL_FACE, ctx->Polygon.CullFlag);
|
||||||
|
ctx->Driver.Enable(ctx, GL_DEPTH_TEST, ctx->Depth.Test);
|
||||||
|
ctx->Driver.Enable(ctx, GL_DITHER, ctx->Color.DitherFlag);
|
||||||
|
ctx->Driver.Enable(ctx, GL_FOG, ctx->Fog.Enabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_LIGHTING, ctx->Light.Enabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_LINE_SMOOTH, ctx->Line.SmoothFlag);
|
||||||
|
ctx->Driver.Enable(ctx, GL_POLYGON_STIPPLE, ctx->Polygon.StippleFlag);
|
||||||
|
ctx->Driver.Enable(ctx, GL_SCISSOR_TEST, ctx->Scissor.Enabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled);
|
||||||
|
ctx->Driver.Enable(ctx, GL_TEXTURE_1D, GL_FALSE);
|
||||||
|
ctx->Driver.Enable(ctx, GL_TEXTURE_2D, GL_FALSE);
|
||||||
|
ctx->Driver.Enable(ctx, GL_TEXTURE_RECTANGLE_NV, GL_FALSE);
|
||||||
|
ctx->Driver.Enable(ctx, GL_TEXTURE_3D, GL_FALSE);
|
||||||
|
ctx->Driver.Enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
|
||||||
|
|
||||||
|
ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, ctx->Fog.Color);
|
||||||
|
ctx->Driver.Fogfv(ctx, GL_FOG_MODE, 0);
|
||||||
|
ctx->Driver.Fogfv(ctx, GL_FOG_DENSITY, &ctx->Fog.Density);
|
||||||
|
ctx->Driver.Fogfv(ctx, GL_FOG_START, &ctx->Fog.Start);
|
||||||
|
ctx->Driver.Fogfv(ctx, GL_FOG_END, &ctx->Fog.End);
|
||||||
|
|
||||||
|
ctx->Driver.FrontFace(ctx, ctx->Polygon.FrontFace);
|
||||||
|
|
||||||
|
{
|
||||||
|
GLfloat f = (GLfloat) ctx->Light.Model.ColorControl;
|
||||||
|
ctx->Driver.LightModelfv(ctx, GL_LIGHT_MODEL_COLOR_CONTROL, &f);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->Driver.LineWidth(ctx, ctx->Line.Width);
|
||||||
|
ctx->Driver.LogicOpcode(ctx, ctx->Color.LogicOp);
|
||||||
|
ctx->Driver.PointSize(ctx, ctx->Point.Size);
|
||||||
|
ctx->Driver.PolygonStipple(ctx, (const GLubyte *) ctx->PolygonStipple);
|
||||||
|
ctx->Driver.Scissor(ctx, ctx->Scissor.X, ctx->Scissor.Y,
|
||||||
|
ctx->Scissor.Width, ctx->Scissor.Height);
|
||||||
|
ctx->Driver.ShadeModel(ctx, ctx->Light.ShadeModel);
|
||||||
|
ctx->Driver.StencilFuncSeparate(ctx, GL_FRONT,
|
||||||
|
ctx->Stencil.Function[0],
|
||||||
|
ctx->Stencil.Ref[0],
|
||||||
|
ctx->Stencil.ValueMask[0]);
|
||||||
|
ctx->Driver.StencilFuncSeparate(ctx, GL_BACK,
|
||||||
|
ctx->Stencil.Function[1],
|
||||||
|
ctx->Stencil.Ref[1],
|
||||||
|
ctx->Stencil.ValueMask[1]);
|
||||||
|
ctx->Driver.StencilMaskSeparate(ctx, GL_FRONT, ctx->Stencil.WriteMask[0]);
|
||||||
|
ctx->Driver.StencilMaskSeparate(ctx, GL_BACK, ctx->Stencil.WriteMask[1]);
|
||||||
|
ctx->Driver.StencilOpSeparate(ctx, GL_FRONT,
|
||||||
|
ctx->Stencil.FailFunc[0],
|
||||||
|
ctx->Stencil.ZFailFunc[0],
|
||||||
|
ctx->Stencil.ZPassFunc[0]);
|
||||||
|
ctx->Driver.StencilOpSeparate(ctx, GL_BACK,
|
||||||
|
ctx->Stencil.FailFunc[1],
|
||||||
|
ctx->Stencil.ZFailFunc[1],
|
||||||
|
ctx->Stencil.ZPassFunc[1]);
|
||||||
|
|
||||||
|
|
||||||
|
ctx->Driver.DrawBuffer(ctx, ctx->Color.DrawBuffer[0]);
|
||||||
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.5.3
|
* Version: 7.1
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
@@ -33,4 +33,9 @@ _mesa_init_driver_functions(struct dd_function_table *driver);
|
|||||||
extern void
|
extern void
|
||||||
_mesa_init_glsl_driver_functions(struct dd_function_table *driver);
|
_mesa_init_glsl_driver_functions(struct dd_function_table *driver);
|
||||||
|
|
||||||
|
|
||||||
|
extern void
|
||||||
|
_mesa_init_driver_state(GLcontext *ctx);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user