|
|
@@ -3495,19 +3495,21 @@ copyteximage(struct gl_context *ctx, GLuint dims, |
|
|
|
_mesa_init_teximage_fields(ctx, texImage, width, height, 1, |
|
|
|
border, internalFormat, texFormat); |
|
|
|
|
|
|
|
/* Allocate texture memory (no pixel data yet) */ |
|
|
|
ctx->Driver.AllocTextureImageBuffer(ctx, texImage); |
|
|
|
if (width && height) { |
|
|
|
/* Allocate texture memory (no pixel data yet) */ |
|
|
|
ctx->Driver.AllocTextureImageBuffer(ctx, texImage); |
|
|
|
|
|
|
|
if (_mesa_clip_copytexsubimage(ctx, &dstX, &dstY, &srcX, &srcY, |
|
|
|
&width, &height)) { |
|
|
|
struct gl_renderbuffer *srcRb = |
|
|
|
get_copy_tex_image_source(ctx, texImage->TexFormat); |
|
|
|
if (_mesa_clip_copytexsubimage(ctx, &dstX, &dstY, &srcX, &srcY, |
|
|
|
&width, &height)) { |
|
|
|
struct gl_renderbuffer *srcRb = |
|
|
|
get_copy_tex_image_source(ctx, texImage->TexFormat); |
|
|
|
|
|
|
|
ctx->Driver.CopyTexSubImage(ctx, dims, texImage, dstX, dstY, dstZ, |
|
|
|
srcRb, srcX, srcY, width, height); |
|
|
|
} |
|
|
|
ctx->Driver.CopyTexSubImage(ctx, dims, texImage, dstX, dstY, dstZ, |
|
|
|
srcRb, srcX, srcY, width, height); |
|
|
|
} |
|
|
|
|
|
|
|
check_gen_mipmap(ctx, target, texObj, level); |
|
|
|
check_gen_mipmap(ctx, target, texObj, level); |
|
|
|
} |
|
|
|
|
|
|
|
_mesa_update_fbo_texture(ctx, texObj, face, level); |
|
|
|
|