diff options
author | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-02-16 03:13:16 -0800 |
---|---|---|
committer | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-02-16 03:16:59 -0800 |
commit | 18f20b70b15f5daed28eb9f4fce1eccd46cf82d3 (patch) | |
tree | ac586cacf8d162eecc7c3f407e778cf8b9482047 /src/gallium/drivers/r300/r300_state_derived.c | |
parent | b16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6 (diff) |
r300-gallium: Ooops, forgot to apply this stash.
"git stash": The cause of, and solution to, all my problems.
Diffstat (limited to 'src/gallium/drivers/r300/r300_state_derived.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_state_derived.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index fc2730d4c6..df19f20fc8 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -107,8 +107,28 @@ static void r300_update_vertex_layout(struct r300_context* r300) vinfo.hwfmt[1] |= (4 << (3 * i)); } + draw_compute_vertex_size(&vinfo); + if (memcmp(&r300->vertex_info, &vinfo, sizeof(struct vertex_info))) { memcpy(&r300->vertex_info, &vinfo, sizeof(struct vertex_info)); r300->dirty_state |= R300_NEW_VERTEX_FORMAT; } } + +/* Set up the RS block. This is the part of the chipset that actually does + * the rasterization of vertices into fragments. This is also the part of the + * chipset that locks up if any part of it is even slightly wrong. */ +void r300_update_rs_block(struct r300_context* r300) +{ +} + +void r300_update_derived_state(struct r300_context* r300) +{ + if (r300->dirty_state & R300_NEW_FRAGMENT_SHADER) { + r300_update_vertex_layout(r300); + } + + if (r300->dirty_state & R300_NEW_VERTEX_FORMAT) { + r300_update_rs_block(r300); + } +} |