summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2008-01-30 19:30:15 -0800
committerIan Romanick <[email protected]>2008-01-30 20:14:52 -0800
commit193491cbd3ad2ad95243181c201da4640f3a29c2 (patch)
tree6f8ce913e65402465536507792c9878d837d27b6
parentfb348c2cb16d0bc216d29889474972d5c14d0980 (diff)
Handle CELL_CMD_VS_EXECUTE *only* outside batch commands.
-rw-r--r--src/mesa/pipe/cell/common.h3
-rw-r--r--src/mesa/pipe/cell/spu/spu_main.c8
2 files changed, 5 insertions, 6 deletions
diff --git a/src/mesa/pipe/cell/common.h b/src/mesa/pipe/cell/common.h
index fbbdf728a12..a40cfb8210a 100644
--- a/src/mesa/pipe/cell/common.h
+++ b/src/mesa/pipe/cell/common.h
@@ -133,7 +133,6 @@ struct cell_array_info
struct cell_shader_info
{
- unsigned processor;
unsigned num_outputs;
void *declarations;
@@ -147,6 +146,7 @@ struct cell_shader_info
#define SPU_VERTS_PER_BATCH 64
struct cell_command_vs
{
+ uint opcode; /**< CELL_CMD_VS_EXECUTE */
struct cell_shader_info shader;
unsigned num_elts;
unsigned elts[SPU_VERTS_PER_BATCH];
@@ -190,6 +190,7 @@ struct cell_command
struct cell_command_framebuffer fb;
struct cell_command_clear_surface clear;
struct cell_command_render render;
+ struct cell_command_vs vs;
} ALIGN16_ATTRIB;
diff --git a/src/mesa/pipe/cell/spu/spu_main.c b/src/mesa/pipe/cell/spu/spu_main.c
index 9daa3ec735a..7105c0f8977 100644
--- a/src/mesa/pipe/cell/spu/spu_main.c
+++ b/src/mesa/pipe/cell/spu/spu_main.c
@@ -397,11 +397,6 @@ cmd_batch(uint opcode)
cmd_state_vs_array_info((struct cell_array_info *) &buffer[pos+1]);
pos += (1 + sizeof(struct cell_array_info) / 4);
break;
- case CELL_CMD_VS_EXECUTE:
- spu_execute_vertex_shader(&draw,
- (struct cell_command_vs *) &buffer[pos+1]);
- pos += (1 + sizeof(struct cell_command_vs) / 4);
- break;
default:
printf("SPU %u: bad opcode: 0x%x\n", spu.init.id, buffer[pos]);
ASSERT(0);
@@ -470,6 +465,9 @@ main_loop(void)
assert(pos_incr == 0);
}
break;
+ case CELL_CMD_VS_EXECUTE:
+ spu_execute_vertex_shader(&draw, &cmd.vs);
+ break;
case CELL_CMD_BATCH:
cmd_batch(opcode);
break;