cell: Minor changes to make stencil not crash

I'm not sure these are quite correct.  The reflect demo doesn't assert
anymore, but it doesn't produce correct results either.  SPE-based
vertex shader code needs to be disabled for relfect to run.
This commit is contained in:
Ian Romanick 2008-03-18 10:26:45 -07:00
parent f432ac5a11
commit 5fdaebc51c
2 changed files with 11 additions and 5 deletions

View File

@ -218,12 +218,18 @@ cmd_state_framebuffer(const struct cell_command_framebuffer *cmd)
spu.fb.width_tiles = (spu.fb.width + TILE_SIZE - 1) / TILE_SIZE; spu.fb.width_tiles = (spu.fb.width + TILE_SIZE - 1) / TILE_SIZE;
spu.fb.height_tiles = (spu.fb.height + TILE_SIZE - 1) / TILE_SIZE; spu.fb.height_tiles = (spu.fb.height + TILE_SIZE - 1) / TILE_SIZE;
if (spu.fb.depth_format == PIPE_FORMAT_Z32_UNORM) switch (spu.fb.depth_format) {
case PIPE_FORMAT_Z32_UNORM:
case PIPE_FORMAT_Z24S8_UNORM:
spu.fb.zsize = 4; spu.fb.zsize = 4;
else if (spu.fb.depth_format == PIPE_FORMAT_Z16_UNORM) break;
case PIPE_FORMAT_Z16_UNORM:
spu.fb.zsize = 2; spu.fb.zsize = 2;
else break;
default:
spu.fb.zsize = 0; spu.fb.zsize = 0;
break;
}
if (spu.fb.color_format == PIPE_FORMAT_A8R8G8B8_UNORM) if (spu.fb.color_format == PIPE_FORMAT_A8R8G8B8_UNORM)
spu.color_shuffle = ((vector unsigned char) { spu.color_shuffle = ((vector unsigned char) {

View File

@ -56,13 +56,13 @@ clear_c_tile(tile_t *ctile)
static INLINE void static INLINE void
clear_z_tile(tile_t *ztile) clear_z_tile(tile_t *ztile)
{ {
if (spu.fb.depth_format == PIPE_FORMAT_Z16_UNORM) { if (spu.fb.zsize == 2) {
memset16((ushort*) ztile->us, memset16((ushort*) ztile->us,
spu.fb.depth_clear_value, spu.fb.depth_clear_value,
TILE_SIZE * TILE_SIZE); TILE_SIZE * TILE_SIZE);
} }
else { else {
ASSERT(spu.fb.depth_format == PIPE_FORMAT_Z32_UNORM); ASSERT(spu.fb.zsize != 0);
memset32((uint*) ztile->ui, memset32((uint*) ztile->ui,
spu.fb.depth_clear_value, spu.fb.depth_clear_value,
TILE_SIZE * TILE_SIZE); TILE_SIZE * TILE_SIZE);