Implement AddrLib support for GFX12

Add new files image_manager_gfx12.{h,cpp}.

Implement BUF/IMG/SAMP desc changes for GFX12.

Implement compute surface info code using AddrLib3 API (new starting
from GFX12).

Implement algorithm for choosing "best" swizzle mode (starting
from AddrLib3/GFX12, AddrLib provides only list of suitable swizzle mode,
up to client, ROCr, to choose the best).   Algorithm implemented follows
behaviour in GFX11 and behaviour for GFX12 on other platforms.

Signed-off-by: David Belanger <david.belanger@amd.com>
Change-Id: Ib344c86228a98bbac5acdab421ee2ef9b1e84eef
Signed-off-by: Chris Freehill <cfreehil@amd.com>
This commit is contained in:
David Belanger
2024-01-24 12:37:57 -05:00
committed by Chris Freehill
parent def4a6c326
commit f8a015f53e
4 changed files with 1011 additions and 4 deletions
+13 -4
View File
@@ -55,6 +55,7 @@
#include "image_manager_ai.h"
#include "image_manager_nv.h"
#include "image_manager_gfx11.h"
#include "image_manager_gfx12.h"
#include "device_info.h"
namespace rocr {
@@ -110,14 +111,22 @@ hsa_status_t ImageRuntime::CreateImageManager(hsa_agent_t agent, void* data) {
ImageManager* image_manager;
if (major_ver >= 11) {
switch (major_ver) {
case 12:
image_manager = new ImageManagerGfx12();
break;
case 11:
image_manager = new ImageManagerGfx11();
} else if (major_ver >= 10) {
break;
case 10:
image_manager = new ImageManagerNv();
} else if (major_ver >= 9) {
break;
case 9:
image_manager = new ImageManagerAi();
} else {
break;
default:
image_manager = new ImageManagerKv();
break;
}
hsa_error_code = image_manager->Initialize(agent);