i965/tex: Prepare image update for isl based miptrees

Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
Topi Pohjolainen
2017-04-30 12:55:46 +03:00
parent bb9c4113dc
commit de158c1e43
+16 -3
View File
@@ -56,11 +56,24 @@ intel_miptree_create_for_teximage(struct brw_context *brw,
{
GLuint lastLevel;
int width, height, depth;
unsigned old_width = 0, old_height = 0, old_depth = 0;
const struct intel_mipmap_tree *old_mt = intelObj->mt;
const unsigned level = intelImage->base.Base.Level;
intel_get_image_dims(&intelImage->base.Base, &width, &height, &depth);
if (old_mt && old_mt->surf.size > 0) {
old_width = old_mt->surf.logical_level0_px.width;
old_height = old_mt->surf.logical_level0_px.height;
old_depth = old_mt->surf.dim == ISL_SURF_DIM_3D ?
old_mt->surf.logical_level0_px.depth :
old_mt->surf.logical_level0_px.array_len;
} else if (old_mt) {
old_width = old_mt->logical_width0;
old_height = old_mt->logical_height0;
old_depth = old_mt->logical_depth0;
}
DBG("%s\n", __func__);
/* Figure out image dimensions at start level. */
@@ -72,19 +85,19 @@ intel_miptree_create_for_teximage(struct brw_context *brw,
assert(level == 0);
break;
case GL_TEXTURE_3D:
depth = old_mt ? get_base_dim(old_mt->logical_depth0, depth, level) :
depth = old_mt ? get_base_dim(old_depth, depth, level) :
depth << level;
/* Fall through */
case GL_TEXTURE_2D:
case GL_TEXTURE_2D_ARRAY:
case GL_TEXTURE_CUBE_MAP:
case GL_TEXTURE_CUBE_MAP_ARRAY:
height = old_mt ? get_base_dim(old_mt->logical_height0, height, level) :
height = old_mt ? get_base_dim(old_height, height, level) :
height << level;
/* Fall through */
case GL_TEXTURE_1D:
case GL_TEXTURE_1D_ARRAY:
width = old_mt ? get_base_dim(old_mt->logical_width0, width, level) :
width = old_mt ? get_base_dim(old_width, width, level) :
width << level;
break;
default: