On 07.11.2013 23:01, Courtney Goeltzenleuchter wrote: > Support all levels of a supported texture format. > > Using 1024x1024, RGBA 8888 source, mipmap > <<THIS PATCH>> > internal-format Before (MB/sec) XRGB (MB/sec) mipmap (MB/sec) > GL_RGBA 628.15 627.15 615.90 > GL_RGB 265.95 456.35 611.53 > 512x512 > GL_RGBA 600.23 597.00 619.95 > GL_RGB 255.50 440.62 611.28 > 256x256 > GL_RGBA 489.08 487.80 587.42 > GL_RGB 229.03 376.63 585.00 > > Test shows similar pattern for 512x512 and 256x256. > > Benchmark has been sent to mesa-dev list: teximage_enh > > Courtney Goeltzenleuchter (2): > i965: add XRGB to tiled_memcpy > i965: Enhance tiled_memcpy to support all levels > > src/mesa/drivers/dri/i965/intel_tex_subimage.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > -- > 1.8.1.2 > > 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)) { This change is not really necessary. If it needs to be fixed, it should be done correctly in patch 1/2.
> 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, _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev