drivers: don't include texformat.h
[mesa.git] / src / mesa / drivers / dri / intel / intel_generatemipmap.c
index 1060fbd9e5963497d8c16555032b2b0383ff5363..5958b36c97159fbbeee458dcfd284f102ec8637e 100644 (file)
@@ -88,7 +88,7 @@ intel_generate_mipmap_level(GLcontext *ctx, GLuint tex_name,
    if (status != GL_FRAMEBUFFER_COMPLETE_EXT)
       return GL_FALSE;
 
-   intel_meta_set_passthrough_transform(intel);
+   meta_set_passthrough_transform(&intel->meta);
 
    /* XXX: Doing it right would involve setting up the transformation to do
     * 0-1 mapping or something, and not changing the vertex data.
@@ -104,12 +104,12 @@ intel_generate_mipmap_level(GLcontext *ctx, GLuint tex_name,
 
    _mesa_VertexPointer(2, GL_FLOAT, 2 * sizeof(GLfloat), &vertices);
    _mesa_Enable(GL_VERTEX_ARRAY);
-   intel_meta_set_default_texrect(intel);
+   meta_set_default_texrect(&intel->meta);
 
-   CALL_DrawArrays(ctx->Exec, (GL_TRIANGLE_FAN, 0, 4));
+   _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
 
-   intel_meta_restore_texcoords(intel);
-   intel_meta_restore_transform(intel);
+   meta_restore_texcoords(&intel->meta);
+   meta_restore_transform(&intel->meta);
 
    return GL_TRUE;
 }
@@ -125,6 +125,8 @@ intel_generate_mipmap_2d(GLcontext *ctx,
    GLuint fb_name;
    GLboolean success = GL_FALSE;
    struct gl_framebuffer *saved_fbo = NULL;
+   struct gl_buffer_object *saved_array_buffer = NULL;
+   struct gl_buffer_object *saved_element_buffer = NULL;
 
    _mesa_PushAttrib(GL_ENABLE_BIT | GL_TEXTURE_BIT |
                    GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT |
@@ -133,6 +135,16 @@ intel_generate_mipmap_2d(GLcontext *ctx,
    old_active_texture = ctx->Texture.CurrentUnit;
    _mesa_reference_framebuffer(&saved_fbo, ctx->DrawBuffer);
 
+   /* use default array/index buffers */
+   _mesa_reference_buffer_object(ctx, &saved_array_buffer,
+                                 ctx->Array.ArrayBufferObj);
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
+                                 ctx->Shared->NullBufferObj);   
+   _mesa_reference_buffer_object(ctx, &saved_element_buffer,
+                                 ctx->Array.ElementArrayBufferObj);
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj,
+                                 ctx->Shared->NullBufferObj);   
+
    _mesa_Disable(GL_POLYGON_STIPPLE);
    _mesa_Disable(GL_DEPTH_TEST);
    _mesa_Disable(GL_STENCIL_TEST);
@@ -153,9 +165,9 @@ intel_generate_mipmap_2d(GLcontext *ctx,
    _mesa_GenFramebuffersEXT(1, &fb_name);
    _mesa_BindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb_name);
 
-   intel_meta_set_fragment_program(intel, &intel->meta.tex2d_fp,
-                                  intel_fp_tex2d);
-   intel_meta_set_passthrough_vertex_program(intel);
+   meta_set_fragment_program(&intel->meta, &intel->meta.tex2d_fp,
+                            intel_fp_tex2d);
+   meta_set_passthrough_vertex_program(&intel->meta);
 
    max_levels = _mesa_max_texture_levels(ctx, texObj->Target);
    start_level = texObj->BaseLevel;
@@ -202,8 +214,17 @@ intel_generate_mipmap_2d(GLcontext *ctx,
    success = GL_TRUE;
 
 fail:
-   intel_meta_restore_fragment_program(intel);
-   intel_meta_restore_vertex_program(intel);
+   meta_restore_fragment_program(&intel->meta);
+   meta_restore_vertex_program(&intel->meta);
+
+   /* restore array/index buffers */
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
+                                 saved_array_buffer);
+   _mesa_reference_buffer_object(ctx, &saved_array_buffer, NULL);
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj,
+                                 saved_element_buffer);
+   _mesa_reference_buffer_object(ctx, &saved_element_buffer, NULL);
+
 
    _mesa_DeleteFramebuffersEXT(1, &fb_name);
    _mesa_ActiveTextureARB(GL_TEXTURE0_ARB + old_active_texture);
@@ -223,10 +244,6 @@ fail:
  *
  * The texture object's miptree must be mapped.
  *
- * It would be really nice if this was just called by Mesa whenever mipmaps
- * needed to be regenerated, rather than us having to remember to do so in
- * each texture image modification path.
- *
  * This function should also include an accelerated path.
  */
 void