[Mesa-dev] [PATCH 2/4] i965: Refactor tiled memcpy functions and move them into their own file
Chad Versace
chad.versace at intel.com
Mon Jan 5 14:38:28 PST 2015
On 01/03/2015 11:54 AM, Jason Ekstrand wrote:
> From: Sisinty Sasmita Patra <sisinty.patra at intel.com>
>
> This commit refactors the tiled_memcpy code in intel_tex_subimage.c and
> moves it into its own file intel_tiled_memcpy files. Also, xtile_copy and
> ytile_copy are renamed to linear_to_xtiled and linear_to_ytiled
> respectively. The *_faster functions are similarly renamed.
>
> There was also a bit of logic to select between the the libc provided
> memcpy function and our custom memcpy that does an RGBA -> BGRA swizzle.
> This was moved into an intel_get_memcpy function so that rgba8_copy can
> live (and be inlined) in intel_tiled_memcpy.c.
>
> v2: Jason Ekstrand <jason.ekstrand at intel.com>
> - Better commit message
> - Fix up the copyright on the intel_tiled_memcpy files
> - Various whitespace fixes
> - Moved a bunch of stuff that did not need to be exposed from
> intel_tiled_memcpy.h to intel_tiled_memcpy.c
> - Added proper documentation for intel_get_memcpy
> - Incorperated the ptrdiff_t tweaks from commit 225a09790
>
> Signed-off-by: Jason Ekstrand <jason.ekstrand at intel.com>
> ---
> src/mesa/drivers/dri/i965/Makefile.sources | 2 +
> src/mesa/drivers/dri/i965/intel_tex_subimage.c | 394 +---------------------
> src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 439 +++++++++++++++++++++++++
> src/mesa/drivers/dri/i965/intel_tiled_memcpy.h | 63 ++++
> 4 files changed, 506 insertions(+), 392 deletions(-)
> create mode 100644 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
> create mode 100644 src/mesa/drivers/dri/i965/intel_tiled_memcpy.h
> +/**
> + * Copy texture data from linear to X tile layout, faster.
> + *
> + * Same as \ref xtile_copy but faster, because it passes constant parameters
^^^^^^^^^^
Function name needs updating.
> + * for common cases, allowing the compiler to inline code optimized for those
> + * cases.
> + *
> + * \copydoc tile_copy_fn
> + */
> +static FLATTEN void
> +linear_to_xtiled_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
> + uint32_t y0, uint32_t y1,
> + char *dst, const char *src,
> + uint32_t src_pitch,
> + uint32_t swizzle_bit,
> + mem_copy_fn mem_copy)
> +/**
> + * Copy texture data from linear to Y tile layout, faster.
> + *
> + * Same as \ref ytile_copy but faster, because it passes constant parameters
^^^^^^^^^^
Again, function name needs updating.
> + * for common cases, allowing the compiler to inline code optimized for those
> + * cases.
> + *
> + * \copydoc tile_copy_fn
> + */
> +static FLATTEN void
> +linear_to_ytiled_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
> + uint32_t y0, uint32_t y1,
> + char *dst, const char *src,
> + uint32_t src_pitch,
> + uint32_t swizzle_bit,
> + mem_copy_fn mem_copy)
> diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h
> +/* Tile dimensions. Width and span are in bytes, height is in pixels (i.e.
> + * unitless). A "span" is the most number of bytes we can copy from linear
> + * to tiled without needing to calculate a new destination address.
> + */
> +static const uint32_t xtile_width = 512;
> +static const uint32_t xtile_height = 8;
> +static const uint32_t xtile_span = 64;
> +static const uint32_t ytile_width = 128;
> +static const uint32_t ytile_height = 32;
> +static const uint32_t ytile_span = 16;
These constants should be moved to .c file if possible. Are they in the
header for a reason I don't see?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 884 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150105/e02c497c/attachment.sig>
More information about the mesa-dev
mailing list