mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 19:40:10 +01:00
mesa: add EXT_dsa gl(Copy)Texture(Sub)Image1D/2D/3DEXT functions
Added functions: - glTextureImage1DEXT - glTextureImage2DEXT - glTextureImage3DEXT - glTextureSubImage1DEXT - glTextureSubImage3DEXT - glCopyTextureImage1DEXT - glCopyTextureImage2DEXT - glCopyTextureSubImage1DEXT - glCopyTextureSubImage2DEXT - glCopyTextureSubImage3DEXT - glGetTextureImageEXT All but the last one can be compiled in a display list. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
f8ad95c45f
commit
5fb9c9d628
8 changed files with 878 additions and 20 deletions
|
|
@ -144,6 +144,56 @@
|
|||
<param name="params" type="const float *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureImage1DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="internalFormat" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="border" type="GLint" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureImage2DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="internalFormat" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
<param name="border" type="GLint" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureImage3DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="internalFormat" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
<param name="depth" type="GLsizei" />
|
||||
<param name="border" type="GLint" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureSubImage1DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="xoffset" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureSubImage2DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
|
|
@ -157,6 +207,88 @@
|
|||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="TextureSubImage3DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="xoffset" type="GLint" />
|
||||
<param name="yoffset" type="GLint" />
|
||||
<param name="zoffset" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
<param name="depth" type="GLsizei" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="const GLvoid *" />
|
||||
</function>
|
||||
|
||||
<function name="CopyTextureImage1DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="internalFormat" type="GLenum" />
|
||||
<param name="x" type="GLint" />
|
||||
<param name="y" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="border" type="int" />
|
||||
</function>
|
||||
|
||||
<function name="CopyTextureImage2DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="internalFormat" type="GLenum" />
|
||||
<param name="x" type="GLint" />
|
||||
<param name="y" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
<param name="border" type="int" />
|
||||
</function>
|
||||
|
||||
<function name="CopyTextureSubImage1DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="xoffset" type="GLint" />
|
||||
<param name="x" type="GLint" />
|
||||
<param name="y" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
</function>
|
||||
|
||||
<function name="CopyTextureSubImage2DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="xoffset" type="GLint" />
|
||||
<param name="yoffset" type="GLint" />
|
||||
<param name="x" type="GLint" />
|
||||
<param name="y" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
</function>
|
||||
|
||||
<function name="CopyTextureSubImage3DEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="xoffset" type="GLint" />
|
||||
<param name="yoffset" type="GLint" />
|
||||
<param name="zoffset" type="GLint" />
|
||||
<param name="x" type="GLint" />
|
||||
<param name="y" type="GLint" />
|
||||
<param name="width" type="GLsizei" />
|
||||
<param name="height" type="GLsizei" />
|
||||
</function>
|
||||
|
||||
<function name="GetTextureImageEXT">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="target" type="GLenum" />
|
||||
<param name="level" type="GLint" />
|
||||
<param name="format" type="GLenum" />
|
||||
<param name="type" type="GLenum" />
|
||||
<param name="pixels" type="GLvoid *" />
|
||||
</function>
|
||||
|
||||
<!-- OpenGL 1.2.1 -->
|
||||
|
||||
<function name="BindMultiTextureEXT">
|
||||
|
|
|
|||
|
|
@ -1478,15 +1478,26 @@ offsets = {
|
|||
"NamedBufferSubDataEXT": 1442,
|
||||
"NamedBufferStorageEXT": 1443,
|
||||
"MapNamedBufferRangeEXT": 1444,
|
||||
"TextureSubImage2DEXT": 1445,
|
||||
"CompressedTextureSubImage2DEXT": 1446,
|
||||
"MapNamedBufferEXT": 1447,
|
||||
"GetTextureParameterivEXT": 1448,
|
||||
"GetTextureParameterfvEXT": 1449,
|
||||
"TextureParameteriEXT": 1450,
|
||||
"TextureParameterivEXT": 1451,
|
||||
"TextureParameterfEXT": 1452,
|
||||
"TextureParameterfvEXT": 1453,
|
||||
"TextureImage1DEXT": 1445,
|
||||
"TextureImage2DEXT": 1446,
|
||||
"TextureImage3DEXT": 1447,
|
||||
"TextureSubImage1DEXT": 1448,
|
||||
"TextureSubImage2DEXT": 1449,
|
||||
"TextureSubImage3DEXT": 1450,
|
||||
"CopyTextureImage1DEXT": 1451,
|
||||
"CopyTextureImage2DEXT": 1452,
|
||||
"CopyTextureSubImage1DEXT": 1453,
|
||||
"CopyTextureSubImage2DEXT": 1454,
|
||||
"CopyTextureSubImage3DEXT": 1455,
|
||||
"CompressedTextureSubImage2DEXT": 1456,
|
||||
"MapNamedBufferEXT": 1457,
|
||||
"GetTextureParameterivEXT": 1458,
|
||||
"GetTextureParameterfvEXT": 1459,
|
||||
"TextureParameteriEXT": 1460,
|
||||
"TextureParameterivEXT": 1461,
|
||||
"TextureParameterfEXT": 1462,
|
||||
"TextureParameterfvEXT": 1463,
|
||||
"GetTextureImageEXT": 1464,
|
||||
}
|
||||
|
||||
functions = [
|
||||
|
|
|
|||
|
|
@ -570,7 +570,17 @@ typedef enum
|
|||
OPCODE_MATRIX_POP,
|
||||
OPCODE_TEXTUREPARAMETER_F,
|
||||
OPCODE_TEXTUREPARAMETER_I,
|
||||
OPCODE_TEXTURE_IMAGE1D,
|
||||
OPCODE_TEXTURE_IMAGE2D,
|
||||
OPCODE_TEXTURE_IMAGE3D,
|
||||
OPCODE_TEXTURE_SUB_IMAGE1D,
|
||||
OPCODE_TEXTURE_SUB_IMAGE2D,
|
||||
OPCODE_TEXTURE_SUB_IMAGE3D,
|
||||
OPCODE_COPY_TEXTURE_IMAGE1D,
|
||||
OPCODE_COPY_TEXTURE_IMAGE2D,
|
||||
OPCODE_COPY_TEXTURE_SUB_IMAGE1D,
|
||||
OPCODE_COPY_TEXTURE_SUB_IMAGE2D,
|
||||
OPCODE_COPY_TEXTURE_SUB_IMAGE3D,
|
||||
OPCODE_COMPRESSED_TEXTURE_SUB_IMAGE_2D,
|
||||
|
||||
/* The following three are meta instructions */
|
||||
|
|
@ -1205,10 +1215,25 @@ _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist)
|
|||
case OPCODE_WINDOW_RECTANGLES:
|
||||
free(get_pointer(&n[3]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE1D:
|
||||
free(get_pointer(&n[9]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE2D:
|
||||
free(get_pointer(&n[10]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE3D:
|
||||
free(get_pointer(&n[11]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE1D:
|
||||
free(get_pointer(&n[8]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE2D:
|
||||
case OPCODE_COMPRESSED_TEXTURE_SUB_IMAGE_2D:
|
||||
free(get_pointer(&n[10]));
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE3D:
|
||||
free(get_pointer(&n[12]));
|
||||
break;
|
||||
case OPCODE_CONTINUE:
|
||||
n = (Node *) get_pointer(&n[1]);
|
||||
free(block);
|
||||
|
|
@ -9531,6 +9556,153 @@ save_TextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint par
|
|||
save_TextureParameterivEXT(texture, target, pname, fparam);
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureImage1DEXT(GLuint texture, GLenum target,
|
||||
GLint level, GLint components,
|
||||
GLsizei width, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid * pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
if (target == GL_PROXY_TEXTURE_1D) {
|
||||
/* don't compile, execute immediately */
|
||||
CALL_TextureImage1DEXT(ctx->Exec, (texture, target, level, components, width,
|
||||
border, format, type, pixels));
|
||||
}
|
||||
else {
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_TEXTURE_IMAGE1D, 8 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].e = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = components;
|
||||
n[5].i = (GLint) width;
|
||||
n[6].i = border;
|
||||
n[7].e = format;
|
||||
n[8].e = type;
|
||||
save_pointer(&n[9],
|
||||
unpack_image(ctx, 1, width, 1, 1, format, type,
|
||||
pixels, &ctx->Unpack));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_TextureImage1DEXT(ctx->Exec, (texture, target, level, components, width,
|
||||
border, format, type, pixels));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureImage2DEXT(GLuint texture, GLenum target,
|
||||
GLint level, GLint components,
|
||||
GLsizei width, GLsizei height, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid * pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
if (target == GL_PROXY_TEXTURE_2D) {
|
||||
/* don't compile, execute immediately */
|
||||
CALL_TextureImage2DEXT(ctx->Exec, (texture, target, level, components, width,
|
||||
height, border, format, type, pixels));
|
||||
}
|
||||
else {
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_TEXTURE_IMAGE2D, 9 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = components;
|
||||
n[5].i = (GLint) width;
|
||||
n[6].i = (GLint) height;
|
||||
n[7].i = border;
|
||||
n[8].e = format;
|
||||
n[9].e = type;
|
||||
save_pointer(&n[10],
|
||||
unpack_image(ctx, 2, width, height, 1, format, type,
|
||||
pixels, &ctx->Unpack));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_TextureImage2DEXT(ctx->Exec, (texture, target, level, components, width,
|
||||
height, border, format, type, pixels));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureImage3DEXT(GLuint texture, GLenum target,
|
||||
GLint level, GLint internalFormat,
|
||||
GLsizei width, GLsizei height, GLsizei depth,
|
||||
GLint border,
|
||||
GLenum format, GLenum type, const GLvoid * pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
if (target == GL_PROXY_TEXTURE_3D) {
|
||||
/* don't compile, execute immediately */
|
||||
CALL_TextureImage3DEXT(ctx->Exec, (texture, target, level, internalFormat, width,
|
||||
height, depth, border, format, type,
|
||||
pixels));
|
||||
}
|
||||
else {
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_TEXTURE_IMAGE3D, 10 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = (GLint) internalFormat;
|
||||
n[5].i = (GLint) width;
|
||||
n[6].i = (GLint) height;
|
||||
n[7].i = (GLint) depth;
|
||||
n[8].i = border;
|
||||
n[9].e = format;
|
||||
n[10].e = type;
|
||||
save_pointer(&n[11],
|
||||
unpack_image(ctx, 3, width, height, depth, format, type,
|
||||
pixels, &ctx->Unpack));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_TextureImage3DEXT(ctx->Exec, (texture, target, level, internalFormat,
|
||||
width, height, depth, border, format,
|
||||
type, pixels));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset,
|
||||
GLsizei width, GLenum format, GLenum type,
|
||||
const GLvoid * pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
n = alloc_instruction(ctx, OPCODE_TEXTURE_SUB_IMAGE1D, 7 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = xoffset;
|
||||
n[5].i = (GLint) width;
|
||||
n[6].e = format;
|
||||
n[7].e = type;
|
||||
save_pointer(&n[8],
|
||||
unpack_image(ctx, 1, width, 1, 1, format, type,
|
||||
pixels, &ctx->Unpack));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_TextureSubImage1DEXT(ctx->Exec, (texture, target, level, xoffset, width,
|
||||
format, type, pixels));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
|
|
@ -9563,6 +9735,176 @@ save_TextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_TextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLsizei width, GLsizei height, GLsizei depth,
|
||||
GLenum format, GLenum type, const GLvoid * pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
n = alloc_instruction(ctx, OPCODE_TEXTURE_SUB_IMAGE3D, 11 + POINTER_DWORDS);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = xoffset;
|
||||
n[5].i = yoffset;
|
||||
n[6].i = zoffset;
|
||||
n[7].i = (GLint) width;
|
||||
n[8].i = (GLint) height;
|
||||
n[9].i = (GLint) depth;
|
||||
n[10].e = format;
|
||||
n[11].e = type;
|
||||
save_pointer(&n[12],
|
||||
unpack_image(ctx, 3, width, height, depth, format, type,
|
||||
pixels, &ctx->Unpack));
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_TextureSubImage3DEXT(ctx->Exec, (texture, target, level,
|
||||
xoffset, yoffset, zoffset,
|
||||
width, height, depth, format, type,
|
||||
pixels));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalformat, GLint x, GLint y,
|
||||
GLsizei width, GLint border)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_COPY_TEXTURE_IMAGE1D, 8);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].e = internalformat;
|
||||
n[5].i = x;
|
||||
n[6].i = y;
|
||||
n[7].i = width;
|
||||
n[8].i = border;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_CopyTextureImage1DEXT(ctx->Exec, (texture, target, level,
|
||||
internalformat, x, y,
|
||||
width, border));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalformat,
|
||||
GLint x, GLint y, GLsizei width,
|
||||
GLsizei height, GLint border)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_COPY_TEXTURE_IMAGE2D, 9);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].e = internalformat;
|
||||
n[5].i = x;
|
||||
n[6].i = y;
|
||||
n[7].i = width;
|
||||
n[8].i = height;
|
||||
n[9].i = border;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_CopyTextureImage2DEXT(ctx->Exec, (texture, target, level,
|
||||
internalformat, x, y,
|
||||
width, height, border));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint x, GLint y, GLsizei width)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_COPY_TEXTURE_SUB_IMAGE1D, 7);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = xoffset;
|
||||
n[5].i = x;
|
||||
n[6].i = y;
|
||||
n[7].i = width;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_CopyTextureSubImage1DEXT(ctx->Exec,
|
||||
(texture, target, level, xoffset, x, y, width));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y, GLsizei width, GLint height)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_COPY_TEXTURE_SUB_IMAGE2D, 9);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = xoffset;
|
||||
n[5].i = yoffset;
|
||||
n[6].i = x;
|
||||
n[7].i = y;
|
||||
n[8].i = width;
|
||||
n[9].i = height;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_CopyTextureSubImage2DEXT(ctx->Exec, (texture, target, level,
|
||||
xoffset, yoffset,
|
||||
x, y, width, height));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint x, GLint y, GLsizei width, GLint height)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
Node *n;
|
||||
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
|
||||
n = alloc_instruction(ctx, OPCODE_COPY_TEXTURE_SUB_IMAGE3D, 10);
|
||||
if (n) {
|
||||
n[1].ui = texture;
|
||||
n[2].e = target;
|
||||
n[3].i = level;
|
||||
n[4].i = xoffset;
|
||||
n[5].i = yoffset;
|
||||
n[6].i = zoffset;
|
||||
n[7].i = x;
|
||||
n[8].i = y;
|
||||
n[9].i = width;
|
||||
n[10].i = height;
|
||||
}
|
||||
if (ctx->ExecuteFlag) {
|
||||
CALL_CopyTextureSubImage3DEXT(ctx->Exec, (texture, target, level,
|
||||
xoffset, yoffset, zoffset,
|
||||
x, y, width, height));
|
||||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
save_CompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset,
|
||||
GLint yoffset, GLsizei width, GLsizei height,
|
||||
|
|
@ -11181,6 +11523,67 @@ execute_list(struct gl_context *ctx, GLuint list)
|
|||
CALL_TextureParameterivEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].e, params));
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE1D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
ctx->Unpack = ctx->DefaultPacking;
|
||||
CALL_TextureImage1DEXT(ctx->Exec, (n[1].ui, /* texture */
|
||||
n[2].e, /* target */
|
||||
n[3].i, /* level */
|
||||
n[4].i, /* components */
|
||||
n[5].i, /* width */
|
||||
n[6].e, /* border */
|
||||
n[7].e, /* format */
|
||||
n[8].e, /* type */
|
||||
get_pointer(&n[9])));
|
||||
ctx->Unpack = save; /* restore */
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE2D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
ctx->Unpack = ctx->DefaultPacking;
|
||||
CALL_TextureImage2DEXT(ctx->Exec, (n[1].ui, /* texture */
|
||||
n[2].e, /* target */
|
||||
n[3].i, /* level */
|
||||
n[4].i, /* components */
|
||||
n[5].i, /* width */
|
||||
n[6].i, /* height */
|
||||
n[7].e, /* border */
|
||||
n[8].e, /* format */
|
||||
n[9].e, /* type */
|
||||
get_pointer(&n[10])));
|
||||
ctx->Unpack = save; /* restore */
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_IMAGE3D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
ctx->Unpack = ctx->DefaultPacking;
|
||||
CALL_TextureImage3DEXT(ctx->Exec, (n[1].ui, /* texture */
|
||||
n[2].e, /* target */
|
||||
n[3].i, /* level */
|
||||
n[4].i, /* components */
|
||||
n[5].i, /* width */
|
||||
n[6].i, /* height */
|
||||
n[7].i, /* depth */
|
||||
n[8].e, /* border */
|
||||
n[9].e, /* format */
|
||||
n[10].e, /* type */
|
||||
get_pointer(&n[11])));
|
||||
ctx->Unpack = save; /* restore */
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE1D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
ctx->Unpack = ctx->DefaultPacking;
|
||||
CALL_TextureSubImage1DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].i, n[5].i, n[6].e,
|
||||
n[7].e, get_pointer(&n[8])));
|
||||
ctx->Unpack = save; /* restore */
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE2D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
|
|
@ -11192,6 +11595,44 @@ execute_list(struct gl_context *ctx, GLuint list)
|
|||
ctx->Unpack = save;
|
||||
}
|
||||
break;
|
||||
case OPCODE_TEXTURE_SUB_IMAGE3D:
|
||||
{
|
||||
const struct gl_pixelstore_attrib save = ctx->Unpack;
|
||||
ctx->Unpack = ctx->DefaultPacking;
|
||||
CALL_TextureSubImage3DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].i, n[5].i, n[6].i,
|
||||
n[7].i, n[8].i, n[9].i,
|
||||
n[10].e, n[11].e,
|
||||
get_pointer(&n[12])));
|
||||
ctx->Unpack = save; /* restore */
|
||||
}
|
||||
break;
|
||||
case OPCODE_COPY_TEXTURE_IMAGE1D:
|
||||
CALL_CopyTextureImage1DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].e, n[5].i, n[6].i,
|
||||
n[7].i, n[8].i));
|
||||
break;
|
||||
case OPCODE_COPY_TEXTURE_IMAGE2D:
|
||||
CALL_CopyTextureImage2DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].e, n[5].i, n[6].i,
|
||||
n[7].i, n[8].i, n[9].i));
|
||||
break;
|
||||
case OPCODE_COPY_TEXTURE_SUB_IMAGE1D:
|
||||
CALL_CopyTextureSubImage1DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].i, n[5].i, n[6].i,
|
||||
n[7].i));
|
||||
break;
|
||||
case OPCODE_COPY_TEXTURE_SUB_IMAGE2D:
|
||||
CALL_CopyTextureSubImage2DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].i, n[5].i, n[6].i,
|
||||
n[7].i, n[8].i, n[9].i));
|
||||
break;
|
||||
case OPCODE_COPY_TEXTURE_SUB_IMAGE3D:
|
||||
CALL_CopyTextureSubImage3DEXT(ctx->Exec, (n[1].ui, n[2].e, n[3].i,
|
||||
n[4].i, n[5].i, n[6].i,
|
||||
n[7].i, n[8].i, n[9].i,
|
||||
n[10].i));
|
||||
break;
|
||||
case OPCODE_COMPRESSED_TEXTURE_SUB_IMAGE_2D:
|
||||
CALL_CompressedTextureSubImage2DEXT(ctx->Exec,
|
||||
(n[1].ui, n[2].e, n[3].i, n[4].i,
|
||||
|
|
@ -12194,7 +12635,17 @@ _mesa_initialize_save_table(const struct gl_context *ctx)
|
|||
SET_TextureParameterivEXT(table, save_TextureParameterivEXT);
|
||||
SET_TextureParameterfEXT(table, save_TextureParameterfEXT);
|
||||
SET_TextureParameterfvEXT(table, save_TextureParameterfvEXT);
|
||||
SET_TextureImage1DEXT(table, save_TextureImage1DEXT);
|
||||
SET_TextureImage2DEXT(table, save_TextureImage2DEXT);
|
||||
SET_TextureImage3DEXT(table, save_TextureImage3DEXT);
|
||||
SET_TextureSubImage1DEXT(table, save_TextureSubImage1DEXT);
|
||||
SET_TextureSubImage2DEXT(table, save_TextureSubImage2DEXT);
|
||||
SET_TextureSubImage3DEXT(table, save_TextureSubImage3DEXT);
|
||||
SET_CopyTextureImage1DEXT(table, save_CopyTextureImage1DEXT);
|
||||
SET_CopyTextureImage2DEXT(table, save_CopyTextureImage2DEXT);
|
||||
SET_CopyTextureSubImage1DEXT(table, save_CopyTextureSubImage1DEXT);
|
||||
SET_CopyTextureSubImage2DEXT(table, save_CopyTextureSubImage2DEXT);
|
||||
SET_CopyTextureSubImage3DEXT(table, save_CopyTextureSubImage3DEXT);
|
||||
SET_CompressedTextureSubImage2DEXT(table, save_CompressedTextureSubImage2DEXT);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1037,23 +1037,23 @@ const struct function common_desktop_functions_possible[] = {
|
|||
{ "glTextureParameterivEXT", 11, -1 },
|
||||
{ "glTextureParameterfEXT", 11, -1 },
|
||||
{ "glTextureParameterfvEXT", 11, -1 },
|
||||
//{ "glTextureImage1DEXT", 11, -1 },
|
||||
//{ "glTextureImage2DEXT", 11, -1 },
|
||||
//{ "glTextureSubImage1DEXT", 11, -1 },
|
||||
{ "glTextureImage1DEXT", 11, -1 },
|
||||
{ "glTextureImage2DEXT", 11, -1 },
|
||||
{ "glTextureSubImage1DEXT", 11, -1 },
|
||||
{ "glTextureSubImage2DEXT", 11, -1 },
|
||||
//{ "glCopyTextureImage1DEXT", 11, -1 },
|
||||
//{ "glCopyTextureImage2DEXT", 11, -1 },
|
||||
//{ "glCopyTextureSubImage1DEXT", 11, -1 },
|
||||
//{ "glCopyTextureSubImage2DEXT", 11, -1 },
|
||||
//{ "glGetTextureImageEXT", 11, -1 },
|
||||
{ "glCopyTextureImage1DEXT", 11, -1 },
|
||||
{ "glCopyTextureImage2DEXT", 11, -1 },
|
||||
{ "glCopyTextureSubImage1DEXT", 11, -1 },
|
||||
{ "glCopyTextureSubImage2DEXT", 11, -1 },
|
||||
{ "glGetTextureImageEXT", 11, -1 },
|
||||
{ "glGetTextureParameterfvEXT", 11, -1 },
|
||||
{ "glGetTextureParameterivEXT", 11, -1 },
|
||||
//{ "glGetTextureLevelParameterfvEXT", 11, -1 },
|
||||
//{ "glGetTextureLevelParameterivEXT", 11, -1 },
|
||||
/* GL_EXT_direct_state_access - GL 1.2 */
|
||||
//{ "glTextureImage3DEXT", 12, -1 },
|
||||
//{ "glTextureSubImage3DEXT", 12, -1 },
|
||||
//{ "glCopyTextureSubImage3DEXT", 12, -1 },
|
||||
{ "glTextureImage3DEXT", 12, -1 },
|
||||
{ "glTextureSubImage3DEXT", 12, -1 },
|
||||
{ "glCopyTextureSubImage3DEXT", 12, -1 },
|
||||
/* GL_EXT_direct_state_access - GL 1.2.1 */
|
||||
{ "glBindMultiTextureEXT", 12, -1 },
|
||||
//{ "glMultiTexCoordPointerEXT", 12, -1 },
|
||||
|
|
|
|||
|
|
@ -1524,6 +1524,25 @@ _mesa_GetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_GetTextureImageEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLenum format, GLenum type, GLvoid *pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
static const char *caller = "glGetTextureImageEXT";
|
||||
struct gl_texture_object *texObj =
|
||||
_mesa_lookup_or_create_texture(ctx, target, texture,
|
||||
false, true, caller);
|
||||
|
||||
if (!texObj) {
|
||||
return;
|
||||
}
|
||||
|
||||
_get_texture_image(ctx, texObj, target, level, format, type,
|
||||
INT_MAX, pixels, caller);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_GetTextureSubImage(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ _mesa_GetnTexImageARB( GLenum target, GLint level, GLenum format,
|
|||
extern void GLAPIENTRY
|
||||
_mesa_GetTextureImage(GLuint texture, GLint level, GLenum format,
|
||||
GLenum type, GLsizei bufSize, GLvoid *pixels);
|
||||
extern void GLAPIENTRY
|
||||
_mesa_GetTextureImageEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLenum format, GLenum type, GLvoid *pixels);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_GetTextureSubImage(GLuint texture, GLint level,
|
||||
|
|
|
|||
|
|
@ -3196,6 +3196,21 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
|
|||
border, format, type, 0, pixels);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint internalFormat, GLsizei width, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels )
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
"glTextureImage1DEXT");
|
||||
if (!texObj)
|
||||
return;
|
||||
teximage(ctx, GL_FALSE, 1, texObj, target, level, internalFormat,
|
||||
width, 1, 1, border, format, type, 0, pixels, false);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
||||
|
|
@ -3208,6 +3223,22 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
border, format, type, 0, pixels);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint internalFormat, GLsizei width, GLsizei height,
|
||||
GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels )
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
"glTextureImage2DEXT");
|
||||
if (!texObj)
|
||||
return;
|
||||
teximage(ctx, GL_FALSE, 2, texObj, target, level, internalFormat,
|
||||
width, height, 1, border, format, type, 0, pixels, false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called by the API or display list executor.
|
||||
|
|
@ -3224,6 +3255,23 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
|
|||
width, height, depth, border, format, type, 0, pixels);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint internalFormat, GLsizei width, GLsizei height,
|
||||
GLsizei depth, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels )
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
"glTextureImage3DEXT");
|
||||
if (!texObj)
|
||||
return;
|
||||
teximage(ctx, GL_FALSE, 3, texObj, target, level, internalFormat,
|
||||
width, height, depth, border, format, type, 0, pixels, false);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalFormat,
|
||||
|
|
@ -3698,6 +3746,19 @@ _mesa_TextureSubImage1D_no_error(GLuint texture, GLint level, GLint xoffset,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLsizei width,
|
||||
GLenum format, GLenum type,
|
||||
const GLvoid *pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
texturesubimage_error(ctx, 1, texture, target, level, xoffset, 0, 0, width, 1,
|
||||
1, format, type, pixels, "glTextureSubImage1DEXT",
|
||||
false);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureSubImage1D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLsizei width,
|
||||
|
|
@ -3763,6 +3824,17 @@ _mesa_TextureSubImage3D_no_error(GLuint texture, GLint level, GLint xoffset,
|
|||
pixels, "glTextureSubImage3D", false);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLsizei width, GLsizei height, GLsizei depth,
|
||||
GLenum format, GLenum type, const GLvoid *pixels)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
texturesubimage_error(ctx, 3, texture, target, level, xoffset, yoffset,
|
||||
zoffset, width, height, depth, format, type,
|
||||
pixels, "glTextureSubImage3DEXT", true);
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureSubImage3D(GLuint texture, GLint level,
|
||||
|
|
@ -4169,6 +4241,23 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureImage1DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalFormat,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLint border )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_texture_object* texObj =
|
||||
_mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
"glCopyTextureImage1DEXT");
|
||||
if (!texObj)
|
||||
return;
|
||||
copyteximage(ctx, 1, texObj, target, level, internalFormat, x, y, width, 1,
|
||||
border, false);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
|
|
@ -4180,6 +4269,24 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureImage2DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalFormat,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height,
|
||||
GLint border )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_texture_object* texObj =
|
||||
_mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
"glCopyTextureImage2DEXT");
|
||||
if (!texObj)
|
||||
return;
|
||||
copyteximage(ctx, 2, texObj, target, level, internalFormat, x, y, width, height,
|
||||
border, false);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTexImage1D_no_error(GLenum target, GLint level, GLenum internalFormat,
|
||||
GLint x, GLint y, GLsizei width, GLint border)
|
||||
|
|
@ -4305,6 +4412,31 @@ _mesa_CopyTextureSubImage1D(GLuint texture, GLint level,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint x, GLint y, GLsizei width)
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
const char *self = "glCopyTextureSubImage1DEXT";
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true,
|
||||
self);
|
||||
if (!texObj)
|
||||
return;
|
||||
|
||||
/* Check target (proxies not allowed). */
|
||||
if (!legal_texsubimage_target(ctx, 1, texObj->Target, true)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s)", self,
|
||||
_mesa_enum_to_string(texObj->Target));
|
||||
return;
|
||||
}
|
||||
|
||||
copy_texture_sub_image_err(ctx, 1, texObj, texObj->Target, level, xoffset, 0,
|
||||
0, x, y, width, 1, self);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage2D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
|
|
@ -4330,6 +4462,31 @@ _mesa_CopyTextureSubImage2D(GLuint texture, GLint level,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
const char *self = "glCopyTextureSubImage2DEXT";
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true, self);
|
||||
if (!texObj)
|
||||
return;
|
||||
|
||||
/* Check target (proxies not allowed). */
|
||||
if (!legal_texsubimage_target(ctx, 2, texObj->Target, true)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s)", self,
|
||||
_mesa_enum_to_string(texObj->Target));
|
||||
return;
|
||||
}
|
||||
|
||||
copy_texture_sub_image_err(ctx, 2, texObj, texObj->Target, level, xoffset,
|
||||
yoffset, 0, x, y, width, height, self);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage3D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
|
|
@ -4363,6 +4520,39 @@ _mesa_CopyTextureSubImage3D(GLuint texture, GLint level,
|
|||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
struct gl_texture_object* texObj;
|
||||
const char *self = "glCopyTextureSubImage3D";
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true, self);
|
||||
if (!texObj)
|
||||
return;
|
||||
|
||||
/* Check target (proxies not allowed). */
|
||||
if (!legal_texsubimage_target(ctx, 3, texObj->Target, true)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s)", self,
|
||||
_mesa_enum_to_string(texObj->Target));
|
||||
return;
|
||||
}
|
||||
|
||||
if (texObj->Target == GL_TEXTURE_CUBE_MAP) {
|
||||
/* Act like CopyTexSubImage2D */
|
||||
copy_texture_sub_image_err(ctx, 2, texObj,
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X + zoffset,
|
||||
level, xoffset, yoffset, 0, x, y, width, height,
|
||||
self);
|
||||
}
|
||||
else
|
||||
copy_texture_sub_image_err(ctx, 3, texObj, texObj->Target, level, xoffset,
|
||||
yoffset, zoffset, x, y, width, height, self);
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CopyTexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset,
|
||||
GLint x, GLint y, GLsizei width)
|
||||
|
|
|
|||
|
|
@ -261,18 +261,32 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalformat,
|
|||
GLsizei width, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureImage1DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLint internalformat, GLsizei width, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TexImage2D( GLenum target, GLint level, GLint internalformat,
|
||||
GLsizei width, GLsizei height, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureImage2DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLint internalformat, GLsizei width, GLsizei height,
|
||||
GLint border, GLenum format, GLenum type,
|
||||
const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TexImage3D( GLenum target, GLint level, GLint internalformat,
|
||||
GLsizei width, GLsizei height, GLsizei depth, GLint border,
|
||||
GLenum format, GLenum type, const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureImage3DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLint internalformat, GLsizei width, GLsizei height,
|
||||
GLsizei depth, GLint border, GLenum format,
|
||||
GLenum type, const GLvoid *pixels );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalformat,
|
||||
|
|
@ -350,6 +364,12 @@ _mesa_TextureSubImage1D(GLuint texture, GLint level, GLint xoffset,
|
|||
GLenum format, GLenum type,
|
||||
const GLvoid *pixels);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLsizei width,
|
||||
GLenum format, GLenum type,
|
||||
const GLvoid *pixels);
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLsizei width,
|
||||
|
|
@ -382,6 +402,12 @@ _mesa_TextureSubImage3D(GLuint texture, GLint level,
|
|||
GLenum format, GLenum type,
|
||||
const GLvoid *pixels);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureSubImage3DEXT(GLuint texture, 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 GLAPIENTRY
|
||||
_mesa_CopyTexImage1D(GLenum target, GLint level, GLenum internalformat,
|
||||
|
|
@ -393,6 +419,15 @@ _mesa_CopyTexImage2D( GLenum target, GLint level,
|
|||
GLenum internalformat, GLint x, GLint y,
|
||||
GLsizei width, GLsizei height, GLint border );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureImage1DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalformat, GLint x, GLint y,
|
||||
GLsizei width, GLint border);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureImage2DEXT( GLuint texture, GLenum target, GLint level,
|
||||
GLenum internalformat, GLint x, GLint y,
|
||||
GLsizei width, GLsizei height, GLint border );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTexImage1D_no_error(GLenum target, GLint level, GLenum internalformat,
|
||||
|
|
@ -425,18 +460,35 @@ extern void GLAPIENTRY
|
|||
_mesa_CopyTextureSubImage1D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint x, GLint y, GLsizei width);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage1DEXT(GLuint texture, GLenum target,
|
||||
GLint level, GLint xoffset, GLint x, GLint y,
|
||||
GLsizei width);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage2D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage3D(GLuint texture, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_CopyTexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset,
|
||||
GLint x, GLint y, GLsizei width );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue