- free(intel_image->base.Base.ImageOffsets);
- intel_image->base.Base.ImageOffsets = malloc(mt->level[level].depth *
- sizeof(GLuint));
- }
-
- /* ImageOffsets[] is only used for swrast's fetch_texel_3d, so we can't
- * share code with the normal path.
- */
- for (i = 0; i < mt->level[level].depth; i++) {
- intel_miptree_get_image_offset(mt, level, face, i, &x, &y);
- intel_image->base.Base.ImageOffsets[i] = x + y * mt->region->pitch;
- }
-
- DBG("%s \n", __FUNCTION__);
-
- intel_image->base.Base.Data = intel_region_map(intel, mt->region);
- } else {
- assert(mt->level[level].depth == 1);
- intel_miptree_get_image_offset(mt, level, face, 0, &x, &y);
- intel_image->base.Base.ImageOffsets[0] = 0;
-
- DBG("%s: (%d,%d) -> (%d, %d)/%d\n",
- __FUNCTION__, face, level, x, y, mt->region->pitch * mt->cpp);
-
- intel_image->base.Base.Data = intel_region_map(intel, mt->region) +
- (x + y * mt->region->pitch) * mt->cpp;
- }
-
- intel_image->base.Base.RowStride = mt->region->pitch;
-}
-
-static void
-intel_tex_unmap_image_for_swrast(struct intel_context *intel,
- struct intel_texture_image *intel_image)
-{
- if (intel_image && intel_image->mt) {
- intel_region_unmap(intel, intel_image->mt->region);
- intel_image->base.Base.Data = NULL;
- }
-}
-
-void
-intel_tex_map_images(struct intel_context *intel,
- struct intel_texture_object *intelObj)
-{
- GLuint nr_faces = (intelObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- int i, face;
-
- DBG("%s\n", __FUNCTION__);
-
- for (i = intelObj->base.BaseLevel; i <= intelObj->_MaxLevel; i++) {
- for (face = 0; face < nr_faces; face++) {
- struct intel_texture_image *intel_image =
- intel_texture_image(intelObj->base.Image[face][i]);
-
- intel_tex_map_image_for_swrast(intel, intel_image);