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
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 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.
- 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.
Radeon® Software Crimson Edition introduces the Crossfire API as an extension to DirectX 11. The API has:
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:
- 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.
Similar functions exist to create textures. These functions are detailed in the Crossfire guide.Code:AGSReturnCode agsDriverExtensions_CreateBuffer( AGSContext* context, const D3D11_BUFFER_DESC* desc, const D3D11_SUBRESOURCE_DATA* data, ID3D11Buffer** buffer, AGSAfrTransferType transfer_mode);