From 18f20b70b15f5daed28eb9f4fce1eccd46cf82d3 Mon Sep 17 00:00:00 2001 From: Corbin Simpson Date: Mon, 16 Feb 2009 03:13:16 -0800 Subject: [PATCH] r300-gallium: Ooops, forgot to apply this stash. "git stash": The cause of, and solution to, all my problems. --- src/gallium/drivers/r300/r300_state_derived.c | 20 +++++++++++++++++++ src/gallium/drivers/r300/r300_state_derived.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index fc2730d4c60..df19f20fc8f 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); + } +} diff --git a/src/gallium/drivers/r300/r300_state_derived.h b/src/gallium/drivers/r300/r300_state_derived.h index 11d0787d127..72ba6b928d6 100644 --- a/src/gallium/drivers/r300/r300_state_derived.h +++ b/src/gallium/drivers/r300/r300_state_derived.h @@ -28,4 +28,6 @@ #include "r300_context.h" #include "r300_reg.h" +void r300_update_derived_state(struct r300_context* r300); + #endif /* R300_STATE_DERIVED_H */