added _mesa_get_teximages_from_driver()
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* $Id: teximage.c,v 1.51 2000/09/28 18:30:39 brianp Exp $ */
|
||||
/* $Id: teximage.c,v 1.52 2000/10/16 23:43:12 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -2114,6 +2114,56 @@ _mesa_get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get all the mipmap images for a texture object from the device driver.
|
||||
* Actually, only get mipmap images if we're using a mipmap filter.
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_get_teximages_from_driver(GLcontext *ctx,
|
||||
struct gl_texture_object *texObj)
|
||||
{
|
||||
if (ctx->Driver.GetTexImage) {
|
||||
static const GLenum targets[] = {
|
||||
GL_TEXTURE_1D,
|
||||
GL_TEXTURE_2D,
|
||||
GL_TEXTURE_3D,
|
||||
GL_TEXTURE_CUBE_MAP_ARB,
|
||||
GL_TEXTURE_CUBE_MAP_ARB,
|
||||
GL_TEXTURE_CUBE_MAP_ARB
|
||||
};
|
||||
GLboolean needLambda = (texObj->MinFilter != texObj->MagFilter);
|
||||
GLenum target = targets[texObj->Dimensions - 1];
|
||||
if (needLambda) {
|
||||
GLint level;
|
||||
/* Get images for all mipmap levels. We might not need them
|
||||
* all but this is easier. We're on a (slow) software path
|
||||
* anyway.
|
||||
*/
|
||||
for (level = 0; level <= texObj->P; level++) {
|
||||
struct gl_texture_image *texImg = texObj->Image[level];
|
||||
if (texImg && !texImg->Data) {
|
||||
_mesa_get_teximage_from_driver(ctx, target, level, texObj);
|
||||
if (!texImg->Data)
|
||||
return GL_FALSE; /* out of memory */
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
GLint level = texObj->BaseLevel;
|
||||
struct gl_texture_image *texImg = texObj->Image[level];
|
||||
if (texImg && !texImg->Data) {
|
||||
_mesa_get_teximage_from_driver(ctx, target, level, texObj);
|
||||
if (!texImg->Data)
|
||||
return GL_FALSE; /* out of memory */
|
||||
}
|
||||
}
|
||||
return GL_TRUE;
|
||||
}
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
_mesa_GetTexImage( GLenum target, GLint level, GLenum format,
|
||||
GLenum type, GLvoid *pixels )
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id: teximage.h,v 1.13 2000/09/05 15:41:25 brianp Exp $ */
|
||||
/* $Id: teximage.h,v 1.14 2000/10/16 23:43:12 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -65,8 +65,14 @@ _mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_unit *texUnit,
|
||||
|
||||
|
||||
extern void
|
||||
_mesa_get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
|
||||
const struct gl_texture_object *texObj );
|
||||
_mesa_get_teximage_from_driver(GLcontext *ctx, GLenum target, GLint level,
|
||||
const struct gl_texture_object *texObj);
|
||||
|
||||
|
||||
extern GLboolean
|
||||
_mesa_get_teximages_from_driver(GLcontext *ctx,
|
||||
struct gl_texture_object *texObj);
|
||||
|
||||
|
||||
|
||||
/*** API entry point functions ***/
|
||||
|
Reference in New Issue
Block a user