diff options
Diffstat (limited to 'src/mesa/drivers/dri/intel/intel_tex_image.c')
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_tex_image.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index abd75c51d2..c1ed822242 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -286,7 +286,11 @@ intel_set_texture_image_region(struct gl_context *ctx, struct intel_region *region, GLenum target, GLenum internalFormat, - gl_format format) + gl_format format, + GLuint width, + GLuint height, + GLuint offset_x, + GLuint offset_y) { struct intel_context *intel = intel_context(ctx); struct intel_texture_image *intel_image = intel_texture_image(image); @@ -294,14 +298,16 @@ intel_set_texture_image_region(struct gl_context *ctx, struct intel_texture_object *intel_texobj = intel_texture_object(texobj); _mesa_init_teximage_fields(&intel->ctx, image, - region->width, region->height, 1, + width, height, 1, 0, internalFormat, format); ctx->Driver.FreeTextureImageBuffer(ctx, image); - intel_image->mt = intel_miptree_create_for_region(intel, target, + intel_image->mt = intel_miptree_create_for_offset(intel, target, image->TexFormat, - region); + region, + width, height, + offset_x, offset_y); if (intel_image->mt == NULL) return; @@ -360,7 +366,10 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, _mesa_lock_texture(&intel->ctx, texObj); texImage = _mesa_get_tex_image(ctx, texObj, target, level); intel_set_texture_image_region(ctx, texImage, rb->mt->region, target, - internalFormat, texFormat); + internalFormat, texFormat, + rb->mt->region->width, + rb->mt->region->height, + 0, 0); _mesa_unlock_texture(&intel->ctx, texObj); } @@ -391,7 +400,9 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target, return; intel_set_texture_image_region(ctx, texImage, image->region, - target, image->internal_format, image->format); + target, image->internal_format, image->format, + image->width, image->height, + image->offset_x, image->offset_y); } #endif |