diff options
| -rw-r--r-- | src/mesa/drivers/common/driverfuncs.c | 2 | ||||
| -rw-r--r-- | src/mesa/main/dd.h | 7 | ||||
| -rw-r--r-- | src/mesa/main/fbobject.c | 2 | ||||
| -rw-r--r-- | src/mesa/main/texstore.c | 48 | 
4 files changed, 34 insertions, 25 deletions
| diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 03fbab69e3..7fe116285c 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -29,6 +29,7 @@  #include "buffers.h"  #include "context.h"  #include "framebuffer.h" +#include "mipmap.h"  #include "queryobj.h"  #include "renderbuffer.h"  #include "texcompress.h" @@ -98,6 +99,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver)     driver->CopyTexSubImage1D = _swrast_copy_texsubimage1d;     driver->CopyTexSubImage2D = _swrast_copy_texsubimage2d;     driver->CopyTexSubImage3D = _swrast_copy_texsubimage3d; +   driver->GenerateMipmap = _mesa_generate_mipmap;     driver->TestProxyTexImage = _mesa_test_proxy_teximage;     driver->CompressedTexImage1D = _mesa_store_compressed_teximage1d;     driver->CompressedTexImage2D = _mesa_store_compressed_teximage2d; diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index ce33905af1..bfbb96aebb 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -328,6 +328,13 @@ struct dd_function_table {                                GLsizei width, GLsizei height );     /** +    * Called by glGenerateMipmap() or when GL_GENERATE_MIPMAP_SGIS is enabled. +    */ +   void (*GenerateMipmap)(GLcontext *ctx,  GLenum target, +                          const struct gl_texture_unit *texUnit, +                          struct gl_texture_object *texObj); + +   /**      * Called by glTexImage[123]D when user specifies a proxy texture      * target.        * diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index b015ca6c5e..6cda7de953 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1547,7 +1547,7 @@ _mesa_GenerateMipmapEXT(GLenum target)     /* XXX this might not handle cube maps correctly */     _mesa_lock_texture(ctx, texObj); -   _mesa_generate_mipmap(ctx, target, texUnit, texObj); +   ctx->Driver.GenerateMipmap(ctx, target, texUnit, texObj);     _mesa_unlock_texture(ctx, texObj);     if (ctx->Driver.UnmapTexture) diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 90edca86e8..35ef7b1ec1 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -2918,9 +2918,9 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3004,9 +3004,9 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3080,9 +3080,9 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3128,9 +3128,9 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3183,9 +3183,9 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3238,9 +3238,9 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, packing); @@ -3314,9 +3314,9 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, &ctx->Unpack); @@ -3426,9 +3426,9 @@ _mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target,     /* GL_SGIS_generate_mipmap */     if (level == texObj->BaseLevel && texObj->GenerateMipmap) { -      _mesa_generate_mipmap(ctx, target, -                            &ctx->Texture.Unit[ctx->Texture.CurrentUnit], -                            texObj); +      ctx->Driver.GenerateMipmap(ctx, target, +                                 &ctx->Texture.Unit[ctx->Texture.CurrentUnit], +                                 texObj);     }     _mesa_unmap_teximage_pbo(ctx, &ctx->Unpack); | 
