[Mesa-dev] [PATCH 1/4] i965: Remove spurious casts in copy_image_with_memcpy()
Kristian Høgsberg
krh at bitplanet.net
Wed Nov 19 03:35:54 PST 2014
On Tue, Nov 18, 2014 at 9:02 PM, Chad Versace
<chad.versace at linux.intel.com> wrote:
> If a pointer points to raw, untyped memory and is never dereferenced,
> then declare it as 'void*' instead of casting it to 'void*'.
>
> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
> ---
> src/mesa/drivers/dri/i965/intel_copy_image.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
> index 341220c..cb44474 100644
> --- a/src/mesa/drivers/dri/i965/intel_copy_image.c
> +++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
> @@ -144,7 +144,7 @@ copy_image_with_memcpy(struct brw_context *brw,
> int src_width, int src_height)
> {
> bool same_slice;
> - uint8_t *mapped, *src_mapped, *dst_mapped;
> + void *mapped, *src_mapped, *dst_mapped;
Making these void * means that this code below:
src_mapped = mapped + ((src_y - map_y1) / src_bh) * src_stride +
((src_x - map_x1) / src_bw) * cpp;
(same for dst_mapped) becomes arithmetic on void pointers. gcc
supports that and treats it as uint8_t pointer arithmetic [1], but I'm
not aware of any official C standard that allows it. I don't think we
rely on that elsewhere and I don't think this patch improves
readability, portability or "pointer safety" of the code in question.
If you wanted to avoid void * arithmetic and casting to uint8_t, you'd
have to cast to an integer (uintptr_t) do the math there, then cast
back, but that's way more likely to hit a pointer size or 32/64 bit
issue.
Kristian
[1] http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Pointer-Arith.html
> int src_stride, dst_stride, i, cpp;
> int map_x1, map_y1, map_x2, map_y2;
> GLuint src_bw, src_bh;
> @@ -176,7 +176,7 @@ copy_image_with_memcpy(struct brw_context *brw,
> intel_miptree_map(brw, src_mt, src_level, src_z,
> map_x1, map_y1, map_x2 - map_x1, map_y2 - map_y1,
> GL_MAP_READ_BIT | GL_MAP_WRITE_BIT,
> - (void **)&mapped, &src_stride);
> + &mapped, &src_stride);
>
> dst_stride = src_stride;
>
> @@ -188,10 +188,10 @@ copy_image_with_memcpy(struct brw_context *brw,
> } else {
> intel_miptree_map(brw, src_mt, src_level, src_z,
> src_x, src_y, src_width, src_height,
> - GL_MAP_READ_BIT, (void **)&src_mapped, &src_stride);
> + GL_MAP_READ_BIT, &src_mapped, &src_stride);
> intel_miptree_map(brw, dst_mt, dst_level, dst_z,
> dst_x, dst_y, src_width, src_height,
> - GL_MAP_WRITE_BIT, (void **)&dst_mapped, &dst_stride);
> + GL_MAP_WRITE_BIT, &dst_mapped, &dst_stride);
> }
>
> src_width /= (int)src_bw;
> --
> 2.1.0-rc0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list