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

Author: Dave Airlie <airl...@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;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to