[PATCH 58/71] drm/intel: optimized loops and fixed warning

"Enrico Weigelt, metux IT consult" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]>
---
 src/drm/cairo-drm-intel-debug.c | 211 +++++++++++++++++++++-------------------
 1 file changed, 113 insertions(+), 98 deletions(-)

diff --git a/src/drm/cairo-drm-intel-debug.c b/src/drm/cairo-drm-intel-debug.c
index bfe513667..580fab98a 100644
--- a/src/drm/cairo-drm-intel-debug.c
+++ b/src/drm/cairo-drm-intel-debug.c
@@ -789,52 +789,59 @@ debug_map_state (struct debug_stream *stream,
 		 const char *name,
 		 uint32_t len)
 {
+    // the buffer must consist of 2+n*3 dword's
+    assert (((len - 2) % 3) == 0);
+
     uint32_t *ptr = (uint32_t *)(stream->ptr + stream->offset);
-    uint32_t j = 0;
+    uint32_t *end = (uint32_t *)(ptr + len*sizeof(uint32_t));
 
     fprintf (stderr, "%04x:  ", stream->offset);
     fprintf (stderr, "%s (%d dwords):\n", name, len);
-    fprintf (stderr, "\t0x%08x\n",  ptr[j++]);
+    fprintf (stderr, "\t0x%08x\n",  *ptr);
+    ptr+=sizeof(uint32_t);
 
     {
-	fprintf (stderr, "\t0x%08x\n",  ptr[j]);
-	BITS (ptr[j], 15, 0,   "map mask");
-	j++;
+	uint32_t i = *ptr;
+	fprintf (stderr, "\t0x%08x\n", i);
+	BITS (i, 15, 0,   "map mask");
+	ptr+=sizeof(uint32_t);
     }
 
-    while (j < len) {
+    while (ptr < end) {
 	{
-	    fprintf (stderr, "\t  TMn.0: 0x%08x\n", ptr[j]);
-	    fprintf (stderr, "\t map address: 0x%08x\n", (ptr[j] & ~0x3));
-	    FLAG (ptr[j], 1, "vertical line stride");
-	    FLAG (ptr[j], 0, "vertical line stride offset");
-	    j++;
+	    uint32_t i = *ptr;
+	    fprintf (stderr, "\t  TMn.0: 0x%08x\n", i);
+	    fprintf (stderr, "\t map address: 0x%08x\n", (i & ~0x3));
+	    FLAG (i, 1, "vertical line stride");
+	    FLAG (i, 0, "vertical line stride offset");
+	    ptr+=sizeof(uint32_t);
 	}
 
 	{
-	    fprintf (stderr, "\t  TMn.1: 0x%08x\n", ptr[j]);
-	    BITS (ptr[j], 31, 21, "height");
-	    BITS (ptr[j], 20, 10, "width");
-	    BITS (ptr[j], 9, 7, "surface format");
-	    BITS (ptr[j], 6, 3, "texel format");
-	    FLAG (ptr[j], 2, "use fence regs");
-	    FLAG (ptr[j], 1, "tiled surface");
-	    FLAG (ptr[j], 0, "tile walk ymajor");
-	    j++;
+	    uint32_t i = *ptr;
+	    fprintf (stderr, "\t  TMn.1: 0x%08x\n", i);
+	    BITS (i, 31, 21, "height");
+	    BITS (i, 20, 10, "width");
+	    BITS (i, 9, 7, "surface format");
+	    BITS (i, 6, 3, "texel format");
+	    FLAG (i, 2, "use fence regs");
+	    FLAG (i, 1, "tiled surface");
+	    FLAG (i, 0, "tile walk ymajor");
+	    ptr+=sizeof(uint32_t);
 	}
 	{
-	    fprintf (stderr, "\t  TMn.2: 0x%08x\n", ptr[j]);
-	    BITS (ptr[j], 31, 21, "dword pitch");
-	    BITS (ptr[j], 20, 15, "cube face enables");
-	    BITS (ptr[j], 14, 9, "max lod");
-	    FLAG (ptr[j], 8,     "mip layout right");
-	    BITS (ptr[j], 7, 0, "depth");
-	    j++;
+	    uint32_t i = *ptr;
+	    fprintf (stderr, "\t  TMn.2: 0x%08x\n", i);
+	    BITS (i, 31, 21, "dword pitch");
+	    BITS (i, 20, 15, "cube face enables");
+	    BITS (i, 14, 9, "max lod");
+	    FLAG (i, 8,     "mip layout right");
+	    BITS (i, 7, 0, "depth");
+	    ptr+=sizeof(uint32_t);
 	}
     }
 
     stream->offset += len * sizeof(uint32_t);
-    assert(j == len);
     return TRUE;
 }
 
@@ -844,59 +851,65 @@ debug_sampler_state (struct debug_stream *stream,
 		     uint32_t len)
 {
     uint32_t *ptr = (uint32_t *)(stream->ptr + stream->offset);
-    uint32_t j = 0;
+    uint32_t *end = (uint32_t *)(ptr + len*sizeof(uint32_t));
+
+    // the buffer must consist of 2+n*3 dword's
+    assert (((len - 2) % 3) == 0);
 
     fprintf (stderr, "%04x:  ", stream->offset);
     fprintf (stderr, "%s (%d dwords):\n", name, len);
-    fprintf (stderr, "\t0x%08x\n",  ptr[j++]);
+    fprintf (stderr, "\t0x%08x\n",  *ptr);
+    ptr += sizeof(uint32_t);
 
     {
-	fprintf (stderr, "\t0x%08x\n",  ptr[j]);
-	BITS (ptr[j], 15, 0,   "sampler mask");
-	j++;
+	uint32_t i = *ptr;
+	fprintf (stderr, "\t0x%08x\n", i);
+	BITS (i, 15, 0,   "sampler mask");
+	ptr += sizeof(uint32_t);
     }
 
-    while (j < len) {
+    while (ptr < end) {
 	{
-	    fprintf (stderr, "\t  TSn.0: 0x%08x\n", ptr[j]);
-	    FLAG (ptr[j], 31, "reverse gamma");
-	    FLAG (ptr[j], 30, "planar to packed");
-	    FLAG (ptr[j], 29, "yuv->rgb");
-	    BITS (ptr[j], 28, 27, "chromakey index");
-	    BITS (ptr[j], 26, 22, "base mip level");
-	    BITS (ptr[j], 21, 20, "mip mode filter");
-	    BITS (ptr[j], 19, 17, "mag mode filter");
-	    BITS (ptr[j], 16, 14, "min mode filter");
-	    BITS (ptr[j], 13, 5,  "lod bias (s4.4)");
-	    FLAG (ptr[j], 4,      "shadow enable");
-	    FLAG (ptr[j], 3,      "max-aniso-4");
-	    BITS (ptr[j], 2, 0,   "shadow func");
-	    j++;
+	    uint32_t i = *ptr;
+	    fprintf (stderr, "\t  TSn.0: 0x%08x\n", i);
+	    FLAG (i, 31, "reverse gamma");
+	    FLAG (i, 30, "planar to packed");
+	    FLAG (i, 29, "yuv->rgb");
+	    BITS (i, 28, 27, "chromakey index");
+	    BITS (i, 26, 22, "base mip level");
+	    BITS (i, 21, 20, "mip mode filter");
+	    BITS (i, 19, 17, "mag mode filter");
+	    BITS (i, 16, 14, "min mode filter");
+	    BITS (i, 13, 5,  "lod bias (s4.4)");
+	    FLAG (i, 4,      "shadow enable");
+	    FLAG (i, 3,      "max-aniso-4");
+	    BITS (i, 2, 0,   "shadow func");
+	    ptr += sizeof(uint32_t);
 	}
 
 	{
-	    fprintf (stderr, "\t  TSn.1: 0x%08x\n", ptr[j]);
-	    BITS (ptr[j], 31, 24, "min lod");
-	    MBZ( ptr[j], 23, 18 );
-	    FLAG (ptr[j], 17,     "kill pixel enable");
-	    FLAG (ptr[j], 16,     "keyed tex filter mode");
-	    FLAG (ptr[j], 15,     "chromakey enable");
-	    BITS (ptr[j], 14, 12, "tcx wrap mode");
-	    BITS (ptr[j], 11, 9,  "tcy wrap mode");
-	    BITS (ptr[j], 8,  6,  "tcz wrap mode");
-	    FLAG (ptr[j], 5,      "normalized coords");
-	    BITS (ptr[j], 4,  1,  "map (surface) index");
-	    FLAG (ptr[j], 0,      "EAST deinterlacer enable");
-	    j++;
+	    uint32_t i = *ptr;
+	    fprintf (stderr, "\t  TSn.1: 0x%08x\n", i);
+	    BITS (i, 31, 24, "min lod");
+	    MBZ( i, 23, 18 );
+	    FLAG (i, 17,     "kill pixel enable");
+	    FLAG (i, 16,     "keyed tex filter mode");
+	    FLAG (i, 15,     "chromakey enable");
+	    BITS (i, 14, 12, "tcx wrap mode");
+	    BITS (i, 11, 9,  "tcy wrap mode");
+	    BITS (i, 8,  6,  "tcz wrap mode");
+	    FLAG (i, 5,      "normalized coords");
+	    BITS (i, 4,  1,  "map (surface) index");
+	    FLAG (i, 0,      "EAST deinterlacer enable");
+	    ptr += sizeof(uint32_t);
 	}
 	{
-	    fprintf (stderr, "\t  TSn.2: 0x%08x  (default color)\n", ptr[j]);
-	    j++;
+	    fprintf (stderr, "\t  TSn.2: 0x%08x  (default color)\n", *ptr);
+	    ptr += sizeof(uint32_t);
 	}
     }
 
     stream->offset += len * sizeof(uint32_t);
-    assert(j == len);
     return TRUE;
 }
 
@@ -906,34 +919,35 @@ debug_dest_vars (struct debug_stream *stream,
 		 uint32_t len)
 {
     uint32_t *ptr = (uint32_t *)(stream->ptr + stream->offset);
-    uint32_t j = 0;
+
+    // the buffer must consist of 2 dword's
+    assert (len==2);
 
     fprintf (stderr, "%04x:  ", stream->offset);
     fprintf (stderr, "%s (%d dwords):\n", name, len);
-    fprintf (stderr, "\t0x%08x\n",  ptr[j++]);
+    fprintf (stderr, "\t0x%08x\n",  ptr[0]);
 
     {
-	fprintf (stderr, "\t0x%08x\n",  ptr[j]);
-	FLAG (ptr[j], 31,     "early classic ztest");
-	FLAG (ptr[j], 30,     "opengl tex default color");
-	FLAG (ptr[j], 29,     "bypass iz");
-	FLAG (ptr[j], 28,     "lod preclamp");
-	BITS (ptr[j], 27, 26, "dither pattern");
-	FLAG (ptr[j], 25,     "linear gamma blend");
-	FLAG (ptr[j], 24,     "debug dither");
-	BITS (ptr[j], 23, 20, "dstorg x");
-	BITS (ptr[j], 19, 16, "dstorg y");
-	MBZ (ptr[j], 15, 15 );
-	BITS (ptr[j], 14, 12, "422 write select");
-	BITS (ptr[j], 11, 8,  "cbuf format");
-	BITS (ptr[j], 3, 2,   "zbuf format");
-	FLAG (ptr[j], 1,      "vert line stride");
-	FLAG (ptr[j], 1,      "vert line stride offset");
-	j++;
+	uint32_t i = ptr[1];
+	fprintf (stderr, "\t0x%08x\n", i);
+	FLAG (i, 31,     "early classic ztest");
+	FLAG (i, 30,     "opengl tex default color");
+	FLAG (i, 29,     "bypass iz");
+	FLAG (i, 28,     "lod preclamp");
+	BITS (i, 27, 26, "dither pattern");
+	FLAG (i, 25,     "linear gamma blend");
+	FLAG (i, 24,     "debug dither");
+	BITS (i, 23, 20, "dstorg x");
+	BITS (i, 19, 16, "dstorg y");
+	MBZ  (i, 15, 15);
+	BITS (i, 14, 12, "422 write select");
+	BITS (i, 11, 8,  "cbuf format");
+	BITS (i, 3, 2,   "zbuf format");
+	FLAG (i, 1,      "vert line stride");
+	FLAG (i, 1,      "vert line stride offset");
     }
 
     stream->offset += len * sizeof(uint32_t);
-    assert(j == len);
     return TRUE;
 }
 
@@ -942,29 +956,30 @@ static cairo_bool_t debug_buf_info( struct debug_stream *stream,
 				    uint32_t len )
 {
     uint32_t *ptr = (uint32_t *)(stream->ptr + stream->offset);
-    uint32_t j = 0;
+
+    // the buffer must consist of 3 dword's
+    assert (len == 3);
 
     fprintf (stderr, "%04x:  ", stream->offset);
     fprintf (stderr, "%s (%d dwords):\n", name, len);
-    fprintf (stderr, "\t0x%08x\n",  ptr[j++]);
+    fprintf (stderr, "\t0x%08x\n",  ptr[0]);
 
     {
-	fprintf (stderr, "\t0x%08x\n",  ptr[j]);
-	BITS (ptr[j], 28, 28, "aux buffer id");
-	BITS (ptr[j], 27, 24, "buffer id (7=depth, 3=back)");
-	FLAG (ptr[j], 23,     "use fence regs");
-	FLAG (ptr[j], 22,     "tiled surface");
-	FLAG (ptr[j], 21,     "tile walk ymajor");
-	MBZ (ptr[j], 20, 14);
-	BITS (ptr[j], 13, 2,  "dword pitch");
-	MBZ (ptr[j], 2,  0);
-	j++;
+	uint32_t i = ptr[1];
+	fprintf (stderr, "\t0x%08x\n",  i);
+	BITS (i, 28, 28, "aux buffer id");
+	BITS (i, 27, 24, "buffer id (7=depth, 3=back)");
+	FLAG (i, 23,     "use fence regs");
+	FLAG (i, 22,     "tiled surface");
+	FLAG (i, 21,     "tile walk ymajor");
+	MBZ  (i, 20, 14);
+	BITS (i, 13, 2,  "dword pitch");
+	MBZ  (i, 2,  0);
     }
 
-    fprintf (stderr, "\t0x%08x -- buffer base address\n",  ptr[j++]);
+    fprintf (stderr, "\t0x%08x -- buffer base address\n",  ptr[2]);
 
     stream->offset += len * sizeof(uint32_t);
-    assert(j == len);
     return TRUE;
 }
 
-- 
2.11.0.rc0.7.gbe5a750

-- 
cairo mailing list
[email protected]
https://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.