mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 11:58:10 +02:00
Cell: first state object (depth/stencil/alpha) emitted to SPUs
This commit is contained in:
parent
68f5a6f743
commit
dae719a681
8 changed files with 106 additions and 1 deletions
|
|
@ -59,6 +59,7 @@
|
|||
#define CELL_CMD_FINISH 4
|
||||
#define CELL_CMD_RENDER 5
|
||||
#define CELL_CMD_BATCH 6
|
||||
#define CELL_CMD_STATE_DEPTH_STENCIL 7
|
||||
|
||||
|
||||
#define CELL_NUM_BATCH_BUFFERS 2
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ SOURCES = \
|
|||
cell_state_blend.c \
|
||||
cell_state_clip.c \
|
||||
cell_state_derived.c \
|
||||
cell_state_emit.c \
|
||||
cell_state_fs.c \
|
||||
cell_state_rasterizer.c \
|
||||
cell_state_sampler.c \
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ cell_batch_append(struct cell_context *cell, const void *cmd, uint length)
|
|||
{
|
||||
uint size;
|
||||
|
||||
assert(length % 4 == 0);
|
||||
assert(cell->cur_batch >= 0);
|
||||
|
||||
size = cell->batch_buffer_size[cell->cur_batch];
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "cell_state.h"
|
||||
|
||||
|
||||
|
||||
void *
|
||||
cell_create_blend_state(struct pipe_context *pipe,
|
||||
const struct pipe_blend_state *blend)
|
||||
|
|
|
|||
|
|
@ -219,5 +219,7 @@ void cell_update_derived( struct cell_context *cell )
|
|||
compute_cliprect(cell);
|
||||
#endif
|
||||
|
||||
cell_emit_state(cell);
|
||||
|
||||
cell->dirty = 0;
|
||||
}
|
||||
|
|
|
|||
45
src/mesa/pipe/cell/ppu/cell_state_emit.c
Normal file
45
src/mesa/pipe/cell/ppu/cell_state_emit.c
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include "pipe/p_util.h"
|
||||
#include "cell_context.h"
|
||||
#include "cell_state.h"
|
||||
#include "cell_state_emit.h"
|
||||
#include "cell_batch.h"
|
||||
|
||||
|
||||
|
||||
void
|
||||
cell_emit_state(struct cell_context *cell)
|
||||
{
|
||||
if (cell->dirty & CELL_NEW_DEPTH_STENCIL) {
|
||||
uint cmd = CELL_CMD_STATE_DEPTH_STENCIL;
|
||||
cell_batch_append(cell, &cmd, 4);
|
||||
cell_batch_append(cell, cell->depth_stencil,
|
||||
sizeof(struct pipe_depth_stencil_alpha_state));
|
||||
}
|
||||
}
|
||||
36
src/mesa/pipe/cell/ppu/cell_state_emit.h
Normal file
36
src/mesa/pipe/cell/ppu/cell_state_emit.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef CELL_STATE_EMIT_H
|
||||
#define CELL_STATE_EMIT_H
|
||||
|
||||
|
||||
extern void
|
||||
cell_emit_state(struct cell_context *cell);
|
||||
|
||||
|
||||
#endif /* CELL_STATE_EMIT_H */
|
||||
|
|
@ -38,6 +38,8 @@
|
|||
#include "spu_tile.h"
|
||||
#include "pipe/cell/common.h"
|
||||
#include "pipe/p_defines.h"
|
||||
#include "pipe/p_state.h"
|
||||
|
||||
|
||||
/*
|
||||
helpful headers:
|
||||
|
|
@ -45,7 +47,7 @@ helpful headers:
|
|||
/opt/ibm/cell-sdk/prototype/sysroot/usr/include/libmisc.h
|
||||
*/
|
||||
|
||||
static boolean Debug = FALSE;
|
||||
static boolean Debug = TRUE;
|
||||
|
||||
volatile struct cell_init_info init;
|
||||
|
||||
|
|
@ -356,6 +358,17 @@ cmd_framebuffer(const struct cell_command_framebuffer *cmd)
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
cmd_state_depth_stencil(const struct pipe_depth_stencil_alpha_state *state)
|
||||
{
|
||||
if (Debug)
|
||||
printf("SPU %u: DEPTH_STENCIL: ztest %d\n",
|
||||
init.id,
|
||||
state->depth.enabled);
|
||||
/* XXX copy/save the state */
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
cmd_finish(void)
|
||||
{
|
||||
|
|
@ -431,6 +444,11 @@ cmd_batch(uint opcode)
|
|||
cmd_finish();
|
||||
pos += 1;
|
||||
break;
|
||||
case CELL_CMD_STATE_DEPTH_STENCIL:
|
||||
cmd_state_depth_stencil((struct pipe_depth_stencil_alpha_state *)
|
||||
&buffer[pos+1]);
|
||||
pos += (1 + sizeof(struct pipe_depth_stencil_alpha_state) / 4);
|
||||
break;
|
||||
default:
|
||||
printf("SPU %u: bad opcode: 0x%x\n", init.id, buffer[pos]);
|
||||
ASSERT(0);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue