summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorCorbin Simpson <[email protected]>2009-02-16 03:13:16 -0800
committerCorbin Simpson <[email protected]>2009-02-16 03:16:59 -0800
commit18f20b70b15f5daed28eb9f4fce1eccd46cf82d3 (patch)
treeac586cacf8d162eecc7c3f407e778cf8b9482047 /src/gallium
parentb16d4399892dbf8ab2c72a60b46bbc03ee5cd9a6 (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')
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.c20
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.h2
2 files changed, 22 insertions, 0 deletions
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 */