void GLAPIENTRY _mesa_InvalidateTexImage(GLuint texture, GLint level) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); invalidate_tex_image_error_check(ctx, texture, level, "glInvalidateTexImage"); /* We don't actually do anything for this yet. Just return after * validating the parameters and generating the required errors. */ return; }
void GLAPIENTRY _mesa_InvalidateTexImage(GLuint texture, GLint level) { GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) _mesa_debug(ctx, "glInvalidateTexImage(%d, %d)\n", texture, level); invalidate_tex_image_error_check(ctx, texture, level, "glInvalidateTexImage"); /* We don't actually do anything for this yet. Just return after * validating the parameters and generating the required errors. */ return; }
void GLAPIENTRY _mesa_InvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) { struct gl_texture_object *t; struct gl_texture_image *image; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); t = invalidate_tex_image_error_check(ctx, texture, level, "glInvalidateTexSubImage"); /* The GL_ARB_invalidate_subdata spec says: * * "...the specified subregion must be between -<b> and <dim>+<b> where * <dim> is the size of the dimension of the texture image, and <b> is * the size of the border of that texture image, otherwise * INVALID_VALUE is generated (border is not applied to dimensions that * don't exist in a given texture target)." */ image = t->Image[0][level]; if (image) { int xBorder; int yBorder; int zBorder; int imageWidth; int imageHeight; int imageDepth; /* The GL_ARB_invalidate_subdata spec says: * * "For texture targets that don't have certain dimensions, this * command treats those dimensions as having a size of 1. For * example, to invalidate a portion of a two-dimensional texture, * the application would use <zoffset> equal to zero and <depth> * equal to one." */ switch (t->Target) { case GL_TEXTURE_BUFFER: xBorder = 0; yBorder = 0; zBorder = 0; imageWidth = 1; imageHeight = 1; imageDepth = 1; break; case GL_TEXTURE_1D: xBorder = image->Border; yBorder = 0; zBorder = 0; imageWidth = image->Width; imageHeight = 1; imageDepth = 1; break; case GL_TEXTURE_1D_ARRAY: xBorder = image->Border; yBorder = 0; zBorder = 0; imageWidth = image->Width; imageHeight = image->Height; imageDepth = 1; break; case GL_TEXTURE_2D: case GL_TEXTURE_CUBE_MAP: case GL_TEXTURE_RECTANGLE: case GL_TEXTURE_2D_MULTISAMPLE: xBorder = image->Border; yBorder = image->Border; zBorder = 0; imageWidth = image->Width; imageHeight = image->Height; imageDepth = 1; break; case GL_TEXTURE_2D_ARRAY: case GL_TEXTURE_CUBE_MAP_ARRAY: xBorder = image->Border; yBorder = image->Border; zBorder = 0; imageWidth = image->Width; imageHeight = image->Height; imageDepth = image->Depth; break; case GL_TEXTURE_3D: xBorder = image->Border; yBorder = image->Border; zBorder = image->Border; imageWidth = image->Width; imageHeight = image->Height; imageDepth = image->Depth; break; default: assert(!"Should not get here."); xBorder = 0; yBorder = 0; zBorder = 0; imageWidth = 0; imageHeight = 0; imageDepth = 0; break; } if (xoffset < -xBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(xoffset)"); return; } if (xoffset + width > imageWidth + xBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(xoffset+width)"); return; } if (yoffset < -yBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(yoffset)"); return; } if (yoffset + height > imageHeight + yBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(yoffset+height)"); return; } if (zoffset < -zBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(zoffset)"); return; } if (zoffset + depth > imageDepth + zBorder) { _mesa_error(ctx, GL_INVALID_VALUE, "glInvalidateSubTexImage(zoffset+depth)"); return; } } /* We don't actually do anything for this yet. Just return after * validating the parameters and generating the required errors. */ return; }