Cell: use new ASSERT macro instead of standard assert
authorBrian <brian.paul@tungstengraphics.com>
Fri, 11 Jan 2008 00:14:06 +0000 (17:14 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 11 Jan 2008 00:14:06 +0000 (17:14 -0700)
The later doesn't seem to work properly in SPU code.

src/mesa/pipe/cell/spu/main.c
src/mesa/pipe/cell/spu/main.h
src/mesa/pipe/cell/spu/tri.c

index 6dbd93f5305bc0a3d62bcdfe5fd606315bcd8010..5ad15bc639b4f9f0ab1fc929e19a2dad16f91394 100644 (file)
@@ -30,7 +30,6 @@
 
 
 #include <stdio.h>
-#include <assert.h>
 #include <libmisc.h>
 #include <spu_mfcio.h>
 
@@ -80,8 +79,8 @@ get_tile(const struct framebuffer *fb, uint tx, uint ty, uint *tile,
 
    src += offset * bytesPerTile;
 
-   assert(tx < fb->width_tiles);
-   assert(ty < fb->height_tiles);
+   ASSERT(tx < fb->width_tiles);
+   ASSERT(ty < fb->height_tiles);
    ASSERT_ALIGN16(tile);
    /*
    printf("get_tile:  dest: %p  src: 0x%x  size: %d\n",
@@ -106,8 +105,8 @@ put_tile(const struct framebuffer *fb, uint tx, uint ty, const uint *tile,
 
    dst += offset * bytesPerTile;
 
-   assert(tx < fb->width_tiles);
-   assert(ty < fb->height_tiles);
+   ASSERT(tx < fb->width_tiles);
+   ASSERT(ty < fb->height_tiles);
    ASSERT_ALIGN16(tile);
    /*
    printf("put_tile:  src: %p  dst: 0x%x  size: %d\n",
@@ -315,8 +314,8 @@ render(const struct cell_command_render *render)
       const uint tx = txmin + i % box_width_tiles;
       const uint ty = tymin + i / box_width_tiles;
 
-      assert(tx < fb.width_tiles);
-      assert(ty < fb.height_tiles);
+      ASSERT(tx < fb.width_tiles);
+      ASSERT(ty < fb.height_tiles);
 
       /* Start fetching color/z tiles.  We'll wait for completion when
        * we need read/write to them later in triangle rasterization.
@@ -331,7 +330,7 @@ render(const struct cell_command_render *render)
          get_tile(&fb, tx, ty, (uint *) ctile, TAG_READ_TILE_COLOR, 0);
       }
 
-      assert(render->prim_type == PIPE_PRIM_TRIANGLES);
+      ASSERT(render->prim_type == PIPE_PRIM_TRIANGLES);
 
       /* loop over tris */
       for (j = 0; j < render->num_verts; j += 3) {
@@ -445,8 +444,8 @@ render_vbuf(const struct cell_command_render_vbuf *render)
       const uint tx = txmin + i % box_width_tiles;
       const uint ty = tymin + i / box_width_tiles;
 
-      assert(tx < fb.width_tiles);
-      assert(ty < fb.height_tiles);
+      ASSERT(tx < fb.width_tiles);
+      ASSERT(ty < fb.height_tiles);
 
       /* Start fetching color/z tiles.  We'll wait for completion when
        * we need read/write to them later in triangle rasterization.
@@ -461,7 +460,7 @@ render_vbuf(const struct cell_command_render_vbuf *render)
          get_tile(&fb, tx, ty, (uint *) ctile, TAG_READ_TILE_COLOR, 0);
       }
 
-      assert(render->prim_type == PIPE_PRIM_TRIANGLES);
+      ASSERT(render->prim_type == PIPE_PRIM_TRIANGLES);
 
       /* loop over tris */
       for (j = 0; j < render->num_indexes; j += 3) {
@@ -531,7 +530,7 @@ main_loop(void)
    if (Debug)
       printf("SPU %u: Enter main loop\n", init.id);
 
-   assert((sizeof(struct cell_command) & 0xf) == 0);
+   ASSERT((sizeof(struct cell_command) & 0xf) == 0);
    ASSERT_ALIGN16(&cmd);
 
    while (!exitFlag) {
index fce113b77db4a6824401107da4d6d143935a4187..c539385a07a2820730bc1bbdcc5b4115ba615728 100644 (file)
@@ -98,4 +98,14 @@ void
 clear_tile_z(ushort tile[TILE_SIZE][TILE_SIZE], uint value);
 
 
+
+/** The standard assert macro doesn't seem to work on SPUs */
+#define ASSERT(x) \
+   if (!(x)) { \
+      fprintf(stderr, "SPU %d: %s:%d: %s(): assertion %s failed.\n", \
+              init.id, __FILE__, __LINE__, __FUNCTION__, #x); \
+      exit(1); \
+   }
+
+
 #endif /* MAIN_H */
index 78cc7a591f33dc101f7f49325d0aed8ea6442c33..b40f35bc69a3c98b7bafc308156e3880d90cde57 100644 (file)
@@ -258,7 +258,7 @@ pack_color(const float color[4])
    case PIPE_FORMAT_B8G8R8A8_UNORM:
       return (b << 24) | (g << 16) | (r << 8) | a;
    default:
-      assert(0);
+      ASSERT(0);
       return 0;
    }
 }
@@ -613,7 +613,7 @@ static void tri_linear_coeff( struct setup_stage *setup,
       float a = setup->ebot.dy * majda - botda * setup->emaj.dy;
       float b = setup->emaj.dx * botda - majda * setup->ebot.dx;
    
-      assert(slot < PIPE_MAX_SHADER_INPUTS);
+      ASSERT(slot < PIPE_MAX_SHADER_INPUTS);
 
       setup->coef[slot].dadx[i] = a * setup->oneoverarea;
       setup->coef[slot].dady[i] = b * setup->oneoverarea;
@@ -777,7 +777,7 @@ static void subtriangle( struct setup_stage *setup,
    int y, start_y, finish_y;
    int sy = (int)eleft->sy;
 
-   assert((int)eleft->sy == (int) eright->sy);
+   ASSERT((int)eleft->sy == (int) eright->sy);
 
    /* clip top/bottom */
    start_y = sy;