OSDN Git Service

r600g: add support for ontario APUs
authorAlex Deucher <alexdeucher@gmail.com>
Mon, 22 Nov 2010 22:47:24 +0000 (17:47 -0500)
committerAlex Deucher <alexdeucher@gmail.com>
Mon, 22 Nov 2010 23:01:26 +0000 (18:01 -0500)
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600.h
src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_pipe.c
src/gallium/winsys/r600/drm/r600.c
src/gallium/winsys/r600/drm/r600_drm.c
src/gallium/winsys/r600/drm/radeon_pciid.c

index 26dad7b..0509522 100644 (file)
@@ -1036,11 +1036,33 @@ void evergreen_init_config(struct r600_pipe_context *rctx)
                num_hs_stack_entries = 85;
                num_ls_stack_entries = 85;
                break;
+       case CHIP_PALM:
+               num_ps_gprs = 93;
+               num_vs_gprs = 46;
+               num_temp_gprs = 4;
+               num_gs_gprs = 31;
+               num_es_gprs = 31;
+               num_hs_gprs = 23;
+               num_ls_gprs = 23;
+               num_ps_threads = 96;
+               num_vs_threads = 16;
+               num_gs_threads = 16;
+               num_es_threads = 16;
+               num_hs_threads = 16;
+               num_ls_threads = 16;
+               num_ps_stack_entries = 42;
+               num_vs_stack_entries = 42;
+               num_gs_stack_entries = 42;
+               num_es_stack_entries = 42;
+               num_hs_stack_entries = 42;
+               num_ls_stack_entries = 42;
+               break;
        }
 
        tmp = 0x00000000;
        switch (family) {
        case CHIP_CEDAR:
+       case CHIP_PALM:
                break;
        default:
                tmp |= S_008C00_VC_ENABLE(1);
index a617a5b..2ab60f3 100644 (file)
@@ -91,6 +91,7 @@ enum radeon_family {
        CHIP_JUNIPER,
        CHIP_CYPRESS,
        CHIP_HEMLOCK,
+       CHIP_PALM,
        CHIP_LAST,
 };
 
index ba1471e..edadedf 100644 (file)
@@ -151,6 +151,7 @@ int r600_bc_init(struct r600_bc *bc, enum radeon_family family)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                bc->chiprev = CHIPREV_EVERGREEN;
                break;
        default:
index cb8dd44..511e52f 100644 (file)
@@ -147,6 +147,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                rctx->context.draw_vbo = evergreen_draw;
                evergreen_init_state_functions(rctx);
                if (evergreen_context_init(&rctx->ctx, rctx->radeon)) {
@@ -238,6 +239,7 @@ static const char *r600_get_family_name(enum radeon_family family)
        case CHIP_JUNIPER: return "AMD JUNIPER";
        case CHIP_CYPRESS: return "AMD CYPRESS";
        case CHIP_HEMLOCK: return "AMD HEMLOCK";
+       case CHIP_PALM: return "AMD PALM";
        default: return "AMD unknown";
        }
 }
index b22f972..f5e53e2 100644 (file)
@@ -98,6 +98,7 @@ struct radeon *r600_new(int fd, unsigned device)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                break;
        case CHIP_R100:
        case CHIP_RV100:
@@ -154,6 +155,7 @@ struct radeon *r600_new(int fd, unsigned device)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                r600->chip_class = EVERGREEN;
                break;
        default:
index 6742993..8b1d88a 100644 (file)
@@ -150,6 +150,7 @@ struct radeon *radeon_new(int fd, unsigned device)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                break;
        case CHIP_R100:
        case CHIP_RV100:
@@ -211,6 +212,7 @@ struct radeon *radeon_new(int fd, unsigned device)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                radeon->chip_class = EVERGREEN;
                /* set default group bytes, overridden by tiling info ioctl */
                radeon->tiling_info.group_bytes = 512;
index bd82158..18bddc1 100644 (file)
@@ -441,6 +441,10 @@ struct pci_id radeon_pci_id[] = {
        {0x1002, 0x9713, CHIP_RS880},
        {0x1002, 0x9714, CHIP_RS880},
        {0x1002, 0x9715, CHIP_RS880},
+       {0x1002, 0x9802, CHIP_PALM},
+       {0x1002, 0x9803, CHIP_PALM},
+       {0x1002, 0x9804, CHIP_PALM},
+       {0x1002, 0x9805, CHIP_PALM},
        {0, 0},
 };
 
@@ -477,6 +481,7 @@ int radeon_is_family_compatible(unsigned family1, unsigned family2)
        case CHIP_JUNIPER:
        case CHIP_CYPRESS:
        case CHIP_HEMLOCK:
+       case CHIP_PALM:
                switch (family2) {
                case CHIP_R600:
                case CHIP_RV610:
@@ -495,6 +500,7 @@ int radeon_is_family_compatible(unsigned family1, unsigned family2)
                case CHIP_JUNIPER:
                case CHIP_CYPRESS:
                case CHIP_HEMLOCK:
+               case CHIP_PALM:
                        return 1;
                default:
                        return 0;