diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-02-16 15:09:20 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2011-02-16 15:20:22 -0500 |
commit | d0f8bffbbc26818eccdd305ef142387dc4975bba (patch) | |
tree | 24d201ea87d99257f0304707f2517964e5d342c0 /src | |
parent | 0471d8412acd82e281a35fc4c6bb2d53b1ff5802 (diff) |
kms: add tiling support for evergreen/NI
- requires 2.6.37 or newer
- 1D only at the moment
- disabled by default
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_kms.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/radeon_kms.c b/src/radeon_kms.c index 269a850b..158dc57c 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -472,8 +472,38 @@ static Bool r600_get_tile_config(ScrnInfoPtr pScrn) info->tile_config = tmp; info->r7xx_bank_op = 0; if (info->ChipFamily >= CHIP_FAMILY_CEDAR) { - /* for now */ - return FALSE; + if (info->dri->pKernelDRMVersion->version_minor >= 7) { + switch (info->tile_config & 0xf) { + case 0: + info->num_channels = 1; + break; + case 1: + info->num_channels = 2; + break; + case 2: + info->num_channels = 4; + break; + case 3: + info->num_channels = 8; + break; + default: + return FALSE; + } + + info->num_banks = (info->tile_config & 0xf0) >> 4; + + switch ((info->tile_config & 0xf00) >> 8) { + case 0: + info->group_bytes = 256; + break; + case 1: + info->group_bytes = 512; + break; + default: + return FALSE; + } + } else + return FALSE; } else { switch((info->tile_config & 0xe) >> 1) { case 0: |