diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/cell/ppu/cell_batch.c | 25 | ||||
| -rw-r--r-- | src/gallium/drivers/cell/ppu/cell_batch.h | 3 | ||||
| -rw-r--r-- | src/gallium/drivers/cell/ppu/cell_context.c | 20 | 
3 files changed, 32 insertions, 16 deletions
diff --git a/src/gallium/drivers/cell/ppu/cell_batch.c b/src/gallium/drivers/cell/ppu/cell_batch.c index a32a8c5633..16882c0129 100644 --- a/src/gallium/drivers/cell/ppu/cell_batch.c +++ b/src/gallium/drivers/cell/ppu/cell_batch.c @@ -240,3 +240,28 @@ cell_batch_alloc_aligned(struct cell_context *cell, uint bytes,     return pos;  } + + +/** + * One-time init of batch buffers. + */ +void +cell_init_batch_buffers(struct cell_context *cell) +{ +   uint spu, buf; + +   /* init command, vertex/index buffer info */ +   for (buf = 0; buf < CELL_NUM_BUFFERS; buf++) { +      cell->buffer_size[buf] = 0; + +      /* init batch buffer status values, +       * mark 0th buffer as used, rest as free. +       */ +      for (spu = 0; spu < cell->num_spus; spu++) { +         if (buf == 0) +            cell->buffer_status[spu][buf][0] = CELL_BUFFER_STATUS_USED; +         else +            cell->buffer_status[spu][buf][0] = CELL_BUFFER_STATUS_FREE; +      } +   } +} diff --git a/src/gallium/drivers/cell/ppu/cell_batch.h b/src/gallium/drivers/cell/ppu/cell_batch.h index a6eee0a8b1..f74dd60079 100644 --- a/src/gallium/drivers/cell/ppu/cell_batch.h +++ b/src/gallium/drivers/cell/ppu/cell_batch.h @@ -54,5 +54,8 @@ extern void *  cell_batch_alloc_aligned(struct cell_context *cell, uint bytes,                           uint alignment); +extern void +cell_init_batch_buffers(struct cell_context *cell); +  #endif /* CELL_BATCH_H */ diff --git a/src/gallium/drivers/cell/ppu/cell_context.c b/src/gallium/drivers/cell/ppu/cell_context.c index e840b7fa88..71f1a3049d 100644 --- a/src/gallium/drivers/cell/ppu/cell_context.c +++ b/src/gallium/drivers/cell/ppu/cell_context.c @@ -43,11 +43,11 @@  #include "draw/draw_private.h"  #include "cell/common.h" +#include "cell_batch.h"  #include "cell_clear.h"  #include "cell_context.h"  #include "cell_draw_arrays.h"  #include "cell_flush.h" -#include "cell_render.h"  #include "cell_state.h"  #include "cell_surface.h"  #include "cell_spu.h" @@ -99,7 +99,6 @@ cell_create_context(struct pipe_screen *screen,                      struct cell_winsys *cws)  {     struct cell_context *cell; -   uint spu, buf;     /* some fields need to be 16-byte aligned, so align the whole object */     cell = (struct cell_context*) align_malloc(sizeof(struct cell_context), 16); @@ -132,12 +131,14 @@ cell_create_context(struct pipe_screen *screen,     cell->draw = cell_draw_create(cell);     cell_init_vbuf(cell); +     draw_set_rasterize_stage(cell->draw, cell->vbuf);     /* convert all points/lines to tris for the time being */     draw_wide_point_threshold(cell->draw, 0.0);     draw_wide_line_threshold(cell->draw, 0.0); +   /* get env vars or read config file to get debug flags */     cell->debug_flags = debug_get_flags_option("CELL_DEBUG",                                                 cell_debug_flags,                                                 0 ); @@ -152,20 +153,7 @@ cell_create_context(struct pipe_screen *screen,     cell_start_spus(cell); -   /* init command, vertex/index buffer info */ -   for (buf = 0; buf < CELL_NUM_BUFFERS; buf++) { -      cell->buffer_size[buf] = 0; - -      /* init batch buffer status values, -       * mark 0th buffer as used, rest as free. -       */ -      for (spu = 0; spu < cell->num_spus; spu++) { -         if (buf == 0) -            cell->buffer_status[spu][buf][0] = CELL_BUFFER_STATUS_USED; -         else -            cell->buffer_status[spu][buf][0] = CELL_BUFFER_STATUS_FREE; -      } -   } +   cell_init_batch_buffers(cell);     return &cell->pipe;  }  | 
