Mesa (master): r600g: add a chiprev type for r600/r700/ evergreen instead of using family

Dave Airlie airlied at kemper.freedesktop.org
Thu Aug 19 05:37:07 UTC 2010


Module: Mesa
Branch: master
Commit: 098064e8cb6950f60c51a44e280cb335f07920b1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=098064e8cb6950f60c51a44e280cb335f07920b1

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Aug 19 14:43:11 2010 +1000

r600g: add a chiprev type for r600/r700/evergreen instead of using family

---

 src/gallium/drivers/r600/r600_asm.c |   37 ++++++++++++++++++++++------------
 src/gallium/drivers/r600/r600_asm.h |    1 +
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 9ea9d43..e6efae4 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -76,6 +76,27 @@ int r600_bc_init(struct r600_bc *bc, enum radeon_family family)
 {
 	LIST_INITHEAD(&bc->cf);
 	bc->family = family;
+	switch (bc->family) {
+	case CHIP_R600:
+	case CHIP_RV610:
+	case CHIP_RV630:
+	case CHIP_RV670:
+	case CHIP_RV620:
+	case CHIP_RV635:
+	case CHIP_RS780:
+	case CHIP_RS880:
+		bc->chiprev = 0;
+		break;
+	case CHIP_RV770:
+	case CHIP_RV730:
+	case CHIP_RV710:
+	case CHIP_RV740:
+		bc->chiprev = 1;
+		break;
+	default:
+		R600_ERR("unknown family %d\n", bc->family);
+		return -EINVAL;
+	}
 	return 0;
 }
 
@@ -418,21 +439,11 @@ int r600_bc_build(struct r600_bc *bc)
 		switch (cf->inst) {
 		case (V_SQ_CF_ALU_WORD1_SQ_CF_INST_ALU << 3):
 			LIST_FOR_EACH_ENTRY(alu, &cf->alu, list) {
-				switch (bc->family) {
-				case CHIP_R600:
-				case CHIP_RV610:
-				case CHIP_RV630:
-				case CHIP_RV670:
-				case CHIP_RV620:
-				case CHIP_RV635:
-				case CHIP_RS780:
-				case CHIP_RS880:
+				switch(bc->chiprev) {
+				case 0:
 					r = r600_bc_alu_build(bc, alu, addr);
 					break;
-				case CHIP_RV770:
-				case CHIP_RV730:
-				case CHIP_RV710:
-				case CHIP_RV740:
+				case 1:
 					r = r700_bc_alu_build(bc, alu, addr);
 					break;
 				default:
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index 10d98af..e944bd0 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -122,6 +122,7 @@ struct r600_bc_cf {
 
 struct r600_bc {
 	enum radeon_family		family;
+	int chiprev; /* 0 - r600, 1 - r700, 2 - evergreen */
 	struct list_head		cf;
 	struct r600_bc_cf		*cf_last;
 	unsigned			ndw;




More information about the mesa-commit mailing list