Mesa (master): r300/compiler: Fix bug in rc_get_variables()
Tom Stellard
tstellar at kemper.freedesktop.org
Wed May 11 23:54:03 UTC 2011
Module: Mesa
Branch: master
Commit: 95c93651b4023cb070878aee7723d886de8ea19a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=95c93651b4023cb070878aee7723d886de8ea19a
Author: Tom Stellard <tstellar at gmail.com>
Date: Wed May 11 16:12:52 2011 -0700
r300/compiler: Fix bug in rc_get_variables()
Variables that share readers were not always being linked together.
https://bugs.freedesktop.org/show_bug.cgi?id=36939
---
.../drivers/dri/r300/compiler/radeon_variable.c | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_variable.c b/src/mesa/drivers/dri/r300/compiler/radeon_variable.c
index 16fa5d2..5b2295d 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_variable.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_variable.c
@@ -388,17 +388,21 @@ struct rc_list * rc_get_variables(struct radeon_compiler * c)
*/
while (aborted_list) {
struct rc_list * search_ptr_next;
+ struct rc_variable * var;
var_ptr = aborted_list;
+ for (var = var_ptr->Item; var; var = var->Friend) {
- search_ptr = var_ptr->Next;
- while(search_ptr) {
- search_ptr_next = search_ptr->Next;
- if (readers_intersect(var_ptr->Item, search_ptr->Item)){
- rc_list_remove(&aborted_list, search_ptr);
- rc_variable_add_friend(var_ptr->Item,
+ search_ptr = var_ptr->Next;
+ while(search_ptr) {
+ search_ptr_next = search_ptr->Next;
+ if (readers_intersect(var, search_ptr->Item)){
+ rc_list_remove(&aborted_list,
+ search_ptr);
+ rc_variable_add_friend(var,
search_ptr->Item);
+ }
+ search_ptr = search_ptr_next;
}
- search_ptr = search_ptr_next;
}
rc_list_remove(&aborted_list, var_ptr);
rc_list_add(&variable_list, rc_list(
More information about the mesa-commit
mailing list