[cairo] [PATCH 58/71] drm/intel: optimized loops and fixed warning
Enrico Weigelt, metux IT consult
enrico.weigelt at gr13.net
Mon Apr 17 16:57:37 UTC 2017
Signed-off-by: Enrico Weigelt, metux IT consult <enrico.weigelt at gr13.net>
---
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
More information about the cairo
mailing list