3c49c3ab0d
When there are multiple management libraries installed on a system not every one will be compatible with the current driver. This change improves our management library algorithm to build up a set of discovered libraries based on glob patterns, and then try all of them until we're able to load one without error.
36 lines
No EOL
1 KiB
C
36 lines
No EOL
1 KiB
C
#ifndef __APPLE__
|
|
#ifndef __GPU_INFO_ROCM_H__
|
|
#define __GPU_INFO_ROCM_H__
|
|
#include "gpu_info.h"
|
|
|
|
// Just enough typedef's to dlopen/dlsym for memory information
|
|
typedef enum rsmi_status_return {
|
|
RSMI_STATUS_SUCCESS = 0,
|
|
// Other values omitted for now...
|
|
} rsmi_status_t;
|
|
|
|
typedef enum rsmi_memory_type {
|
|
RSMI_MEM_TYPE_VRAM = 0,
|
|
RSMI_MEM_TYPE_VIS_VRAM,
|
|
RSMI_MEM_TYPE_GTT,
|
|
} rsmi_memory_type_t;
|
|
|
|
typedef struct rocm_handle {
|
|
void *handle;
|
|
rsmi_status_t (*initFn)(uint64_t);
|
|
rsmi_status_t (*shutdownFn)(void);
|
|
rsmi_status_t (*totalMemFn)(uint32_t, rsmi_memory_type_t, uint64_t *);
|
|
rsmi_status_t (*usageMemFn)(uint32_t, rsmi_memory_type_t, uint64_t *);
|
|
// rsmi_status_t (*getHandle)(uint32_t, uint16_t *);
|
|
} rocm_handle_t;
|
|
|
|
typedef struct rocm_init_resp {
|
|
char *err; // If err is non-null handle is invalid
|
|
rocm_handle_t rh;
|
|
} rocm_init_resp_t;
|
|
|
|
void rocm_init(char *rocm_lib_path, rocm_init_resp_t *resp);
|
|
void rocm_check_vram(rocm_handle_t rh, mem_info_t *resp);
|
|
|
|
#endif // __GPU_INFO_ROCM_H__
|
|
#endif // __APPLE__
|