Use the mesa-provided texenv program rather than rolling our own.
authorKeith Whitwell <keith@tungstengraphics.com>
Tue, 10 Oct 2006 08:58:43 +0000 (08:58 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Tue, 10 Oct 2006 08:58:43 +0000 (08:58 +0000)
Turn on texture crossbar support.

src/mesa/drivers/dri/i915/i915_context.c
src/mesa/drivers/dri/i915/i915_fragprog.c
src/mesa/drivers/dri/i915/i915_texprog.c
src/mesa/drivers/dri/i915/i915_vtbl.c

index 8c99d0e1d670d07ff6828c49b67b9b952a9f6a49..5e4703d2b04a6634a3ae50496200dd96df535af6 100644 (file)
@@ -50,6 +50,7 @@ static const struct dri_extension i915_extensions[] =
     { "GL_ARB_depth_texture",              NULL },
     { "GL_ARB_fragment_program",           NULL },
     { "GL_ARB_shadow",                     NULL },
+    { "GL_ARB_texture_env_crossbar",       NULL },
     { "GL_EXT_shadow_funcs",               NULL },
     /* ARB extn won't work if not enabled */
     { "GL_SGIX_depth_texture",             NULL },
@@ -165,6 +166,7 @@ GLboolean i915CreateContext( const __GLcontextModes *mesaVis,
                                                I915_MAX_TEX_INSN);
    ctx->Const.FragmentProgram.MaxNativeTexIndirections = I915_MAX_TEX_INDIRECT;
    ctx->Const.FragmentProgram.MaxNativeAddressRegs = 0; /* I don't think we have one */
+   ctx->_MaintainTexEnvProgram = 1;
 
 
    driInitExtensions( ctx, i915_extensions, GL_FALSE );
index b0cc59c3063918144acec1e6850e68433388afd3..0f3e6885f378059e6b75d34be2c73771b9b49dd3 100644 (file)
@@ -955,6 +955,17 @@ void i915ValidateFragmentProgram( i915ContextPtr i915 )
    GLuint s2 = S2_TEXCOORD_NONE;
    int i, offset = 0;
 
+   if (i915->current_program != p) 
+   {
+      if (i915->current_program) {
+        i915->current_program->on_hardware = 0;
+        i915->current_program->params_uptodate = 0;
+      }
+      
+      i915->current_program = p;
+   }
+
+
    /* Important:
     */
    VB->AttribPtr[VERT_ATTRIB_POS] = VB->NdcPtr;
index 4fbce34ba21c4666fb4caead485a970d6a016d87..f6a8b0205a6a53286e549f8444364c8f39aeeef8 100644 (file)
@@ -591,6 +591,11 @@ void i915ValidateTextureProgram( i915ContextPtr i915 )
    intel->specoffset = 0;
    offset = 0;
 
+   if (i915->current_program) {
+      i915->current_program->on_hardware = 0;
+      i915->current_program->params_uptodate = 0;
+   }
+
    if (i915->vertex_fog == I915_FOG_PIXEL) {
       EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, S4_VFMT_XYZW, 16 );
       RENDERINPUTS_CLEAR( index_bitset, _TNL_ATTRIB_FOG );
index 9ec54de23c529d1fda58efe86eeaa7308ddb7c47..2936a0fb721ac7eefa403e40353dd7e9c5b93d28 100644 (file)
@@ -48,8 +48,10 @@ static void i915_render_start( intelContextPtr intel )
 
    if (ctx->FragmentProgram._Active) 
       i915ValidateFragmentProgram( i915 );
-   else 
+   else {
+      assert(!ctx->_MaintainTexEnvProgram);
       i915ValidateTextureProgram( i915 );
+   }
 }