[PATCH xf86-video-ati] Use finer-grained pointer types in mem copying functions

Jochen Rollwagen joro-2013 at t-online.de
Fri Nov 25 10:00:02 UTC 2016


This commit modifies some pointer definitions in functions copying 
memory corresponding to those in memcpy.
That should enable a compiler to produce better code (though i haven't 
checked whether that's the case).
---
  src/radeon.h       |    2 +-
  src/radeon_accel.c |   10 +++++-----
  src/radeon_dri2.c  |   14 +++++++-------
  3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/radeon.h b/src/radeon.h
index ad7e69c..cbc7866 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -599,7 +599,7 @@ typedef struct {
  /* radeon_accel.c */
  extern Bool RADEONAccelInit(ScreenPtr pScreen);
  extern void RADEONEngineInit(ScrnInfoPtr pScrn);
-extern void  RADEONCopySwap(uint8_t *dst, uint8_t *src, unsigned int 
size, int swap);
+extern void  RADEONCopySwap(uint8_t * __restrict dst, const uint8_t * 
__restrict src, unsigned int size, int swap);
  extern void RADEONInit3DEngine(ScrnInfoPtr pScrn);
  extern int radeon_cs_space_remaining(ScrnInfoPtr pScrn);

diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index af2fc99..8c748f2 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -128,13 +128,13 @@ int radeon_cs_space_remaining(ScrnInfoPtr pScrn)
      return (info->cs->ndw - info->cs->cdw);
  }

-void RADEONCopySwap(uint8_t *dst, uint8_t *src, unsigned int size, int 
swap)
+void RADEONCopySwap(uint8_t * __restrict dst, const uint8_t * 
__restrict src, unsigned int size, int swap)
  {
      switch(swap) {
      case RADEON_HOST_DATA_SWAP_32BIT:
          {
-           unsigned int *d = (unsigned int *)dst;
-           unsigned int *s = (unsigned int *)src;
+           unsigned int * __restrict d = (unsigned int *)dst;
+           unsigned int * __restrict s = (unsigned int *)src;
             unsigned int nwords = size >> 2;

             for (; nwords > 0; --nwords, ++d, ++s)
@@ -148,8 +148,8 @@ void RADEONCopySwap(uint8_t *dst, uint8_t *src, 
unsigned int size, int swap)
          }
      case RADEON_HOST_DATA_SWAP_16BIT:
          {
-           unsigned short *d = (unsigned short *)dst;
-           unsigned short *s = (unsigned short *)src;
+           unsigned short * __restrict d = (unsigned short *)dst;
+           unsigned short * __restrict s = (unsigned short *)src;
             unsigned int nwords = size >> 1;

             for (; nwords > 0; --nwords, ++d, ++s)
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 860ff29..0ff42e0 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -339,14 +339,14 @@ static void
  radeon_dri2_copy_region2(ScreenPtr pScreen,
                          DrawablePtr drawable,
                          RegionPtr region,
-                        BufferPtr dest_buffer,
-                        BufferPtr src_buffer)
+                        BufferPtr __restrict dest_buffer,
+                        const BufferPtr __restrict src_buffer)
  {
-    struct dri2_buffer_priv *src_private = src_buffer->driverPrivate;
-    struct dri2_buffer_priv *dst_private = dest_buffer->driverPrivate;
+    struct dri2_buffer_priv * __restrict src_private = 
src_buffer->driverPrivate;
+    struct dri2_buffer_priv * __restrict dst_private = 
dest_buffer->driverPrivate;
      ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-    DrawablePtr src_drawable;
-    DrawablePtr dst_drawable;
+    DrawablePtr __restrict src_drawable;
+    DrawablePtr __restrict dst_drawable;
      RegionPtr copy_clip;
      GCPtr gc;
      RADEONInfoPtr info = RADEONPTR(pScrn);
@@ -435,7 +435,7 @@ radeon_dri2_copy_region2(ScreenPtr pScreen,

  void
  radeon_dri2_copy_region(DrawablePtr pDraw, RegionPtr pRegion,
-                        DRI2BufferPtr pDstBuffer, DRI2BufferPtr pSrcBuffer)
+                        DRI2BufferPtr __restrict pDstBuffer, 
DRI2BufferPtr __restrict pSrcBuffer)
  {
      return radeon_dri2_copy_region2(pDraw->pScreen, pDraw, pRegion,
                                      pDstBuffer, pSrcBuffer);
-- 
1.7.9.5



More information about the amd-gfx mailing list