wsl/hsakmt: implement drm interfaces for dropping libdrm*

Signed-off-by: tiancyin <tianci.yin@amd.com>
This commit is contained in:
tiancyin
2024-09-18 11:32:55 +08:00
committed by Frank Min
orang tua c7b5ff64e3
melakukan b5fb17fd66
3 mengubah file dengan 45 tambahan dan 26 penghapusan
+37 -13
Melihat File
@@ -40,6 +40,7 @@
//
////////////////////////////////////////////////////////////////////////////////
#include <cstdint>
#include <xf86drm.h>
#include <amdgpu.h>
#include <amdgpu_drm.h>
@@ -59,19 +60,37 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle(
return HSAKMT_STATUS_ERROR;
}
HSAKMTAPI int hsaKmtamdgpu_query_gpu_info(void *dev,
struct amdgpu_gpu_info *info) {
HSAKMTAPI int amdgpu_query_gpu_info(amdgpu_device_handle dev,
struct amdgpu_gpu_info *info) {
wsl::thunk::WDDMDevice *pDevice =
reinterpret_cast<wsl::thunk::WDDMDevice *>(dev);
reinterpret_cast<wsl::thunk::WDDMDevice *>(dev);
memset(info, 0, sizeof(*info));
info->gpu_counter_freq = pDevice->GPUCounterFrequency() / 1000ull;
return 0;
}
HSAKMTAPI int hsaKmtamdgpu_bo_import(amdgpu_device_handle dev,
enum amdgpu_bo_handle_type type,
uint32_t shared_handle,
struct amdgpu_bo_import_result *output) {
HSAKMTAPI int amdgpu_device_get_fd(amdgpu_device_handle dev) {
return 0;
}
HSAKMTAPI int amdgpu_bo_cpu_map(amdgpu_bo_handle bo, void **cpu) {
return 0;
}
HSAKMTAPI int amdgpu_bo_free(amdgpu_bo_handle buf_handle) {
return 0;
}
HSAKMTAPI int amdgpu_bo_export(amdgpu_bo_handle bo,
enum amdgpu_bo_handle_type type,
uint32_t *shared_handle) {
*shared_handle = 0;
return 0;
}
HSAKMTAPI int amdgpu_bo_import(amdgpu_device_handle dev,
enum amdgpu_bo_handle_type type,
uint32_t shared_handle,
struct amdgpu_bo_import_result *output) {
void *MemoryAddress = nullptr;
HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &MemoryAddress);
if (ret == HSAKMT_STATUS_SUCCESS) {
@@ -84,12 +103,12 @@ HSAKMTAPI int hsaKmtamdgpu_bo_import(amdgpu_device_handle dev,
}
HSAKMTAPI int hsaKmtamdgpu_bo_va_op(amdgpu_bo_handle bo,
uint64_t offset,
uint64_t size,
uint64_t addr,
uint64_t flags,
uint32_t ops) {
HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo,
uint64_t offset,
uint64_t size,
uint64_t addr,
uint64_t flags,
uint32_t ops) {
switch(ops) {
case AMDGPU_VA_OP_MAP:
{
@@ -117,3 +136,8 @@ HSAKMTAPI int hsaKmtamdgpu_bo_va_op(amdgpu_bo_handle bo,
}
return 0;
}
HSAKMTAPI int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
void *data, unsigned long size) {
return 0;
}
+8 -3
Melihat File
@@ -92,9 +92,14 @@ hsaKmtPcSamplingStop;
hsaKmtPcSamplingSupport;
hsaKmtGetVersionCapInfo;
hsaKmtQueueRingDoorbell;
hsaKmtamdgpu_query_gpu_info;
hsaKmtamdgpu_bo_import;
hsaKmtamdgpu_bo_va_op;
amdgpu_query_gpu_info;
amdgpu_bo_import;
amdgpu_bo_va_op;
amdgpu_device_get_fd;
amdgpu_bo_cpu_map;
amdgpu_bo_free;
amdgpu_bo_export;
drmCommandWriteRead;
local: *;
};
-10
Melihat File
@@ -173,14 +173,6 @@ static HSAKMT_STATUS init_symbols(void) {
return HSAKMT_STATUS_SUCCESS;
}
static void load_libdrm_amdgpu(void) {
/* load libdrm_amdgpu */
int fd;
uint32_t major, minor;
amdgpu_device_handle device_handle;
amdgpu_device_initialize(fd, &major, &minor, &device_handle);
}
HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) {
HSAKMT_STATUS result;
int fd = -1;
@@ -204,8 +196,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) {
if (result != HSAKMT_STATUS_SUCCESS)
goto open_failed;
load_libdrm_amdgpu();
result = init_vars_from_env();
if (result != HSAKMT_STATUS_SUCCESS)
goto open_failed;