Mesa (master): r300g: Demonstratory kludge to unbreak glxgears.
Corbin Simpson
csimpson at kemper.freedesktop.org
Mon Oct 19 21:43:36 UTC 2009
Module: Mesa
Branch: master
Commit: e5f1f6a0bece3d035bf5ac1685b5335af4862cea
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5f1f6a0bece3d035bf5ac1685b5335af4862cea
Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date: Mon Oct 19 13:51:28 2009 -0700
r300g: Demonstratory kludge to unbreak glxgears.
We *must* recalculate something in vformat every rebind; let's see
if we can't narrow it down a bit.
---
src/gallium/drivers/r300/r300_state_derived.c | 28 ++++++++++++++----------
1 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 1468b9d..5df1a0c 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -460,32 +460,36 @@ static void r300_update_derived_shader_state(struct r300_context* r300)
value = (struct r300_shader_derived_value*)
util_hash_table_get(r300->shader_hash_table, (void*)key);
if (value) {
- vformat = value->vformat;
+ //vformat = value->vformat;
rs_block = value->rs_block;
FREE(key);
} else {
- vformat = CALLOC_STRUCT(r300_vertex_format);
rs_block = CALLOC_STRUCT(r300_rs_block);
value = CALLOC_STRUCT(r300_shader_derived_value);
- for (i = 0; i < 16; i++) {
- vformat->vs_tab[i] = -1;
- vformat->fs_tab[i] = -1;
- }
-
- r300_vs_tab_routes(r300, vformat);
- r300_vertex_psc(r300, vformat);
- r300_update_fs_tab(r300, vformat);
-
r300_update_rs_block(r300, rs_block);
- value->vformat = vformat;
+ //value->vformat = vformat;
value->rs_block = rs_block;
util_hash_table_set(r300->shader_hash_table,
(void*)key, (void*)value);
}
+ /* XXX This will be refactored ASAP. */
+ vformat = CALLOC_STRUCT(r300_vertex_format);
+
+ for (i = 0; i < 16; i++) {
+ vformat->vs_tab[i] = -1;
+ vformat->fs_tab[i] = -1;
+ }
+
+ r300_vs_tab_routes(r300, vformat);
+ r300_vertex_psc(r300, vformat);
+ r300_update_fs_tab(r300, vformat);
+
+ FREE(r300->vertex_info);
+
r300->vertex_info = vformat;
r300->rs_block = rs_block;
r300->dirty_state |= (R300_NEW_VERTEX_FORMAT | R300_NEW_RS_BLOCK);
More information about the mesa-commit
mailing list