AMD has quietly updated linux driver source-code for Polaris GPUs, as revealed by Phoronix.
Baffin and Ellesmere confirmed
Even though Raja Koduri said AMD has no other names for Polaris 10 and Polaris 11, we all knew he was not saying the truth. Baffin and Ellesmere are real, as you can find the trace of both GPUs in linux driver.
The strange thing is that in the last update names were actually changed from Baffin and Ellesmere to Polaris 11 and Polaris 10. So despite us knowing that those codenames are real, AMD could’ve just dropped them in favour of generic Polaris 1X naming schema.
This picture confirms all Device IDs for both GPUs. As you can see there are six Polaris 11 graphics cards planned and two Polaris 10.
There are more Baffin (Polaris 11) graphics cards because Polaris 11 will be offered in both desktop and mobile segment. As for Ellesmere (Polaris 10), we can only see two cards, so these could just be R9 490X and R9 490.
According to Phoronix, it is too late to include these driver changes to Linux 4.6 source code, so they should be merged with the kernel with Linux 4.7 instead.
Here’s what I found in the source code so far
cap->data[ASIC_DATA_MEMORYTYPE_MULTIPLIER] = 4;
Basically means both Polaris 11 and Polaris 10 are using GDDR5 memory.
Update: actually there’s a function checking if the memory is GDDR5, so I think that is settled now.
/**
* Find out if memory is GDDR5.
*
* @param hwmgr the address of the powerplay hardware manager.
* @return always 0
*/
static int polaris10_get_memory_type(struct pp_hwmgr *hwmgr)
{
struct polaris10_hwmgr *data = (struct polaris10_hwmgr *)(hwmgr->backend);
uint32_t temp;temp = cgs_read_register(hwmgr->device, mmMC_SEQ_MISC0);
data->is_memory_gddr5 = (MC_SEQ_MISC0_GDDR5_VALUE ==
((temp & MC_SEQ_MISC0_GDDR5_MASK) >>
MC_SEQ_MISC0_GDDR5_SHIFT));return 0;
}
#define PPPOLARIS10_TARGETACTIVITY_DFLT 50
I’m assuming this line is about target temperature set to 50 C.
case BW_CALCS_VERSION_ELLESMERE: | case BW_CALCS_VERSION_BAFFIN: |
vbios.number_of_dram_channels = 8; | vbios.number_of_dram_channels = 4; |
vbios.dram_channel_width_in_bits = 32; | vbios.dram_channel_width_in_bits = 32; |
vbios.number_of_dram_banks = 8; | vbios.number_of_dram_banks = 8; |
…. | …. |
dceip.number_of_graphics_pipes = 6; | dceip.number_of_graphics_pipes = 5; |
Here’s a difference between ELLESMERE and BAFFIN. It appears that ELLESMERE (Polaris 10) will have 256-bit (8*32) memory bus, while BAFFIN (Polaris 11) will feature 128-bit (4*32). Also the graphics pipes are different, where Polaris 10 has 6, while Polaris 11 has 5. I don’t know if these correspond to Compute Units, but those two lines were the only differences between Polaris 10 and 11 in this file.
Source: Phoronix, FreeDesktop