summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r300/r300_context.h')
-rw-r--r--src/gallium/drivers/r300/r300_context.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h
index 6f62998b35..a9dd041e08 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -63,6 +63,11 @@ struct r300_rs_state {
/* Draw-specific rasterizer state */
struct pipe_rasterizer_state rs;
+ /* Whether or not to enable the VTE. This is referenced at the very
+ * last moment during emission of VTE state, to decide whether or not
+ * the VTE should be used for transformation. */
+ boolean enable_vte;
+
uint32_t vap_control_status; /* R300_VAP_CNTL_STATUS: 0x2140 */
uint32_t point_size; /* R300_GA_POINT_SIZE: 0x421c */
uint32_t point_minmax; /* R300_GA_POINT_MINMAX: 0x4230 */
@@ -136,11 +141,11 @@ struct r300_viewport_state {
struct r300_constant_buffer {
/* Buffer of constants */
/* XXX first number should be raised */
- float constants[8][4];
+ float constants[32][4];
/* Number of user-defined constants */
- int user_count;
+ unsigned user_count;
/* Total number of constants */
- int count;
+ unsigned count;
};
struct r3xx_fragment_shader {
@@ -153,6 +158,10 @@ struct r3xx_fragment_shader {
/* Pixel stack size */
int stack_size;
+
+ /* Are there immediates in this shader?
+ * If not, we can heavily optimize recompilation. */
+ boolean uses_imms;
};
struct r300_fragment_shader {
@@ -243,6 +252,10 @@ struct r300_vertex_shader {
/* Has this shader been translated yet? */
boolean translated;
+ /* Are there immediates in this shader?
+ * If not, we can heavily optimize recompilation. */
+ boolean uses_imms;
+
/* Number of used instructions */
int instruction_count;
@@ -255,6 +268,11 @@ struct r300_vertex_shader {
} instructions[128]; /*< XXX magic number */
};
+static struct pipe_viewport_state r300_viewport_identity = {
+ .scale = {1.0, 1.0, 1.0, 1.0},
+ .translate = {0.0, 0.0, 0.0, 0.0},
+};
+
struct r300_context {
/* Parent class */
struct pipe_context context;
@@ -264,6 +282,11 @@ struct r300_context {
/* Draw module. Used mostly for SW TCL. */
struct draw_context* draw;
+ /* Vertex buffer for rendering. */
+ struct pipe_buffer* vbo;
+ /* Offset into the VBO. */
+ size_t vbo_offset;
+
/* Various CSO state objects. */
/* Blend state. */
struct r300_blend_state* blend_state;
@@ -289,7 +312,7 @@ struct r300_context {
/* Texture states. */
struct r300_texture* textures[8];
int texture_count;
- /* Vertex buffers. */
+ /* Vertex buffers for Gallium. */
struct pipe_vertex_buffer vertex_buffers[PIPE_MAX_ATTRIBS];
int vertex_buffer_count;
/* Vertex information. */