summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/intel/intel_tex_image.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/intel/intel_tex_image.c')
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_image.c23
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