On Wed 19 Nov 2014, Matt Turner wrote:
On Wed, Nov 19, 2014 at 3:35 AM, Kristian Høgsberg <k...@bitplanet.net> wrote:
On Tue, Nov 18, 2014 at 9:02 PM, Chad Versace
<chad.vers...@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.vers...@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
i965 relies on it elsewhere. Look at the intel_miptree_map family of
functions.
Arithmetic on void* works on gcc and clang, and i965 has relied on that
gcc support for a long time.
We have in the past, and using gcc extensions are fine. But as you
say, it's probably not what he wanted anyway.
This patch makes the code a little bit cleaner by removing a weird cast
in a function call. And it relies on no new compiler features that i965
doesn't already required. Is anything wrong with that?
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev