summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/cell/ppu/cell_state_emit.c
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2008-01-25 09:01:36 -0700
committerBrian <brian.paul@tungstengraphics.com>2008-01-25 17:25:56 -0700
commit4d534124e77109a0405bf68dc3fa1a370f5ea014 (patch)
tree808777435cd82a0cc088892a63f440ec80173532 /src/mesa/pipe/cell/ppu/cell_state_emit.c
parent42d38ac02fff63406cd59914a3eb1e5ad27134d0 (diff)
Cell: emit framebuffer state like other state
Plus misc clean-up. Window resize sometimes works now.
Diffstat (limited to 'src/mesa/pipe/cell/ppu/cell_state_emit.c')
-rw-r--r--src/mesa/pipe/cell/ppu/cell_state_emit.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/pipe/cell/ppu/cell_state_emit.c b/src/mesa/pipe/cell/ppu/cell_state_emit.c
index e5b7c92514..dbca900c35 100644
--- a/src/mesa/pipe/cell/ppu/cell_state_emit.c
+++ b/src/mesa/pipe/cell/ppu/cell_state_emit.c
@@ -36,6 +36,20 @@
void
cell_emit_state(struct cell_context *cell)
{
+ if (cell->dirty & CELL_NEW_FRAMEBUFFER) {
+ struct pipe_surface *cbuf = cell->framebuffer.cbufs[0];
+ struct pipe_surface *zbuf = cell->framebuffer.zsbuf;
+ struct cell_command_framebuffer *fb
+ = cell_batch_alloc(cell, sizeof(*fb));
+ fb->opcode = CELL_CMD_STATE_FRAMEBUFFER;
+ fb->color_start = cell->cbuf_map[0];
+ fb->color_format = cbuf->format;
+ fb->depth_start = cell->zsbuf_map;
+ fb->depth_format = zbuf ? zbuf->format : PIPE_FORMAT_NONE;
+ fb->width = cell->framebuffer.cbufs[0]->width;
+ fb->height = cell->framebuffer.cbufs[0]->height;
+ }
+
if (cell->dirty & CELL_NEW_DEPTH_STENCIL) {
uint cmd = CELL_CMD_STATE_DEPTH_STENCIL;
cell_batch_append(cell, &cmd, 4);