r600: move r700TranslateFragmentShader into r700UpdateShaders
authorAlex Deucher <alexdeucher@gmail.com>
Tue, 28 Jul 2009 19:53:45 +0000 (15:53 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Tue, 28 Jul 2009 19:53:45 +0000 (15:53 -0400)
src/mesa/drivers/dri/r600/r700_render.c
src/mesa/drivers/dri/r600/r700_state.c

index 5a2bf84b59ec92e36507f5d072004659f8d197eb..ea8419d3d2dc6270d8da2546654a1b562c2f278c 100644 (file)
@@ -276,20 +276,12 @@ static GLboolean r700RunRender(GLcontext * ctx,
     context_t *context = R700_CONTEXT(ctx);
     R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
     int lastIndex = 0;
-#if 1
     BATCH_LOCALS(&context->radeon);
 
     unsigned int i, j;
     TNLcontext *tnl = TNL_CONTEXT(ctx);
     struct vertex_buffer *vb = &tnl->vb;
 
-    struct r700_fragment_program *fp = (struct r700_fragment_program *)
-                                          (ctx->FragmentProgram._Current);
-    if (context->radeon.radeonScreen->chip_family < CHIP_FAMILY_RV770)
-    {
-        fp->r700AsmCode.bR6xx = 1;
-    }
-
     r700Start3D(context); /* TODO : this is too much. */
 
     r700SendSQConfig(context);
@@ -308,14 +300,6 @@ static GLboolean r700RunRender(GLcontext * ctx,
     r600UpdateTextureState(ctx);
     r700SendTextureState(context);
 
-    if(GL_FALSE == fp->translated)
-    {
-        if( GL_FALSE == r700TranslateFragmentShader(fp, &(fp->mesa_program)) )
-        {
-            return GL_TRUE;
-        }
-    }
-
     r700SetupShaders(ctx);
 
     r700SendFSState(context); // FIXME just a place holder for now
@@ -391,7 +375,6 @@ static GLboolean r700RunRender(GLcontext * ctx,
 
     radeonReleaseArrays(ctx, 0);
 
-#endif //0
     rcommonFlushCmdBuf( &context->radeon, __FUNCTION__ );
 
     return GL_FALSE;
index 5563a63156c4a19737c534ad3d79677d06dd8f35..c24c859ef584e5ffd41307c9d5ff6e89eb8fe852 100644 (file)
@@ -72,12 +72,28 @@ void r700UpdateShaders (GLcontext * ctx)  //----------------------------------
 
     GLvector4f dummy_attrib[_TNL_ATTRIB_MAX];
     GLvector4f *temp_attrib[_TNL_ATTRIB_MAX];
-
-    struct r700_vertex_program *vp;
-       int i;
+    int i;
+
+    if (ctx->FragmentProgram._Current) {
+           struct r700_fragment_program *fp = (struct r700_fragment_program *)
+                   (ctx->FragmentProgram._Current);
+           if (context->radeon.radeonScreen->chip_family < CHIP_FAMILY_RV770)
+           {
+                   fp->r700AsmCode.bR6xx = 1;
+           }
+
+           if(GL_FALSE == fp->translated)
+           {
+                   if( GL_FALSE == r700TranslateFragmentShader(fp, &(fp->mesa_program)) )
+                   {
+                           //return GL_TRUE;
+                   }
+           }
+    }
 
     if (context->radeon.NewGLState) 
     {
+       struct r700_vertex_program *vp;
         context->radeon.NewGLState = 0;
 
         for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++)