projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r600g: Move fetch shader register setup to r600_state.c / evergreen_state.c.
[mesa.git]
/
src
/
gallium
/
drivers
/
cell
/
common.h
diff --git
a/src/gallium/drivers/cell/common.h
b/src/gallium/drivers/cell/common.h
index 98554d7f5218a65eb630502fdb447505cd23cc05..a8cdde34aa7717b6738c746511d897909c949455 100644
(file)
--- a/
src/gallium/drivers/cell/common.h
+++ b/
src/gallium/drivers/cell/common.h
@@
-36,7
+36,7
@@
#include "pipe/p_compiler.h"
#include "pipe/p_format.h"
#include "pipe/p_state.h"
#include "pipe/p_compiler.h"
#include "pipe/p_format.h"
#include "pipe/p_state.h"
-
+#include <stdio.h>
/** The standard assert macro doesn't seem to work reliably */
#define ASSERT(x) \
/** The standard assert macro doesn't seem to work reliably */
#define ASSERT(x) \
@@
-49,6
+49,14
@@
}
}
+#define JOIN(x, y) JOIN_AGAIN(x, y)
+#define JOIN_AGAIN(x, y) x ## y
+
+#define STATIC_ASSERT(e) \
+{typedef char JOIN(assertion_failed_at_line_, __LINE__) [(e) ? 1 : -1];}
+
+
+
/** for sanity checking */
#define ASSERT_ALIGN16(ptr) \
ASSERT((((unsigned long) (ptr)) & 0xf) == 0);
/** for sanity checking */
#define ASSERT_ALIGN16(ptr) \
ASSERT((((unsigned long) (ptr)) & 0xf) == 0);
@@
-134,6
+142,11
@@
struct cell_fence
volatile uint status[CELL_MAX_SPUS][4];
};
volatile uint status[CELL_MAX_SPUS][4];
};
+#ifdef __SPU__
+typedef vector unsigned int opcode_t;
+#else
+typedef unsigned int opcode_t[4];
+#endif
/**
* Fence command sent to SPUs. In response, the SPUs will write
/**
* Fence command sent to SPUs. In response, the SPUs will write
@@
-141,8
+154,9
@@
struct cell_fence
*/
struct cell_command_fence
{
*/
struct cell_command_fence
{
-
uint64
_t opcode; /**< CELL_CMD_FENCE */
+
opcode
_t opcode; /**< CELL_CMD_FENCE */
struct cell_fence *fence;
struct cell_fence *fence;
+ uint32_t pad_[3];
};
};
@@
-163,7
+177,7
@@
struct cell_command_fence
*/
struct cell_command_fragment_ops
{
*/
struct cell_command_fragment_ops
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_FRAGMENT_OPS */
+
opcode
_t opcode; /**< CELL_CMD_STATE_FRAGMENT_OPS */
/* Fields for the fallback case */
struct pipe_depth_stencil_alpha_state dsa;
/* Fields for the fallback case */
struct pipe_depth_stencil_alpha_state dsa;
@@
-189,8
+203,9
@@
struct cell_command_fragment_ops
*/
struct cell_command_fragment_program
{
*/
struct cell_command_fragment_program
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_FRAGMENT_PROGRAM */
+
opcode
_t opcode; /**< CELL_CMD_STATE_FRAGMENT_PROGRAM */
uint num_inst; /**< Number of instructions */
uint num_inst; /**< Number of instructions */
+ uint32_t pad[3];
unsigned code[SPU_MAX_FRAGMENT_PROGRAM_INSTS];
};
unsigned code[SPU_MAX_FRAGMENT_PROGRAM_INSTS];
};
@@
-200,10
+215,11
@@
struct cell_command_fragment_program
*/
struct cell_command_framebuffer
{
*/
struct cell_command_framebuffer
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_FRAMEBUFFER */
+
opcode
_t opcode; /**< CELL_CMD_STATE_FRAMEBUFFER */
int width, height;
void *color_start, *depth_start;
enum pipe_format color_format, depth_format;
int width, height;
void *color_start, *depth_start;
enum pipe_format color_format, depth_format;
+ uint32_t pad_[2];
};
};
@@
-212,8
+228,9
@@
struct cell_command_framebuffer
*/
struct cell_command_rasterizer
{
*/
struct cell_command_rasterizer
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_RASTERIZER */
+
opcode
_t opcode; /**< CELL_CMD_STATE_RASTERIZER */
struct pipe_rasterizer_state rasterizer;
struct pipe_rasterizer_state rasterizer;
+ /*uint32_t pad[1];*/
};
};
@@
-222,9
+239,10
@@
struct cell_command_rasterizer
*/
struct cell_command_clear_surface
{
*/
struct cell_command_clear_surface
{
-
uint64
_t opcode; /**< CELL_CMD_CLEAR_SURFACE */
+
opcode
_t opcode; /**< CELL_CMD_CLEAR_SURFACE */
uint surface; /**< Temporary: 0=color, 1=Z */
uint value;
uint surface; /**< Temporary: 0=color, 1=Z */
uint value;
+ uint32_t pad[2];
};
};
@@
-271,7
+289,7
@@
struct cell_shader_info
#define SPU_VERTS_PER_BATCH 64
struct cell_command_vs
{
#define SPU_VERTS_PER_BATCH 64
struct cell_command_vs
{
-
uint64
_t opcode; /**< CELL_CMD_VS_EXECUTE */
+
opcode
_t opcode; /**< CELL_CMD_VS_EXECUTE */
uint64_t vOut[SPU_VERTS_PER_BATCH];
unsigned num_elts;
unsigned elts[SPU_VERTS_PER_BATCH];
uint64_t vOut[SPU_VERTS_PER_BATCH];
unsigned num_elts;
unsigned elts[SPU_VERTS_PER_BATCH];
@@
-283,7
+301,7
@@
struct cell_command_vs
struct cell_command_render
{
struct cell_command_render
{
-
uint64
_t opcode; /**< CELL_CMD_RENDER */
+
opcode
_t opcode; /**< CELL_CMD_RENDER */
uint prim_type; /**< PIPE_PRIM_x */
uint num_verts;
uint vertex_size; /**< bytes per vertex */
uint prim_type; /**< PIPE_PRIM_x */
uint num_verts;
uint vertex_size; /**< bytes per vertex */
@@
-292,27
+310,30
@@
struct cell_command_render
float xmin, ymin, xmax, ymax; /* XXX another dummy field */
uint min_index;
boolean inline_verts;
float xmin, ymin, xmax, ymax; /* XXX another dummy field */
uint min_index;
boolean inline_verts;
+ uint32_t pad_[1];
};
struct cell_command_release_verts
{
};
struct cell_command_release_verts
{
-
uint64
_t opcode; /**< CELL_CMD_RELEASE_VERTS */
+
opcode
_t opcode; /**< CELL_CMD_RELEASE_VERTS */
uint vertex_buf; /**< in [0, CELL_NUM_BUFFERS-1] */
uint vertex_buf; /**< in [0, CELL_NUM_BUFFERS-1] */
+ uint32_t pad_[3];
};
struct cell_command_sampler
{
};
struct cell_command_sampler
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_SAMPLER */
+
opcode
_t opcode; /**< CELL_CMD_STATE_SAMPLER */
uint unit;
struct pipe_sampler_state state;
uint unit;
struct pipe_sampler_state state;
+ uint32_t pad_[3];
};
struct cell_command_texture
{
};
struct cell_command_texture
{
-
uint64
_t opcode; /**< CELL_CMD_STATE_TEXTURE */
+
opcode
_t opcode; /**< CELL_CMD_STATE_TEXTURE */
uint target; /**< PIPE_TEXTURE_x */
uint unit;
void *start[CELL_MAX_TEXTURE_LEVELS]; /**< Address in main memory */
uint target; /**< PIPE_TEXTURE_x */
uint unit;
void *start[CELL_MAX_TEXTURE_LEVELS]; /**< Address in main memory */
@@
-337,6
+358,7
@@
struct cell_spu_function_info
/** This is the object passed to spe_create_thread() */
/** This is the object passed to spe_create_thread() */
+PIPE_ALIGN_TYPE(16,
struct cell_init_info
{
unsigned id;
struct cell_init_info
{
unsigned id;
@@
-349,7
+371,7
@@
struct cell_init_info
uint *buffer_status; /**< points at cell_context->buffer_status */
struct cell_spu_function_info *spu_functions;
uint *buffer_status; /**< points at cell_context->buffer_status */
struct cell_spu_function_info *spu_functions;
-}
ALIGN16_ATTRIB
;
+}
)
;
#endif /* CELL_COMMON_H */
#endif /* CELL_COMMON_H */