r600g: add a chiprev type for r600/r700/evergreen instead of using family
authorDave Airlie <airlied@redhat.com>
Thu, 19 Aug 2010 04:43:11 +0000 (14:43 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 19 Aug 2010 05:36:54 +0000 (15:36 +1000)
src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_asm.h

index 9ea9d4354d6952dca3f3b80a080a763cdfb8e235..e6efae4c56d3131e0f571fcbe3ba7c80605d1069 100644 (file)
@@ -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:
index 10d98afaf00ce6830a88ee82f5909c95b524f2c3..e944bd02de39d9a5cced84a91d00fad9e2f08f48 100644 (file)
@@ -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;