[Mesa-dev] [PATCH 2/2 v3] i965: Enhance tiled_memcpy to support all levels
gurketsky
gurketsky at googlemail.com
Fri Nov 8 02:02:42 PST 2013
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 <courtney at 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,
More information about the mesa-dev
mailing list