Beispiel #1
0
bool
initAddrLib()
{
   ADDR_CREATE_INPUT input;
   ADDR_CREATE_OUTPUT output;
   std::memset(&input, 0, sizeof(input));
   std::memset(&output, 0, sizeof(output));

   input.size = sizeof(ADDR_CREATE_INPUT);
   output.size = sizeof(ADDR_CREATE_OUTPUT);

   input.chipEngine = CIASICIDGFXENGINE_R600;
   input.chipFamily = 0x51;
   input.chipRevision = 71;
   input.createFlags.fillSizeFields = 1;
   input.regValue.gbAddrConfig = 0x44902;

   input.callbacks.allocSysMem = &allocSysMem;
   input.callbacks.freeSysMem = &freeSysMem;

   auto result = AddrCreate(&input, &output);

   if (result != ADDR_OK) {
      return false;
   }

   gAddrLibHandle = output.hLib;
   return true;
}
Beispiel #2
0
ADDR_HANDLE amdgpu_addr_create(struct amdgpu_winsys *ws)
{
   ADDR_CREATE_INPUT addrCreateInput = {0};
   ADDR_CREATE_OUTPUT addrCreateOutput = {0};
   ADDR_REGISTER_VALUE regValue = {0};
   ADDR_CREATE_FLAGS createFlags = {{0}};
   ADDR_E_RETURNCODE addrRet;

   addrCreateInput.size = sizeof(ADDR_CREATE_INPUT);
   addrCreateOutput.size = sizeof(ADDR_CREATE_OUTPUT);

   regValue.noOfBanks = ws->amdinfo.mc_arb_ramcfg & 0x3;
   regValue.gbAddrConfig = ws->amdinfo.gb_addr_cfg;
   regValue.noOfRanks = (ws->amdinfo.mc_arb_ramcfg & 0x4) >> 2;

   regValue.backendDisables = ws->amdinfo.backend_disable[0];
   regValue.pTileConfig = ws->amdinfo.gb_tile_mode;
   regValue.noOfEntries = ARRAY_SIZE(ws->amdinfo.gb_tile_mode);
   if (ws->info.chip_class == SI) {
      regValue.pMacroTileConfig = NULL;
      regValue.noOfMacroEntries = 0;
   } else {
      regValue.pMacroTileConfig = ws->amdinfo.gb_macro_tile_mode;
      regValue.noOfMacroEntries = ARRAY_SIZE(ws->amdinfo.gb_macro_tile_mode);
   }

   createFlags.value = 0;
   createFlags.useTileIndex = 1;
   createFlags.degradeBaseLevel = 1;
   createFlags.useHtileSliceAlign = 1;

   addrCreateInput.chipEngine = CIASICIDGFXENGINE_SOUTHERNISLAND;
   addrCreateInput.chipFamily = ws->family;
   addrCreateInput.chipRevision = ws->rev_id;
   addrCreateInput.createFlags = createFlags;
   addrCreateInput.callbacks.allocSysMem = allocSysMem;
   addrCreateInput.callbacks.freeSysMem = freeSysMem;
   addrCreateInput.callbacks.debugPrint = 0;
   addrCreateInput.regValue = regValue;

   addrRet = AddrCreate(&addrCreateInput, &addrCreateOutput);
   if (addrRet != ADDR_OK)
      return NULL;

   return addrCreateOutput.hLib;
}