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
|
* 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
|
void
|
||||||
_mesa_GetTexImage( GLenum target, GLint level, GLenum format,
|
_mesa_GetTexImage( GLenum target, GLint level, GLenum format,
|
||||||
GLenum type, GLvoid *pixels )
|
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
|
* Mesa 3-D graphics library
|
||||||
@@ -65,8 +65,14 @@ _mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_unit *texUnit,
|
|||||||
|
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
_mesa_get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
|
_mesa_get_teximage_from_driver(GLcontext *ctx, GLenum target, GLint level,
|
||||||
const struct gl_texture_object *texObj );
|
const struct gl_texture_object *texObj);
|
||||||
|
|
||||||
|
|
||||||
|
extern GLboolean
|
||||||
|
_mesa_get_teximages_from_driver(GLcontext *ctx,
|
||||||
|
struct gl_texture_object *texObj);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*** API entry point functions ***/
|
/*** API entry point functions ***/
|
||||||
|
Reference in New Issue
Block a user