5319163521
git-subtree-dir: projects/rocr-runtime/libhsakmt/include/impl git-subtree-mainline:55f7d39fa5git-subtree-split:c34ec1e52f
123 righe
3.4 KiB
C++
123 righe
3.4 KiB
C++
#ifndef _WSL_INC_THUNK_PROXY_H_
|
|
#define _WSL_INC_THUNK_PROXY_H_
|
|
|
|
#include <vector>
|
|
|
|
namespace thunk_proxy {
|
|
enum AllocDomain {
|
|
kSystem,
|
|
kLocal,
|
|
kUserMemory,
|
|
kUserQueue,
|
|
kDomainCount,
|
|
};
|
|
|
|
enum MemFlag {
|
|
kFineGrain = (1ULL << 0),
|
|
kKernarg = (1ULL << 1),
|
|
};
|
|
|
|
enum EngineFlag {
|
|
KCOMPUTE0 = (1ULL << 0),
|
|
KDRMDMA = (1ULL << 1),
|
|
KDRMDMA1 = (1ULL << 2),
|
|
};
|
|
|
|
enum SchedLevel {
|
|
kLow = 0,
|
|
kNormal = 1,
|
|
kHigh = 2,
|
|
};
|
|
|
|
struct HwsInfo {
|
|
union {
|
|
struct {
|
|
uint32_t gfxHwsEnabled : 1;
|
|
uint32_t computeHwsEnabled : 1;
|
|
uint32_t dmaHwsEnabled : 1;
|
|
uint32_t dma1HwsEnabled : 1;
|
|
uint32_t reserved : 28;
|
|
} hwsMask;
|
|
uint32_t osHwsEnableFlags;
|
|
};
|
|
uint64_t engineOrdinalMask; // Indicates which engines (by ordinal) support MES HWS
|
|
};
|
|
|
|
typedef struct {
|
|
int major;
|
|
int minor;
|
|
int stepping;
|
|
bool is_dgpu;
|
|
char product_name[MAX_PATH];
|
|
uint64_t uuid;
|
|
uint32_t family;
|
|
uint32_t device_id;
|
|
uint32_t wavefront_size;
|
|
uint32_t compute_unit_count;
|
|
uint32_t max_engine_clock_mhz;
|
|
uint32_t watch_points_num;
|
|
uint32_t pci_bus_addr;
|
|
uint32_t memory_bus_width;
|
|
uint32_t max_memory_clock_mhz;
|
|
uint64_t gpu_counter_frequency;
|
|
uint32_t wave_per_cu;
|
|
uint32_t simd_per_cu;
|
|
uint32_t max_scratch_slots_per_cu;
|
|
uint32_t num_shader_engine;
|
|
uint32_t shader_array_per_shader_engine;
|
|
uint32_t domain;
|
|
uint32_t num_gws;
|
|
uint32_t asic_revision;
|
|
uint64_t local_visible_heap_size;
|
|
uint64_t local_invisible_heap_size;
|
|
uint64_t non_local_heap_size;
|
|
uint64_t private_aperture_base;
|
|
uint64_t private_aperture_size;
|
|
uint64_t shared_aperture_base;
|
|
uint64_t shared_aperture_size;
|
|
uint32_t user_queue_size;
|
|
uint32_t lds_size;
|
|
uint32_t big_page_alignment_size;
|
|
uint32_t hw_big_page_min_alignment_size;
|
|
uint32_t hw_big_page_alignment_size;
|
|
bool enable_big_page_alignment;
|
|
uint32_t mec_fw_version;
|
|
uint32_t sdma_fw_version;
|
|
uint32_t l1_cache_size;
|
|
uint32_t l2_cache_size;
|
|
uint32_t l3_cache_size;
|
|
uint32_t gl2_cacheline_size;
|
|
uint32_t num_cp_queues;
|
|
HwsInfo hwsInfo;
|
|
std::vector<int> sdma_schedid;
|
|
uint32_t compute_schedid;
|
|
bool state_shadowing_by_cpfw;
|
|
bool platform_atomic_support;
|
|
void *adapter_info;
|
|
uint32_t kmd_version;
|
|
} DeviceInfo;
|
|
|
|
int EngineOrdinal(int engine, DeviceInfo *device_info);
|
|
bool GetHwsEnabled(int engine, DeviceInfo *device_info);
|
|
bool ShouldDisableGpuTimeout(int engine, DeviceInfo *device_info);
|
|
bool ParseAdapterInfo(D3DKMT_HANDLE adapter, DeviceInfo *device_info);
|
|
bool QueryAdapterSupported(unsigned int device_id);
|
|
|
|
uint32_t QueueEngine2EngineFlag(uint32_t queue_engine);
|
|
void SetAllocationInfo(void *data, uint64_t size, AllocDomain domain,
|
|
uint64_t addr, uint32_t mem_flags, uint32_t engine_flag, const DeviceInfo &device_info);
|
|
void GetAllocPrivDataSize(int *priv_drv_data_size, int *priv_alloc_data_size);
|
|
void FillinAllocPrivDrvData(void *drv_priv, int priv_alloc_data_size);
|
|
|
|
int GetSubmitPrivDataSize();
|
|
void FillinSubmitPrivData(void *priv_data, D3DKMT_HANDLE queue, uint64_t command_addr,
|
|
uint64_t command_size, bool is_hw_queue);
|
|
int GetHwQueuePrivDataSize();
|
|
void FillinHwQueuePrivData(void *priv_data, bool FwManagedGfxState, SchedLevel level = kNormal);
|
|
int GetContextPrivDataSize();
|
|
void FillinContextPrivData(void *priv_data, bool FwManagedGfxState);
|
|
int GetPowerOptPrivDataSize();
|
|
void FillinPowerOptPrivData(void *priv_data, bool restore);
|
|
}
|
|
#endif
|