mesa: added _mesa_meta_check_generate_mipmap_fallback()

This commit is contained in:
Brian Paul 2009-10-02 08:54:55 -06:00
parent f9f7646fe6
commit f1cab802b8
2 changed files with 28 additions and 3 deletions

View file

@ -1948,6 +1948,29 @@ _mesa_meta_Bitmap(GLcontext *ctx,
}
/**
* Check if the call to _mesa_meta_GenerateMipmap() will require a
* software fallback. The fallback path will require that the texture
* images are mapped.
*/
GLboolean
_mesa_meta_check_generate_mipmap_fallback(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj)
{
struct gl_texture_image *baseImage =
_mesa_select_tex_image(ctx, texObj, target, texObj->BaseLevel);
/* check for fallbacks */
if (!ctx->Extensions.EXT_framebuffer_object ||
target == GL_TEXTURE_3D ||
!baseImage ||
baseImage->IsCompressed) {
return GL_TRUE;
}
return GL_FALSE;
}
/**
* Called via ctx->Driver.GenerateMipmap()
* Note: texture borders and 3D texture support not yet complete.
@ -1976,9 +1999,7 @@ _mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target,
GLuint dstLevel;
GLuint border = 0;
/* check for fallbacks */
if (!ctx->Extensions.EXT_framebuffer_object ||
target == GL_TEXTURE_3D) {
if (_mesa_meta_check_generate_mipmap_fallback(ctx, target, texObj)) {
_mesa_generate_mipmap(ctx, target, texObj);
return;
}

View file

@ -60,6 +60,10 @@ _mesa_meta_Bitmap(GLcontext *ctx,
const struct gl_pixelstore_attrib *unpack,
const GLubyte *bitmap);
extern GLboolean
_mesa_meta_check_generate_mipmap_fallback(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj);
extern void
_mesa_meta_GenerateMipmap(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj);