There's no need to pass the target, level and texObj parameters since they can be easily obtained from the texImage pointer. Reviewed-by: Chad Versace <chad.versace@linux.intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>tags/mesa-8.0-rc1
@@ -3157,19 +3157,19 @@ copy_tex_sub_image(struct gl_context *ctx, | |||
*/ | |||
_mesa_meta_begin(ctx, MESA_META_PIXEL_STORE); | |||
if (target == GL_TEXTURE_1D) { | |||
ctx->Driver.TexSubImage1D(ctx, target, level, xoffset, | |||
width, format, type, buf, | |||
&ctx->Unpack, texObj, texImage); | |||
ctx->Driver.TexSubImage1D(ctx, texImage, | |||
xoffset, width, | |||
format, type, buf, &ctx->Unpack); | |||
} | |||
else if (target == GL_TEXTURE_3D) { | |||
ctx->Driver.TexSubImage3D(ctx, target, level, xoffset, yoffset, zoffset, | |||
width, height, 1, format, type, buf, | |||
&ctx->Unpack, texObj, texImage); | |||
ctx->Driver.TexSubImage3D(ctx, texImage, | |||
xoffset, yoffset, zoffset, width, height, 1, | |||
format, type, buf, &ctx->Unpack); | |||
} | |||
else { | |||
ctx->Driver.TexSubImage2D(ctx, target, level, xoffset, yoffset, | |||
width, height, format, type, buf, | |||
&ctx->Unpack, texObj, texImage); | |||
ctx->Driver.TexSubImage2D(ctx, texImage, | |||
xoffset, yoffset, width, height, | |||
format, type, buf, &ctx->Unpack); | |||
} | |||
_mesa_meta_end(ctx); | |||
@@ -42,13 +42,11 @@ | |||
static bool | |||
intel_blit_texsubimage(struct gl_context * ctx, | |||
GLenum target, GLint level, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, | |||
GLint width, GLint height, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
struct intel_context *intel = intel_context(ctx); | |||
struct intel_texture_image *intelImage = intel_texture_image(texImage); | |||
@@ -69,7 +67,7 @@ intel_blit_texsubimage(struct gl_context * ctx, | |||
if (intelImage->mt->region->tiling == I915_TILING_Y) | |||
return false; | |||
if (target != GL_TEXTURE_2D) | |||
if (texImage->TexObject->Target != GL_TEXTURE_2D) | |||
return false; | |||
/* On gen6, it's probably not worth swapping to the blit ring to do | |||
@@ -83,8 +81,8 @@ intel_blit_texsubimage(struct gl_context * ctx, | |||
DBG("BLT subimage %s target %s level %d offset %d,%d %dx%d\n", | |||
__FUNCTION__, | |||
_mesa_lookup_enum_by_nr(target), | |||
level, xoffset, yoffset, width, height); | |||
_mesa_lookup_enum_by_nr(texImage->TexObject->Target), | |||
texImage->Level, xoffset, yoffset, width, height); | |||
pixels = _mesa_validate_pbo_teximage(ctx, 2, width, height, 1, | |||
format, type, pixels, packing, | |||
@@ -112,7 +110,7 @@ intel_blit_texsubimage(struct gl_context * ctx, | |||
dstMap = temp_bo->virtual; | |||
dstRowStride = pitch; | |||
intel_miptree_get_image_offset(intelImage->mt, level, | |||
intel_miptree_get_image_offset(intelImage->mt, texImage->Level, | |||
intelImage->base.Base.Face, 0, | |||
&blit_x, &blit_y); | |||
blit_x += xoffset; | |||
@@ -155,26 +153,21 @@ intel_blit_texsubimage(struct gl_context * ctx, | |||
static void | |||
intelTexSubImage2D(struct gl_context * ctx, | |||
GLenum target, | |||
GLint level, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, | |||
GLsizei width, GLsizei height, | |||
GLenum format, GLenum type, | |||
const GLvoid * pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
if (!intel_blit_texsubimage(ctx, target, level, | |||
if (!intel_blit_texsubimage(ctx, texImage, | |||
xoffset, yoffset, | |||
width, height, | |||
format, type, pixels, packing, | |||
texObj, texImage)) { | |||
_mesa_store_texsubimage2d(ctx, target, level, | |||
format, type, pixels, packing)) { | |||
_mesa_store_texsubimage2d(ctx, texImage, | |||
xoffset, yoffset, | |||
width, height, | |||
format, type, pixels, | |||
packing, texObj, texImage); | |||
format, type, pixels, packing); | |||
} | |||
} | |||
@@ -547,13 +547,12 @@ nouveau_teximage_3d(struct gl_context *ctx, GLenum target, GLint level, | |||
} | |||
static void | |||
nouveau_texsubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint level, | |||
nouveau_texsubimage(struct gl_context *ctx, GLint dims, | |||
struct gl_texture_image *ti, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLint width, GLint height, GLint depth, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *t, | |||
struct gl_texture_image *ti) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
struct nouveau_surface *s = &to_nouveau_teximage(ti)->surface; | |||
struct nouveau_teximage *nti = to_nouveau_teximage(ti); | |||
@@ -577,50 +576,48 @@ nouveau_texsubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint lev | |||
_mesa_unmap_teximage_pbo(ctx, packing); | |||
} | |||
if (!to_nouveau_texture(t)->dirty) | |||
validate_teximage(ctx, t, level, xoffset, yoffset, zoffset, | |||
if (!to_nouveau_texture(ti->TexObject)->dirty) | |||
validate_teximage(ctx, ti->TexObject, ti->Level, | |||
xoffset, yoffset, zoffset, | |||
width, height, depth); | |||
} | |||
static void | |||
nouveau_texsubimage_3d(struct gl_context *ctx, GLenum target, GLint level, | |||
nouveau_texsubimage_3d(struct gl_context *ctx, | |||
struct gl_texture_image *ti, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLint width, GLint height, GLint depth, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *t, | |||
struct gl_texture_image *ti) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
nouveau_texsubimage(ctx, 3, target, level, xoffset, yoffset, zoffset, | |||
nouveau_texsubimage(ctx, 3, ti, xoffset, yoffset, zoffset, | |||
width, height, depth, format, type, pixels, | |||
packing, t, ti); | |||
packing); | |||
} | |||
static void | |||
nouveau_texsubimage_2d(struct gl_context *ctx, GLenum target, GLint level, | |||
nouveau_texsubimage_2d(struct gl_context *ctx, | |||
struct gl_texture_image *ti, | |||
GLint xoffset, GLint yoffset, | |||
GLint width, GLint height, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *t, | |||
struct gl_texture_image *ti) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
nouveau_texsubimage(ctx, 2, target, level, xoffset, yoffset, 0, | |||
nouveau_texsubimage(ctx, 2, ti, xoffset, yoffset, 0, | |||
width, height, 1, format, type, pixels, | |||
packing, t, ti); | |||
packing); | |||
} | |||
static void | |||
nouveau_texsubimage_1d(struct gl_context *ctx, GLenum target, GLint level, | |||
nouveau_texsubimage_1d(struct gl_context *ctx, | |||
struct gl_texture_image *ti, | |||
GLint xoffset, GLint width, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *t, | |||
struct gl_texture_image *ti) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
nouveau_texsubimage(ctx, 1, target, level, xoffset, 0, 0, | |||
nouveau_texsubimage(ctx, 1, ti, xoffset, 0, 0, | |||
width, 1, 1, format, type, pixels, | |||
packing, t, ti); | |||
packing); | |||
} | |||
static void |
@@ -245,41 +245,39 @@ struct dd_function_table { | |||
* with new texel data. | |||
* \sa dd_function_table::TexImage1D. | |||
*/ | |||
void (*TexSubImage1D)( struct gl_context *ctx, GLenum target, GLint level, | |||
GLint xoffset, GLsizei width, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage ); | |||
void (*TexSubImage1D)(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLsizei width, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing); | |||
/** | |||
* Called by glTexSubImage2D(). | |||
* | |||
* \sa dd_function_table::TexSubImage1D. | |||
*/ | |||
void (*TexSubImage2D)( struct gl_context *ctx, GLenum target, GLint level, | |||
GLint xoffset, GLint yoffset, | |||
GLsizei width, GLsizei height, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage ); | |||
void (*TexSubImage2D)(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, | |||
GLsizei width, GLsizei height, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing); | |||
/** | |||
* Called by glTexSubImage3D(). | |||
* | |||
* \sa dd_function_table::TexSubImage1D. | |||
*/ | |||
void (*TexSubImage3D)( struct gl_context *ctx, GLenum target, GLint level, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLsizei width, GLsizei height, GLint depth, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage ); | |||
void (*TexSubImage3D)(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLsizei width, GLsizei height, GLint depth, | |||
GLenum format, GLenum type, | |||
const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing); | |||
/** | |||
* Called by glGetTexImage(). |
@@ -2132,11 +2132,10 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, | |||
} | |||
/* The image space was allocated above so use glTexSubImage now */ | |||
ctx->Driver.TexSubImage2D(ctx, target, level + 1, | |||
ctx->Driver.TexSubImage2D(ctx, dstImage, | |||
0, 0, dstWidth, dstHeight, | |||
temp_base_format, temp_datatype, | |||
temp_dst, &ctx->DefaultPacking, | |||
texObj, dstImage); | |||
temp_dst, &ctx->DefaultPacking); | |||
/* swap src and dest pointers */ | |||
{ |
@@ -2681,23 +2681,20 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, | |||
switch (dims) { | |||
case 1: | |||
ctx->Driver.TexSubImage1D(ctx, target, level, | |||
ctx->Driver.TexSubImage1D(ctx, texImage, | |||
xoffset, width, | |||
format, type, pixels, | |||
&ctx->Unpack, texObj, texImage ); | |||
format, type, pixels, &ctx->Unpack); | |||
break; | |||
case 2: | |||
ctx->Driver.TexSubImage2D(ctx, target, level, | |||
ctx->Driver.TexSubImage2D(ctx, texImage, | |||
xoffset, yoffset, width, height, | |||
format, type, pixels, | |||
&ctx->Unpack, texObj, texImage ); | |||
format, type, pixels, &ctx->Unpack); | |||
break; | |||
case 3: | |||
ctx->Driver.TexSubImage3D(ctx, target, level, | |||
ctx->Driver.TexSubImage3D(ctx, texImage, | |||
xoffset, yoffset, zoffset, | |||
width, height, depth, | |||
format, type, pixels, | |||
&ctx->Unpack, texObj, texImage ); | |||
format, type, pixels, &ctx->Unpack); | |||
break; | |||
default: | |||
_mesa_problem(ctx, "unexpected dims in subteximage()"); |
@@ -4785,12 +4785,11 @@ _mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level, | |||
* This is the fallback for Driver.TexSubImage1D(). | |||
*/ | |||
void | |||
_mesa_store_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage1d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint width, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
store_texsubimage(ctx, texImage, | |||
xoffset, 0, 0, width, 1, 1, | |||
@@ -4803,13 +4802,12 @@ _mesa_store_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, | |||
* This is the fallback for Driver.TexSubImage2D(). | |||
*/ | |||
void | |||
_mesa_store_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage2d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, | |||
GLint width, GLint height, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
store_texsubimage(ctx, texImage, | |||
xoffset, yoffset, 0, width, height, 1, | |||
@@ -4821,13 +4819,12 @@ _mesa_store_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, | |||
* This is the fallback for Driver.TexSubImage3D(). | |||
*/ | |||
void | |||
_mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage3d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLint width, GLint height, GLint depth, | |||
GLenum format, GLenum type, const void *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage) | |||
const struct gl_pixelstore_attrib *packing) | |||
{ | |||
store_texsubimage(ctx, texImage, | |||
xoffset, yoffset, zoffset, width, height, depth, |
@@ -121,32 +121,29 @@ _mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level, | |||
extern void | |||
_mesa_store_texsubimage1d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage1d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint width, | |||
GLenum format, GLenum type, const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage); | |||
const struct gl_pixelstore_attrib *packing); | |||
extern void | |||
_mesa_store_texsubimage2d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage2d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, | |||
GLint width, GLint height, | |||
GLenum format, GLenum type, const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage); | |||
const struct gl_pixelstore_attrib *packing); | |||
extern void | |||
_mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, | |||
_mesa_store_texsubimage3d(struct gl_context *ctx, | |||
struct gl_texture_image *texImage, | |||
GLint xoffset, GLint yoffset, GLint zoffset, | |||
GLint width, GLint height, GLint depth, | |||
GLenum format, GLenum type, const GLvoid *pixels, | |||
const struct gl_pixelstore_attrib *packing, | |||
struct gl_texture_object *texObj, | |||
struct gl_texture_image *texImage); | |||
const struct gl_pixelstore_attrib *packing); | |||
extern void |