new texture image processing

This commit is contained in:
Brian Paul
1999-11-03 17:27:05 +00:00
parent d51b2c99d5
commit c3f0a511a7
5 changed files with 2232 additions and 1591 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: dlist.c,v 1.12 1999/10/31 08:34:47 brianp Exp $ */
/* $Id: dlist.c,v 1.13 1999/11/03 17:27:05 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -389,26 +389,28 @@ void gl_destroy_list( GLcontext *ctx, GLuint list )
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_IMAGE1D:
gl_free_image( (struct gl_image *) n[8].data );
FREE( n[8]. data );
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_IMAGE2D:
gl_free_image( (struct gl_image *) n[9].data );
FREE( n[9].data );
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_IMAGE3D:
FREE( n[10].data );
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_SUB_IMAGE1D:
{
struct gl_image *image;
image = (struct gl_image *) n[7].data;
gl_free_image( image );
}
FREE( n[7].data );
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_SUB_IMAGE2D:
{
struct gl_image *image;
image = (struct gl_image *) n[9].data;
gl_free_image( image );
}
FREE( n[9].data );
n += InstSize[n[0].opcode];
break;
case OPCODE_TEX_SUB_IMAGE3D:
FREE( n[11].data );
n += InstSize[n[0].opcode];
break;
case OPCODE_CONTINUE:
n = (Node *) n[1].next;
@@ -1097,11 +1099,12 @@ static void save_CopyTexSubImage2D( GLcontext *ctx,
}
static void save_CopyTexSubImage3DEXT( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y,
GLsizei width, GLint height )
static void save_CopyTexSubImage3D( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLint zoffset,
GLint x, GLint y,
GLsizei width, GLint height )
{
Node *n;
FLUSH_VB(ctx, "dlist");
@@ -1118,8 +1121,8 @@ static void save_CopyTexSubImage3DEXT( GLcontext *ctx,
n[9].i = height;
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.CopyTexSubImage3DEXT)( ctx, target, level, xoffset, yoffset, zoffset,
x, y, width, height );
(*ctx->Exec.CopyTexSubImage3D)(ctx, target, level, xoffset, yoffset,
zoffset, x, y, width, height );
}
}
@@ -2111,105 +2114,128 @@ static void save_TexParameterfv( GLcontext *ctx, GLenum target,
static void save_TexImage1D( GLcontext *ctx, GLenum target,
GLint level, GLint components,
GLsizei width, GLint border,
GLenum format, GLenum type,
struct gl_image *teximage )
GLint level, GLint components,
GLsizei width, GLint border,
GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE1D, 8 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = border;
n[6].e = format;
n[7].e = type;
n[8].data = teximage;
if (teximage) {
/* this prevents gl_TexImage1D() from freeing the image */
teximage->RefCount = 1;
}
}
if (ctx->ExecuteFlag) {
if (target == GL_PROXY_TEXTURE_1D) {
(*ctx->Exec.TexImage1D)( ctx, target, level, components, width,
border, format, type, teximage );
border, format, type, pixels );
}
else {
Node *n;
GLvoid *image = _mesa_unpack_image(width, 1, 1, format, type,
pixels, &ctx->Unpack);
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE1D, 8 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = border;
n[6].e = format;
n[7].e = type;
n[8].data = image;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexImage1D)( ctx, target, level, components, width,
border, format, type, pixels );
}
}
}
static void save_TexImage2D( GLcontext *ctx, GLenum target,
GLint level, GLint components,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type,
struct gl_image *teximage )
GLint level, GLint components,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE2D, 9 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = (GLint) height;
n[6].i = border;
n[7].e = format;
n[8].e = type;
n[9].data = teximage;
if (teximage) {
/* this prevents gl_TexImage2D() from freeing the image */
teximage->RefCount = 1;
}
}
if (ctx->ExecuteFlag) {
if (target == GL_PROXY_TEXTURE_2D) {
(*ctx->Exec.TexImage2D)( ctx, target, level, components, width,
height, border, format, type, teximage );
height, border, format, type, pixels );
}
else {
Node *n;
GLvoid *image = _mesa_unpack_image(width, height, 1, format, type,
pixels, &ctx->Unpack);
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE2D, 9 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = (GLint) height;
n[6].i = border;
n[7].e = format;
n[8].e = type;
n[9].data = image;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexImage2D)( ctx, target, level, components, width,
height, border, format, type, pixels );
}
}
}
static void save_TexImage3DEXT( GLcontext *ctx, GLenum target,
GLint level, GLint components,
GLsizei width, GLsizei height, GLsizei depth,
GLint border,
GLenum format, GLenum type,
struct gl_image *teximage )
static void save_TexImage3D( GLcontext *ctx, GLenum target,
GLint level, GLint components,
GLsizei width, GLsizei height, GLsizei depth,
GLint border,
GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE3D, 10 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = (GLint) height;
n[6].i = (GLint) depth;
n[7].i = border;
n[8].e = format;
n[9].e = type;
n[10].data = teximage;
if (teximage) {
/* this prevents gl_TexImage3D() from freeing the image */
teximage->RefCount = 1;
}
if (target == GL_PROXY_TEXTURE_3D) {
(*ctx->Exec.TexImage3D)( ctx, target, level, components, width,
height, depth, border, format, type, pixels );
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexImage3DEXT)( ctx, target, level, components, width,
height, depth, border, format, type, teximage );
else {
GLvoid *image = _mesa_unpack_image(width, height, depth, format, type,
pixels, &ctx->Unpack);
Node *n;
n = alloc_instruction( ctx, OPCODE_TEX_IMAGE3D, 10 );
if (n) {
n[1].e = target;
n[2].i = level;
n[3].i = components;
n[4].i = (GLint) width;
n[5].i = (GLint) height;
n[6].i = (GLint) depth;
n[7].i = border;
n[8].e = format;
n[9].e = type;
n[10].data = image;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexImage3D)( ctx, target, level, components, width,
height, depth, border, format, type, pixels );
}
}
}
static void save_TexSubImage1D( GLcontext *ctx,
GLenum target, GLint level, GLint xoffset,
GLsizei width, GLenum format, GLenum type,
struct gl_image *image )
GLenum target, GLint level, GLint xoffset,
GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
GLvoid *image = _mesa_unpack_image(width, 1, 1, format, type,
pixels, &ctx->Unpack);
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_SUB_IMAGE1D, 7 );
if (n) {
@@ -2220,24 +2246,27 @@ static void save_TexSubImage1D( GLcontext *ctx,
n[5].e = format;
n[6].e = type;
n[7].data = image;
if (image)
image->RefCount = 1;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexSubImage1D)( ctx, target, level, xoffset, width,
format, type, image );
format, type, pixels );
}
}
static void save_TexSubImage2D( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type,
struct gl_image *image )
GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
GLvoid *image = _mesa_unpack_image(width, height, 1, format, type,
pixels, &ctx->Unpack);
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_SUB_IMAGE2D, 9 );
if (n) {
@@ -2250,24 +2279,27 @@ static void save_TexSubImage2D( GLcontext *ctx,
n[7].e = format;
n[8].e = type;
n[9].data = image;
if (image)
image->RefCount = 1;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexSubImage2D)( ctx, target, level, xoffset, yoffset,
width, height, format, type, image );
width, height, format, type, pixels );
}
}
static void save_TexSubImage3DEXT( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type,
struct gl_image *image )
static void save_TexSubImage3D( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type,
const GLvoid *pixels )
{
Node *n;
GLvoid *image = _mesa_unpack_image(width, height, depth, format, type,
pixels, &ctx->Unpack);
FLUSH_VB(ctx, "dlist");
n = alloc_instruction( ctx, OPCODE_TEX_SUB_IMAGE3D, 11 );
if (n) {
@@ -2282,12 +2314,13 @@ static void save_TexSubImage3DEXT( GLcontext *ctx,
n[9].e = format;
n[10].e = type;
n[11].data = image;
if (image)
image->RefCount = 1;
}
else {
FREE(image);
}
if (ctx->ExecuteFlag) {
(*ctx->Exec.TexSubImage3DEXT)( ctx, target, level, xoffset, yoffset, zoffset,
width, height, depth, format, type, image );
(*ctx->Exec.TexSubImage3D)(ctx, target, level, xoffset, yoffset, zoffset,
width, height, depth, format, type, pixels );
}
}
@@ -2460,6 +2493,16 @@ void gl_save_error( GLcontext *ctx, GLenum error, const char *s )
*/
static void execute_list( GLcontext *ctx, GLuint list )
{
static struct gl_pixelstore_attrib defaultPacking = {
1, /* Alignment */
0, /* RowLength */
0, /* SkipPixels */
0, /* SkipRows */
0, /* ImageHeight */
0, /* SkipImages */
GL_FALSE, /* SwapBytes */
GL_FALSE /* LsbFirst */
};
Node *n;
GLboolean done;
OpCode opcode;
@@ -2527,16 +2570,6 @@ static void execute_list( GLcontext *ctx, GLuint list )
break;
case OPCODE_BITMAP:
{
static struct gl_pixelstore_attrib defaultPacking = {
1, /* Alignment */
0, /* RowLength */
0, /* SkipPixels */
0, /* SkipRows */
0, /* ImageHeight */
0, /* SkipImages */
GL_FALSE, /* SwapBytes */
GL_FALSE /* LsbFirst */
};
const struct gl_image *image = (struct gl_image *) n[7].data;
const GLubyte *bitmap = image ? image->Data : NULL;
gl_Bitmap( ctx, (GLsizei) n[1].i, (GLsizei) n[2].i,
@@ -2630,8 +2663,8 @@ static void execute_list( GLcontext *ctx, GLuint list )
n[5].i, n[6].i, n[7].i, n[8].i );
break;
case OPCODE_COPY_TEX_SUB_IMAGE3D:
gl_CopyTexSubImage3DEXT( ctx, n[1].e, n[2].i, n[3].i, n[4].i,
n[5].i, n[6].i, n[7].i, n[8].i , n[9].i);
gl_CopyTexSubImage3D( ctx, n[1].e, n[2].i, n[3].i, n[4].i,
n[5].i, n[6].i, n[7].i, n[8].i, n[9].i);
break;
case OPCODE_CULL_FACE:
gl_CullFace( ctx, n[1].e );
@@ -2889,30 +2922,43 @@ static void execute_list( GLcontext *ctx, GLuint list )
}
break;
case OPCODE_TEX_IMAGE1D:
gl_TexImage1D( ctx,
n[1].e, /* target */
n[2].i, /* level */
n[3].i, /* components */
n[4].i, /* width */
n[5].e, /* border */
n[6].e, /* format */
n[7].e, /* type */
(struct gl_image *) n[8].data );
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
gl_TexImage1D( ctx,
n[1].e, /* target */
n[2].i, /* level */
n[3].i, /* components */
n[4].i, /* width */
n[5].e, /* border */
n[6].e, /* format */
n[7].e, /* type */
n[8].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TEX_IMAGE2D:
gl_TexImage2D( ctx,
n[1].e, /* target */
n[2].i, /* level */
n[3].i, /* components */
n[4].i, /* width */
n[5].i, /* height */
n[6].e, /* border */
n[7].e, /* format */
n[8].e, /* type */
(struct gl_image *) n[9].data );
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
gl_TexImage2D( ctx,
n[1].e, /* target */
n[2].i, /* level */
n[3].i, /* components */
n[4].i, /* width */
n[5].i, /* height */
n[6].e, /* border */
n[7].e, /* format */
n[8].e, /* type */
n[9].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TEX_IMAGE3D:
gl_TexImage3DEXT( ctx,
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
gl_TexImage3D( ctx,
n[1].e, /* target */
n[2].i, /* level */
n[3].i, /* components */
@@ -2922,21 +2968,38 @@ static void execute_list( GLcontext *ctx, GLuint list )
n[7].e, /* border */
n[8].e, /* format */
n[9].e, /* type */
(struct gl_image *) n[10].data );
n[10].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TEX_SUB_IMAGE1D:
gl_TexSubImage1D( ctx, n[1].e, n[2].i, n[3].i, n[4].i, n[5].e,
n[6].e, (struct gl_image *) n[7].data );
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
gl_TexSubImage1D( ctx, n[1].e, n[2].i, n[3].i, n[4].i, n[5].e,
n[6].e, n[7].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TEX_SUB_IMAGE2D:
gl_TexSubImage2D( ctx, n[1].e, n[2].i, n[3].i, n[4].i, n[5].e,
n[6].i, n[7].e, n[8].e,
(struct gl_image *) n[9].data );
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
(*ctx->Exec.TexSubImage2D)( ctx, n[1].e, n[2].i, n[3].i,
n[4].i, n[5].e,
n[6].i, n[7].e, n[8].e, n[9].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TEX_SUB_IMAGE3D:
gl_TexSubImage3DEXT( ctx, n[1].e, n[2].i, n[3].i, n[4].i, n[5].i,
{
struct gl_pixelstore_attrib save = ctx->Unpack;
ctx->Unpack = defaultPacking;
gl_TexSubImage3D( ctx, n[1].e, n[2].i, n[3].i, n[4].i, n[5].i,
n[6].i, n[7].i, n[8].i, n[9].e, n[10].e,
(struct gl_image *) n[11].data );
n[11].data );
ctx->Unpack = save; /* restore */
}
break;
case OPCODE_TRANSLATE:
gl_Translatef( ctx, n[1].f, n[2].f, n[3].f );
@@ -3255,7 +3318,7 @@ void gl_init_dlist_pointers( struct gl_api_table *table )
table->CopyTexImage2D = save_CopyTexImage2D;
table->CopyTexSubImage1D = save_CopyTexSubImage1D;
table->CopyTexSubImage2D = save_CopyTexSubImage2D;
table->CopyTexSubImage3DEXT = save_CopyTexSubImage3DEXT;
table->CopyTexSubImage3D = save_CopyTexSubImage3D;
table->CullFace = save_CullFace;
table->DeleteLists = gl_DeleteLists; /* NOT SAVED */
table->DeleteTextures = gl_DeleteTextures; /* NOT SAVED */
@@ -3373,10 +3436,10 @@ void gl_init_dlist_pointers( struct gl_api_table *table )
table->TexGenfv = save_TexGenfv;
table->TexImage1D = save_TexImage1D;
table->TexImage2D = save_TexImage2D;
table->TexImage3DEXT = save_TexImage3DEXT;
table->TexImage3D = save_TexImage3D;
table->TexSubImage1D = save_TexSubImage1D;
table->TexSubImage2D = save_TexSubImage2D;
table->TexSubImage3DEXT = save_TexSubImage3DEXT;
table->TexSubImage3D = save_TexSubImage3D;
table->TexParameterfv = save_TexParameterfv;
table->Translatef = save_Translatef;
table->Viewport = save_Viewport;

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
/* $Id: image.h,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
/* $Id: image.h,v 1.2 1999/11/03 17:27:05 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -106,4 +106,31 @@ extern GLboolean gl_image_error_test( GLcontext *ctx,
const char *msg );
/*
* New (3.3) functions
*/
extern void
_mesa_unpack_ubyte_color_span( const GLcontext *ctx,
GLuint n, GLenum dstFormat, GLubyte dest[],
GLenum srcFormat, GLenum srcType,
const GLvoid *source,
const struct gl_pixelstore_attrib *unpacking,
GLboolean applyTransferOps );
extern void
_mesa_unpack_index_span( const GLcontext *ctx, GLuint n,
GLenum dstType, GLvoid *dest,
GLenum srcType, const GLvoid *source,
const struct gl_pixelstore_attrib *unpacking,
GLboolean applyTransferOps );
extern void *
_mesa_unpack_image( GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *unpack );
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
/* $Id: teximage.h,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
/* $Id: teximage.h,v 1.2 1999/11/03 17:27:05 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -25,9 +25,6 @@
*/
#ifndef TEXIMAGE_H
#define TEXIMAGE_H
@@ -44,57 +41,6 @@ extern struct gl_texture_image *gl_alloc_texture_image( void );
extern void gl_free_texture_image( struct gl_texture_image *teximage );
extern struct gl_image *
gl_unpack_texsubimage( GLcontext *ctx, GLint width, GLint height,
GLenum format, GLenum type, const GLvoid *pixels );
extern struct gl_image *
gl_unpack_texsubimage3D( GLcontext *ctx, GLint width, GLint height,GLint depth,
GLenum format, GLenum type, const GLvoid *pixels );
extern struct gl_texture_image *
gl_unpack_texture( GLcontext *ctx,
GLint dimensions,
GLenum target,
GLint level,
GLint internalformat,
GLsizei width, GLsizei height,
GLint border,
GLenum format, GLenum type,
const GLvoid *pixels );
extern struct gl_texture_image *
gl_unpack_texture3D( GLcontext *ctx,
GLint dimensions,
GLenum target,
GLint level,
GLint internalformat,
GLsizei width, GLsizei height, GLsizei depth,
GLint border,
GLenum format, GLenum type,
const GLvoid *pixels );
extern void gl_tex_image_1D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLint border, GLenum format,
GLenum type, const GLvoid *pixels );
extern void gl_tex_image_2D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLint height, GLint border,
GLenum format, GLenum type,
const GLvoid *pixels );
extern void gl_tex_image_3D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLint height, GLint depth,
GLint border,
GLenum format, GLenum type,
const GLvoid *pixels );
/*** API entry points ***/
@@ -103,22 +49,21 @@ extern void gl_tex_image_3D( GLcontext *ctx,
extern void gl_TexImage1D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLint border, GLenum format,
GLenum type, struct gl_image *teximage );
GLenum type, const GLvoid *pixels );
extern void gl_TexImage2D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type,
struct gl_image *teximage );
const GLvoid *pixels );
extern void gl_TexImage3DEXT( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLsizei depth,
GLint border,
GLenum format, GLenum type,
struct gl_image *teximage );
extern void gl_TexImage3D( GLcontext *ctx,
GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLsizei depth,
GLint border, GLenum format, GLenum type,
const GLvoid *pixels );
extern void gl_GetTexImage( GLcontext *ctx, GLenum target, GLint level,
@@ -129,7 +74,7 @@ extern void gl_GetTexImage( GLcontext *ctx, GLenum target, GLint level,
extern void gl_TexSubImage1D( GLcontext *ctx,
GLenum target, GLint level, GLint xoffset,
GLsizei width, GLenum format, GLenum type,
struct gl_image *image );
const GLvoid *pixels );
extern void gl_TexSubImage2D( GLcontext *ctx,
@@ -137,15 +82,15 @@ extern void gl_TexSubImage2D( GLcontext *ctx,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type,
struct gl_image *image );
const GLvoid *pixels );
extern void gl_TexSubImage3DEXT( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type,
struct gl_image *image );
extern void gl_TexSubImage3D( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type,
const GLvoid *pixels );
extern void gl_CopyTexImage1D( GLcontext *ctx,
@@ -175,12 +120,12 @@ extern void gl_CopyTexSubImage2D( GLcontext *ctx,
GLsizei width, GLsizei height );
extern void gl_CopyTexSubImage3DEXT( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLint zoffset,
GLint x, GLint y,
GLsizei width, GLsizei height );
extern void gl_CopyTexSubImage3D( GLcontext *ctx,
GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLint zoffset,
GLint x, GLint y,
GLsizei width, GLsizei height );
#endif