mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-31 12:11:31 +08:00
Add functions to create and fill VmBindExtSetPat and VmBindExtSyncFence
Related-To: NEO-6591 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
3066b94779
commit
19c7162cf6
@@ -94,6 +94,10 @@ class IoctlHelper {
|
||||
virtual std::optional<int> getHasPageFaultParamId() = 0;
|
||||
virtual uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0;
|
||||
virtual uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0;
|
||||
virtual std::unique_ptr<uint8_t[]> createVmBindExtSetPat() = 0;
|
||||
virtual void fillVmBindExtSetPat(const std::unique_ptr<uint8_t[]> &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) = 0;
|
||||
virtual std::unique_ptr<uint8_t[]> createVmBindExtSyncFence() = 0;
|
||||
virtual void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) = 0;
|
||||
};
|
||||
|
||||
class IoctlHelperUpstream : public IoctlHelper {
|
||||
@@ -127,6 +131,10 @@ class IoctlHelperUpstream : public IoctlHelper {
|
||||
std::optional<int> getHasPageFaultParamId() override;
|
||||
uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
|
||||
uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
|
||||
std::unique_ptr<uint8_t[]> createVmBindExtSetPat() override;
|
||||
void fillVmBindExtSetPat(const std::unique_ptr<uint8_t[]> &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override;
|
||||
std::unique_ptr<uint8_t[]> createVmBindExtSyncFence() override;
|
||||
void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
|
||||
};
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
@@ -175,6 +183,10 @@ class IoctlHelperPrelim20 : public IoctlHelper {
|
||||
std::optional<int> getHasPageFaultParamId() override;
|
||||
uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
|
||||
uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
|
||||
std::unique_ptr<uint8_t[]> createVmBindExtSetPat() override;
|
||||
void fillVmBindExtSetPat(const std::unique_ptr<uint8_t[]> &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override;
|
||||
std::unique_ptr<uint8_t[]> createVmBindExtSyncFence() override;
|
||||
void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -392,4 +392,29 @@ uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, drm_i915_gem_co
|
||||
extSetparam.param.param = PRELIM_I915_CONTEXT_PARAM_RUNALONE;
|
||||
return gemCreateContextExt(drm, gcc, extSetparam);
|
||||
}
|
||||
|
||||
std::unique_ptr<uint8_t[]> IoctlHelperPrelim20::createVmBindExtSetPat() {
|
||||
return std::make_unique<uint8_t[]>(sizeof(prelim_drm_i915_vm_bind_ext_set_pat));
|
||||
};
|
||||
|
||||
void IoctlHelperPrelim20::fillVmBindExtSetPat(const std::unique_ptr<uint8_t[]> &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) {
|
||||
auto prelimVmBindExtSetPat = reinterpret_cast<prelim_drm_i915_vm_bind_ext_set_pat *>(vmBindExtSetPat.get());
|
||||
UNRECOVERABLE_IF(!prelimVmBindExtSetPat);
|
||||
prelimVmBindExtSetPat->base.name = PRELIM_I915_VM_BIND_EXT_SET_PAT;
|
||||
prelimVmBindExtSetPat->pat_index = patIndex;
|
||||
prelimVmBindExtSetPat->base.next_extension = nextExtension;
|
||||
}
|
||||
|
||||
std::unique_ptr<uint8_t[]> IoctlHelperPrelim20::createVmBindExtSyncFence() {
|
||||
return std::make_unique<uint8_t[]>(sizeof(prelim_drm_i915_vm_bind_ext_sync_fence));
|
||||
}
|
||||
|
||||
void IoctlHelperPrelim20::fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) {
|
||||
auto prelimVmBindExtSyncFence = reinterpret_cast<prelim_drm_i915_vm_bind_ext_sync_fence *>(vmBindExtSyncFence.get());
|
||||
UNRECOVERABLE_IF(!prelimVmBindExtSyncFence);
|
||||
prelimVmBindExtSyncFence->base.name = PRELIM_I915_VM_BIND_EXT_SYNC_FENCE;
|
||||
prelimVmBindExtSyncFence->base.next_extension = nextExtension;
|
||||
prelimVmBindExtSyncFence->addr = fenceAddress;
|
||||
prelimVmBindExtSyncFence->val = fenceValue;
|
||||
}
|
||||
} // namespace NEO
|
||||
|
||||
@@ -171,4 +171,12 @@ uint32_t IoctlHelperUpstream::createContextWithAccessCounters(Drm *drm, drm_i915
|
||||
uint32_t IoctlHelperUpstream::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
|
||||
return EINVAL;
|
||||
}
|
||||
std::unique_ptr<uint8_t[]> IoctlHelperUpstream::createVmBindExtSetPat() {
|
||||
return {};
|
||||
};
|
||||
void IoctlHelperUpstream::fillVmBindExtSetPat(const std::unique_ptr<uint8_t[]> &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) {}
|
||||
std::unique_ptr<uint8_t[]> IoctlHelperUpstream::createVmBindExtSyncFence() {
|
||||
return {};
|
||||
}
|
||||
void IoctlHelperUpstream::fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) {}
|
||||
} // namespace NEO
|
||||
|
||||
Reference in New Issue
Block a user