From: Corbin Simpson Date: Wed, 18 Mar 2009 20:37:59 +0000 (-0700) Subject: r300-gallium: Viewport state storage. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3a648d0cf23c39a139e4638c2194e4ce97c1d983;p=mesa.git r300-gallium: Viewport state storage. --- diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index 5797de7dde7..b8584702aad 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -98,6 +98,7 @@ static void r300_destroy_context(struct pipe_context* context) { FREE(r300->blend_color_state); FREE(r300->rs_block); FREE(r300->scissor_state); + FREE(r300->viewport_state); FREE(r300); } @@ -129,6 +130,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, r300->blend_color_state = CALLOC_STRUCT(r300_blend_color_state); r300->rs_block = CALLOC_STRUCT(r300_rs_block); r300->scissor_state = CALLOC_STRUCT(r300_scissor_state); + r300->viewport_state = CALLOC_STRUCT(r300_viewport_state); r300_init_flush_functions(r300); diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index 96d923d6f1c..5431cf2f72a 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -102,6 +102,15 @@ struct r300_texture_state { uint32_t format2; /* R300_TX_FORMAT2: 0x4500 */ }; +struct r300_viewport_state { + float xscale; /* R300_VAP_VPORT_XSCALE: 0x2098 */ + float xoffset; /* R300_VAP_VPORT_XOFFSET: 0x209c */ + float yscale; /* R300_VAP_VPORT_YSCALE: 0x20a0 */ + float yoffset; /* R300_VAP_VPORT_YOFFSET: 0x20a4 */ + float zscale; /* R300_VAP_VPORT_ZSCALE: 0x20a8 */ + float zoffset; /* R300_VAP_VPORT_ZOFFSET: 0x20ac */ +}; + #define R300_NEW_BLEND 0x0000001 #define R300_NEW_BLEND_COLOR 0x0000002 #define R300_NEW_CONSTANTS 0x0000004 @@ -117,7 +126,8 @@ struct r300_texture_state { #define R300_ANY_NEW_TEXTURES 0x1fe0000 #define R300_NEW_VERTEX_FORMAT 0x2000000 #define R300_NEW_VERTEX_SHADER 0x4000000 -#define R300_NEW_KITCHEN_SINK 0x7ffffff +#define R300_NEW_VIEWPORT 0x8000000 +#define R300_NEW_KITCHEN_SINK 0xfffffff /* The next several objects are not pure Radeon state; they inherit from * various Gallium classes. */ @@ -262,6 +272,8 @@ struct r300_context { int vertex_buffer_count; /* Vertex information. */ struct r300_vertex_format vertex_info; + /* Viewport state. */ + struct r300_viewport_state* viewport_state; /* Bitmask of dirty state objects. */ uint32_t dirty_state; /* Flag indicating whether or not the HW is dirty. */