i915 will use _TexEnvProgram (if active)

This commit is contained in:
Keith Whitwell
2005-05-09 17:59:13 +00:00
parent 276330b241
commit 435eff8b85
6 changed files with 12 additions and 13 deletions

View File

@@ -72,11 +72,13 @@ static void i915InvalidateState( GLcontext *ctx, GLuint new_state )
*/ */
{ {
struct i915_fragment_program *p = struct i915_fragment_program *p =
(struct i915_fragment_program *)ctx->FragmentProgram.Current; (struct i915_fragment_program *)ctx->FragmentProgram._Current;
if (p->nr_params) if (p && p->nr_params)
p->params_uptodate = 0; p->params_uptodate = 0;
} }
if (new_state & (_NEW_FOG|_NEW_HINT|_NEW_PROGRAM))
i915_update_fog(ctx);
} }

View File

@@ -309,6 +309,7 @@ extern void i915_print_ureg( const char *msg, GLuint ureg );
*/ */
extern void i915InitStateFunctions( struct dd_function_table *functions ); extern void i915InitStateFunctions( struct dd_function_table *functions );
extern void i915InitState( i915ContextPtr i915 ); extern void i915InitState( i915ContextPtr i915 );
extern void i915_update_fog( GLcontext *ctx );
/*====================================================================== /*======================================================================

View File

@@ -245,7 +245,7 @@ do { \
*/ */
static void upload_program( struct i915_fragment_program *p ) static void upload_program( struct i915_fragment_program *p )
{ {
const struct fragment_program *program = p->ctx->FragmentProgram.Current; const struct fragment_program *program = p->ctx->FragmentProgram._Current;
const struct fp_instruction *inst = program->Instructions; const struct fp_instruction *inst = program->Instructions;
/* _mesa_debug_fp_inst(program->Base.NumInstructions, inst); */ /* _mesa_debug_fp_inst(program->Base.NumInstructions, inst); */
@@ -949,7 +949,7 @@ void i915ValidateFragmentProgram( i915ContextPtr i915 )
struct vertex_buffer *VB = &tnl->vb; struct vertex_buffer *VB = &tnl->vb;
struct i915_fragment_program *p = struct i915_fragment_program *p =
(struct i915_fragment_program *)ctx->FragmentProgram.Current; (struct i915_fragment_program *)ctx->FragmentProgram._Current;
GLuint inputsRead = p->FragProg.InputsRead; GLuint inputsRead = p->FragProg.InputsRead;
GLuint s4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_VFMT_MASK; GLuint s4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_VFMT_MASK;

View File

@@ -521,17 +521,17 @@ static void i915ShadeModel(GLcontext *ctx, GLenum mode)
/* ============================================================= /* =============================================================
* Fog * Fog
*/ */
static void update_fog( GLcontext *ctx ) void i915_update_fog( GLcontext *ctx )
{ {
i915ContextPtr i915 = I915_CONTEXT(ctx); i915ContextPtr i915 = I915_CONTEXT(ctx);
GLenum mode; GLenum mode;
GLboolean enabled; GLboolean enabled;
GLboolean try_pixel_fog; GLboolean try_pixel_fog;
if (ctx->FragmentProgram.Enabled && ctx->FragmentProgram.Current) { if (ctx->FragmentProgram._Active) {
/* Pull in static fog state from program */ /* Pull in static fog state from program */
mode = ctx->FragmentProgram.Current->FogOption; mode = ctx->FragmentProgram._Current->FogOption;
enabled = (mode != GL_NONE); enabled = (mode != GL_NONE);
try_pixel_fog = 1; try_pixel_fog = 1;
} }
@@ -623,7 +623,6 @@ static void i915Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param)
case GL_FOG_MODE: case GL_FOG_MODE:
case GL_FOG_START: case GL_FOG_START:
case GL_FOG_END: case GL_FOG_END:
update_fog( ctx );
break; break;
case GL_FOG_DENSITY: case GL_FOG_DENSITY:
@@ -658,7 +657,6 @@ static void i915Hint(GLcontext *ctx, GLenum target, GLenum state)
{ {
switch (target) { switch (target) {
case GL_FOG_HINT: case GL_FOG_HINT:
update_fog( ctx );
break; break;
default: default:
break; break;
@@ -703,7 +701,6 @@ static void i915Enable(GLcontext *ctx, GLenum cap, GLboolean state)
break; break;
case GL_FRAGMENT_PROGRAM_ARB: case GL_FRAGMENT_PROGRAM_ARB:
update_fog( ctx );
break; break;
case GL_DITHER: case GL_DITHER:
@@ -743,7 +740,6 @@ static void i915Enable(GLcontext *ctx, GLenum cap, GLboolean state)
break; break;
case GL_FOG: case GL_FOG:
update_fog( ctx );
break; break;
case GL_CULL_FACE: case GL_CULL_FACE:

View File

@@ -46,7 +46,7 @@ static void i915_render_start( intelContextPtr intel )
GLcontext *ctx = &intel->ctx; GLcontext *ctx = &intel->ctx;
i915ContextPtr i915 = I915_CONTEXT(intel); i915ContextPtr i915 = I915_CONTEXT(intel);
if (ctx->FragmentProgram.Enabled && ctx->FragmentProgram.Current) if (ctx->FragmentProgram._Active)
i915ValidateFragmentProgram( i915 ); i915ValidateFragmentProgram( i915 );
else else
i915ValidateTextureProgram( i915 ); i915ValidateTextureProgram( i915 );

View File

@@ -642,7 +642,7 @@ void intelChooseRenderState(GLcontext *ctx)
TNLcontext *tnl = TNL_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx);
intelContextPtr intel = INTEL_CONTEXT(ctx); intelContextPtr intel = INTEL_CONTEXT(ctx);
GLuint flags = ctx->_TriangleCaps; GLuint flags = ctx->_TriangleCaps;
struct fragment_program *program = ctx->FragmentProgram.Current; struct fragment_program *program = ctx->FragmentProgram._Current;
GLboolean have_wpos = (program && (program->InputsRead & FRAG_BIT_WPOS)); GLboolean have_wpos = (program && (program->InputsRead & FRAG_BIT_WPOS));
GLuint index = 0; GLuint index = 0;