AMD releases CrossFire API

Kaotik

Drunk Member
Legend
Supporter
http://gpuopen.com/
http://gpuopen.com/amd-crossfire-api/

"Add-on" API to work with DX11, gives devs some control over CF, making it more efficient

The Crossfire guide describes the limitations of the default AFR implementation. In summary:

  • The driver does not know what resources need tracking. It therefore tracks all of them by default.
  • The driver does not have knowledge of what region in a resource is updated. If a resource is stale all of it will be transferred.
  • The driver has to start the transfer at the end of the frame even if the resource is only used at the beginning of the frame.
  • The driver uses heuristics to detect if a resource is stale. The heuristics can fail resulting in rendering artifacts.
The solution to all above limitations is to give developers control over what gets transferred between GPUs, when to start a transfer and how to wait for the transfer to finish.

Radeon® Software Crimson Edition introduces the Crossfire API as an extension to DirectX 11. The API has:

  • Functions to enable or disable a transfer for a resource.
  • Functions to select a transfer mode for a resource.
  • Functions to select when to start a transfer.
  • Synchronization functions to avoid data hazard.
Selecting a transfer mode is done at resource creation time. For this purpose, the Crossfire API provides resource creation functions that are very similar to DirectX 11 functions with the addition of a transfer mode flag. For instance, buffers can be created with the function:
Code:
AGSReturnCode agsDriverExtensions_CreateBuffer(
  AGSContext* context,
  const D3D11_BUFFER_DESC* desc, 
  const D3D11_SUBRESOURCE_DATA* data, 
  ID3D11Buffer** buffer, 
  AGSAfrTransferType transfer_mode);
Similar functions exist to create textures. These functions are detailed in the Crossfire guide.
 
What does change from previous AGS crossfire?

Anyway, outside AFR/SFR, linked adapter mode has no more reason to be supported.
 
Back
Top