mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
Interfaces to register resources
Change-Id: Ic587aaa5a41e4e7648211cfa730a0aa5bbc2985a Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
9981cdd9e2
commit
d363448515
@@ -11,11 +11,13 @@
|
||||
#include "shared/source/os_interface/linux/hw_device_id.h"
|
||||
#include "shared/source/os_interface/linux/memory_info.h"
|
||||
#include "shared/source/utilities/api_intercept.h"
|
||||
#include "shared/source/utilities/stackvec.h"
|
||||
|
||||
#include "drm/i915_drm.h"
|
||||
#include "engine_node.h"
|
||||
#include "igfxfmid.h"
|
||||
|
||||
#include <array>
|
||||
#include <cerrno>
|
||||
#include <fcntl.h>
|
||||
#include <memory>
|
||||
@@ -48,6 +50,16 @@ class Drm {
|
||||
friend DeviceFactory;
|
||||
|
||||
public:
|
||||
enum class ResourceClass : uint32_t {
|
||||
Elf,
|
||||
Isa,
|
||||
ModuleHeapDebugArea,
|
||||
ContextSaveArea,
|
||||
SbaTrackingBuffer,
|
||||
MaxSize
|
||||
};
|
||||
|
||||
static const std::array<const char *, size_t(ResourceClass::MaxSize)> classNames;
|
||||
virtual ~Drm();
|
||||
|
||||
virtual int ioctl(unsigned long request, void *arg);
|
||||
@@ -100,6 +112,11 @@ class Drm {
|
||||
return requirePerContextVM;
|
||||
}
|
||||
|
||||
MOCKABLE_VIRTUAL bool registerResourceClasses();
|
||||
|
||||
MOCKABLE_VIRTUAL uint32_t registerResource(ResourceClass classType, void *data, size_t size);
|
||||
MOCKABLE_VIRTUAL void unregisterResource(uint32_t handle);
|
||||
|
||||
MemoryInfo *getMemoryInfo() const {
|
||||
return memoryInfo.get();
|
||||
}
|
||||
@@ -111,6 +128,10 @@ class Drm {
|
||||
return rootDeviceEnvironment;
|
||||
}
|
||||
|
||||
bool resourceRegistrationEnabled() {
|
||||
return classHandles.size() > 0;
|
||||
}
|
||||
|
||||
static inline uint32_t createMemoryRegionId(uint16_t type, uint16_t instance) {
|
||||
return (1u << (type + 16)) | (1u << instance);
|
||||
}
|
||||
@@ -144,6 +165,8 @@ class Drm {
|
||||
std::string getSysFsPciPath();
|
||||
std::unique_ptr<uint8_t[]> query(uint32_t queryId, int32_t &length);
|
||||
|
||||
StackVec<uint32_t, size_t(ResourceClass::MaxSize)> classHandles;
|
||||
|
||||
#pragma pack(1)
|
||||
struct PCIConfig {
|
||||
uint16_t VendorID;
|
||||
|
||||
Reference in New Issue
Block a user