Create a wrapper for drm_i915_gem_context_create_ext_setparam
Related-To: NEO-6852, NEO-6999 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
parent
b934a3f5cb
commit
b0e75b18fd
|
@ -52,7 +52,7 @@ void DrmMockCustomPrelimContext::execBufferExtensions(void *arg) {
|
|||
const auto execbuf = reinterpret_cast<NEO::MockExecBuffer *>(arg);
|
||||
if ((execbuf->hasUseExtensionsFlag()) &&
|
||||
(execbuf->getCliprectsPtr() != 0)) {
|
||||
i915_user_extension *base = reinterpret_cast<i915_user_extension *>(execbuf->getCliprectsPtr());
|
||||
DrmUserExtension *base = reinterpret_cast<DrmUserExtension *>(execbuf->getCliprectsPtr());
|
||||
if (base->name == PRELIM_DRM_I915_GEM_EXECBUFFER_EXT_USER_FENCE) {
|
||||
prelim_drm_i915_gem_execbuffer_ext_user_fence *userFenceExt =
|
||||
reinterpret_cast<prelim_drm_i915_gem_execbuffer_ext_user_fence *>(execbuf->getCliprectsPtr());
|
||||
|
|
|
@ -441,7 +441,7 @@ uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequeste
|
|||
gcc.flags |= ioctlHelper->getDirectSubmissionFlag();
|
||||
}
|
||||
|
||||
drm_i915_gem_context_create_ext_setparam extSetparam = {};
|
||||
GemContextCreateExtSetParam extSetparam = {};
|
||||
|
||||
if (drmVmId > 0) {
|
||||
extSetparam.base.name = I915_CONTEXT_CREATE_EXT_SETPARAM;
|
||||
|
|
|
@ -104,4 +104,14 @@ static_assert(offsetof(GemContextParam, size) == offsetof(drm_i915_gem_context_p
|
|||
static_assert(offsetof(GemContextParam, param) == offsetof(drm_i915_gem_context_param, param));
|
||||
static_assert(offsetof(GemContextParam, value) == offsetof(drm_i915_gem_context_param, value));
|
||||
|
||||
static_assert(sizeof(DrmUserExtension) == sizeof(i915_user_extension));
|
||||
static_assert(offsetof(DrmUserExtension, nextExtension) == offsetof(i915_user_extension, next_extension));
|
||||
static_assert(offsetof(DrmUserExtension, name) == offsetof(i915_user_extension, name));
|
||||
static_assert(offsetof(DrmUserExtension, flags) == offsetof(i915_user_extension, flags));
|
||||
static_assert(offsetof(DrmUserExtension, reserved) == offsetof(i915_user_extension, rsvd));
|
||||
|
||||
static_assert(sizeof(GemContextCreateExtSetParam) == sizeof(drm_i915_gem_context_create_ext_setparam));
|
||||
static_assert(offsetof(GemContextCreateExtSetParam, base) == offsetof(drm_i915_gem_context_create_ext_setparam, base));
|
||||
static_assert(offsetof(GemContextCreateExtSetParam, param) == offsetof(drm_i915_gem_context_create_ext_setparam, param));
|
||||
|
||||
} // namespace NEO
|
||||
|
|
|
@ -118,4 +118,16 @@ struct GemContextParam {
|
|||
uint64_t value;
|
||||
};
|
||||
|
||||
struct DrmUserExtension {
|
||||
uint64_t nextExtension;
|
||||
uint32_t name;
|
||||
uint32_t flags;
|
||||
uint32_t reserved[4];
|
||||
};
|
||||
|
||||
struct GemContextCreateExtSetParam {
|
||||
DrmUserExtension base;
|
||||
GemContextParam param;
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
|
|
@ -393,9 +393,9 @@ uint32_t IoctlHelperPrelim20::getFlagsForVmCreate(bool disableScratch, bool enab
|
|||
return flags;
|
||||
}
|
||||
|
||||
uint32_t gemCreateContextExt(Drm *drm, drm_i915_gem_context_create_ext &gcc, drm_i915_gem_context_create_ext_setparam &extSetparam) {
|
||||
uint32_t gemCreateContextExt(Drm *drm, drm_i915_gem_context_create_ext &gcc, GemContextCreateExtSetParam &extSetparam) {
|
||||
gcc.flags |= I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS;
|
||||
extSetparam.base.next_extension = gcc.extensions;
|
||||
extSetparam.base.nextExtension = gcc.extensions;
|
||||
gcc.extensions = reinterpret_cast<uint64_t>(&extSetparam);
|
||||
|
||||
auto ioctlResult = IoctlHelper::ioctl(drm, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
|
||||
|
@ -409,16 +409,16 @@ uint32_t gemCreateContextAcc(Drm *drm, drm_i915_gem_context_create_ext &gcc, uin
|
|||
paramAcc.notify = 1;
|
||||
paramAcc.granularity = granularity;
|
||||
|
||||
i915_user_extension userExt = {};
|
||||
DrmUserExtension userExt{};
|
||||
userExt.name = I915_CONTEXT_CREATE_EXT_SETPARAM;
|
||||
|
||||
drm_i915_gem_context_param ctxParam = {};
|
||||
GemContextParam ctxParam = {};
|
||||
ctxParam.param = PRELIM_I915_CONTEXT_PARAM_ACC;
|
||||
ctxParam.ctx_id = 0;
|
||||
ctxParam.contextId = 0;
|
||||
ctxParam.size = sizeof(paramAcc);
|
||||
ctxParam.value = reinterpret_cast<uint64_t>(¶mAcc);
|
||||
|
||||
drm_i915_gem_context_create_ext_setparam extSetparam = {};
|
||||
GemContextCreateExtSetParam extSetparam{};
|
||||
extSetparam.base = userExt;
|
||||
extSetparam.param = ctxParam;
|
||||
|
||||
|
@ -437,7 +437,7 @@ uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, drm_i915
|
|||
}
|
||||
|
||||
uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
|
||||
struct drm_i915_gem_context_create_ext_setparam extSetparam = {};
|
||||
GemContextCreateExtSetParam extSetparam{};
|
||||
extSetparam.base.name = I915_CONTEXT_CREATE_EXT_SETPARAM;
|
||||
extSetparam.param.param = PRELIM_I915_CONTEXT_PARAM_RUNALONE;
|
||||
return gemCreateContextExt(drm, gcc, extSetparam);
|
||||
|
|
|
@ -83,7 +83,7 @@ int DrmMock::ioctl(unsigned long request, void *arg) {
|
|||
if (create->extensions == 0) {
|
||||
return this->storedRetVal;
|
||||
}
|
||||
receivedContextCreateSetParam = *reinterpret_cast<drm_i915_gem_context_create_ext_setparam *>(create->extensions);
|
||||
receivedContextCreateSetParam = *reinterpret_cast<GemContextCreateExtSetParam *>(create->extensions);
|
||||
if (receivedContextCreateSetParam.base.name == I915_CONTEXT_CREATE_EXT_SETPARAM) {
|
||||
receivedContextParamRequestCount++;
|
||||
receivedContextParamRequest = *reinterpret_cast<GemContextParam *>(&receivedContextCreateSetParam.param);
|
||||
|
|
|
@ -198,7 +198,7 @@ class DrmMock : public Drm {
|
|||
uint32_t passedContextDebugId = std::numeric_limits<uint32_t>::max();
|
||||
std::vector<drm_i915_reset_stats> resetStatsToReturn{};
|
||||
|
||||
drm_i915_gem_context_create_ext_setparam receivedContextCreateSetParam = {};
|
||||
GemContextCreateExtSetParam receivedContextCreateSetParam = {};
|
||||
uint32_t receivedContextCreateFlags = 0;
|
||||
uint32_t receivedDestroyContextId = 0;
|
||||
uint32_t ioctlCallsCount = 0;
|
||||
|
|
|
@ -59,7 +59,7 @@ int DrmMockPrelimContext::handlePrelimRequest(unsigned long request, void *arg)
|
|||
} break;
|
||||
case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: {
|
||||
auto create = static_cast<drm_i915_gem_context_create_ext *>(arg);
|
||||
auto setParam = reinterpret_cast<drm_i915_gem_context_create_ext_setparam *>(create->extensions);
|
||||
auto setParam = reinterpret_cast<GemContextCreateExtSetParam *>(create->extensions);
|
||||
if (setParam->param.param == PRELIM_I915_CONTEXT_PARAM_ACC) {
|
||||
const auto paramAcc = reinterpret_cast<prelim_drm_i915_gem_context_param_acc *>(setParam->param.value);
|
||||
receivedContextParamAcc = GemContextParamAcc{paramAcc->trigger, paramAcc->notify, paramAcc->granularity};
|
||||
|
@ -422,7 +422,7 @@ void DrmMockPrelimContext::storeVmBindExtensions(uint64_t ptr, bool bind) {
|
|||
}
|
||||
|
||||
size_t uuidIndex{0};
|
||||
auto baseExt = reinterpret_cast<i915_user_extension *>(ptr);
|
||||
auto baseExt = reinterpret_cast<DrmUserExtension *>(ptr);
|
||||
while (baseExt) {
|
||||
if (baseExt->name == PRELIM_I915_VM_BIND_EXT_USER_FENCE) {
|
||||
const auto *ext = reinterpret_cast<prelim_drm_i915_vm_bind_ext_user_fence *>(baseExt);
|
||||
|
@ -439,7 +439,7 @@ void DrmMockPrelimContext::storeVmBindExtensions(uint64_t ptr, bool bind) {
|
|||
}
|
||||
}
|
||||
|
||||
baseExt = reinterpret_cast<i915_user_extension *>(baseExt->next_extension);
|
||||
baseExt = reinterpret_cast<DrmUserExtension *>(baseExt->nextExtension);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,12 +70,12 @@ TEST(DrmQueryTest, givenCooperativeEngineWhenCreateDrmContextThenRunAloneContext
|
|||
const auto &extSetparam = drm.receivedContextCreateSetParam;
|
||||
|
||||
EXPECT_EQ(static_cast<uint32_t>(I915_CONTEXT_CREATE_EXT_SETPARAM), extSetparam.base.name);
|
||||
EXPECT_EQ(0u, extSetparam.base.next_extension);
|
||||
EXPECT_EQ(0u, extSetparam.base.nextExtension);
|
||||
EXPECT_EQ(0u, extSetparam.base.flags);
|
||||
|
||||
EXPECT_EQ(static_cast<uint64_t>(DrmPrelimHelper::getRunAloneContextParam()), extSetparam.param.param);
|
||||
EXPECT_EQ(0u, extSetparam.param.size);
|
||||
EXPECT_EQ(0u, extSetparam.param.ctx_id);
|
||||
EXPECT_EQ(0u, extSetparam.param.contextId);
|
||||
EXPECT_EQ(0u, extSetparam.param.value);
|
||||
}
|
||||
|
||||
|
@ -98,12 +98,12 @@ TEST(DrmQueryTest, givenForceRunAloneContextFlagSetWhenCreateDrmContextThenRunAl
|
|||
|
||||
auto extSetparam = drm.receivedContextCreateSetParam;
|
||||
EXPECT_EQ(static_cast<uint32_t>(I915_CONTEXT_CREATE_EXT_SETPARAM), extSetparam.base.name);
|
||||
EXPECT_EQ(0u, extSetparam.base.next_extension);
|
||||
EXPECT_EQ(0u, extSetparam.base.nextExtension);
|
||||
EXPECT_EQ(0u, extSetparam.base.flags);
|
||||
|
||||
EXPECT_EQ(static_cast<uint64_t>(DrmPrelimHelper::getRunAloneContextParam()), extSetparam.param.param);
|
||||
EXPECT_EQ(0u, extSetparam.param.size);
|
||||
EXPECT_EQ(0u, extSetparam.param.ctx_id);
|
||||
EXPECT_EQ(0u, extSetparam.param.contextId);
|
||||
EXPECT_EQ(0u, extSetparam.param.value);
|
||||
}
|
||||
}
|
||||
|
@ -124,12 +124,12 @@ TEST(DrmQueryTest, givenCreateContextWithAccessCountersWhenDrmContextIsCreatedTh
|
|||
auto extSetparam = drm.receivedContextCreateSetParam;
|
||||
|
||||
EXPECT_EQ(static_cast<uint32_t>(I915_CONTEXT_CREATE_EXT_SETPARAM), extSetparam.base.name);
|
||||
EXPECT_EQ(0u, extSetparam.base.next_extension);
|
||||
EXPECT_EQ(0u, extSetparam.base.nextExtension);
|
||||
EXPECT_EQ(0u, extSetparam.base.flags);
|
||||
|
||||
EXPECT_EQ(static_cast<uint64_t>(DrmPrelimHelper::getAccContextParam()), extSetparam.param.param);
|
||||
EXPECT_EQ(DrmPrelimHelper::getAccContextParamSize(), extSetparam.param.size);
|
||||
EXPECT_EQ(0u, extSetparam.param.ctx_id);
|
||||
EXPECT_EQ(0u, extSetparam.param.contextId);
|
||||
EXPECT_NE(0u, extSetparam.param.value);
|
||||
|
||||
auto paramAcc = drm.context.receivedContextParamAcc;
|
||||
|
@ -158,12 +158,12 @@ TEST(DrmQueryTest, givenCreateContextWithAccessCounterWhenDrmContextIsCreatedThe
|
|||
auto extSetparam = drm.receivedContextCreateSetParam;
|
||||
|
||||
EXPECT_EQ(static_cast<uint32_t>(I915_CONTEXT_CREATE_EXT_SETPARAM), extSetparam.base.name);
|
||||
EXPECT_EQ(0u, extSetparam.base.next_extension);
|
||||
EXPECT_EQ(0u, extSetparam.base.nextExtension);
|
||||
EXPECT_EQ(0u, extSetparam.base.flags);
|
||||
|
||||
EXPECT_EQ(static_cast<uint64_t>(DrmPrelimHelper::getAccContextParam()), extSetparam.param.param);
|
||||
EXPECT_EQ(DrmPrelimHelper::getAccContextParamSize(), extSetparam.param.size);
|
||||
EXPECT_EQ(0u, extSetparam.param.ctx_id);
|
||||
EXPECT_EQ(0u, extSetparam.param.contextId);
|
||||
EXPECT_NE(0u, extSetparam.param.value);
|
||||
|
||||
auto paramAcc = drm.context.receivedContextParamAcc;
|
||||
|
@ -193,12 +193,12 @@ TEST(DrmQueryTest, givenCreateContextWithAccessCounterWhenDrmContextIsCreatedThe
|
|||
auto extSetparam = drm.receivedContextCreateSetParam;
|
||||
|
||||
EXPECT_EQ(static_cast<uint32_t>(I915_CONTEXT_CREATE_EXT_SETPARAM), extSetparam.base.name);
|
||||
EXPECT_EQ(0u, extSetparam.base.next_extension);
|
||||
EXPECT_EQ(0u, extSetparam.base.nextExtension);
|
||||
EXPECT_EQ(0u, extSetparam.base.flags);
|
||||
|
||||
EXPECT_EQ(static_cast<uint64_t>(DrmPrelimHelper::getAccContextParam()), extSetparam.param.param);
|
||||
EXPECT_EQ(DrmPrelimHelper::getAccContextParamSize(), extSetparam.param.size);
|
||||
EXPECT_EQ(0u, extSetparam.param.ctx_id);
|
||||
EXPECT_EQ(0u, extSetparam.param.contextId);
|
||||
EXPECT_NE(0u, extSetparam.param.value);
|
||||
|
||||
auto paramAcc = drm.context.receivedContextParamAcc;
|
||||
|
|
Loading…
Reference in New Issue