Support all levels of a supported texture format. Signed-off-by: Courtney Goeltzenleuchter <court...@lunarg.com> --- src/mesa/drivers/dri/i965/intel_tex_subimage.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c b/src/mesa/drivers/dri/i965/intel_tex_subimage.c index b1826fa..b32af3d 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c @@ -543,7 +543,7 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, uint32_t cpp; mem_copy_fn mem_copy = NULL; - /* This fastpath is restricted to specific texture types: level 0 of + /* This fastpath is restricted to specific texture types: * a 2D BGRA, RGBA, L8 or A8 texture. It could be generalized to support * more types. * @@ -555,7 +555,6 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, if (!brw->has_llc || type != GL_UNSIGNED_BYTE || texImage->TexObject->Target != GL_TEXTURE_2D || - texImage->Level != 0 || pixels == NULL || _mesa_is_bufferobj(packing->BufferObj) || packing->Alignment > 4 || @@ -572,7 +571,7 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, cpp = 1; mem_copy = memcpy; } else if ((texImage->TexFormat == MESA_FORMAT_ARGB8888) - || (texImage->TexFormat == MESA_FORMAT_XRGB8888)) { + || (texImage->TexFormat == MESA_FORMAT_XRGB8888)) { cpp = 4; if (format == GL_BGRA) { mem_copy = memcpy; @@ -631,6 +630,11 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, packing->Alignment, packing->RowLength, packing->SkipPixels, packing->SkipRows, for_glTexImage); + /* Adjust x and y offset based on miplevel + */ + xoffset += image->mt->level[texImage->Level].level_x; + yoffset += image->mt->level[texImage->Level].level_y; + linear_to_tiled( xoffset * cpp, (xoffset + width) * cpp, yoffset, yoffset + height, -- 1.8.1.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev