Skip to content

Commit 51d1752

Browse files
Create a wrapper for drm_i915_gem_context_create_ext
Related-To: NEO-6852 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent bd5dc15 commit 51d1752

File tree

12 files changed

+41
-33
lines changed

12 files changed

+41
-33
lines changed

opencl/test/unit_test/linux/mock_os_layer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,10 @@ int drmGetContextParam(NEO::GemContextParam *param) {
216216
return ret;
217217
}
218218

219-
int drmContextCreate(drm_i915_gem_context_create_ext *create) {
219+
int drmContextCreate(NEO::GemContextCreateExt *create) {
220220
assert(create);
221221

222-
create->ctx_id = 1;
222+
create->contextId = 1;
223223
return failOnContextCreate;
224224
}
225225

@@ -302,7 +302,7 @@ int ioctl(int fd, unsigned long int request, ...) throw() {
302302
res = drmGetContextParam(va_arg(vl, NEO::GemContextParam *));
303303
break;
304304
case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT:
305-
res = drmContextCreate(va_arg(vl, drm_i915_gem_context_create_ext *));
305+
res = drmContextCreate(va_arg(vl, NEO::GemContextCreateExt *));
306306
break;
307307
case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY:
308308
res = drmContextDestroy(va_arg(vl, drm_i915_gem_context_destroy *));

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ void Drm::setUnrecoverableContext(uint32_t drmContextId) {
432432
}
433433

434434
uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequested, bool isCooperativeContextRequested) {
435-
drm_i915_gem_context_create_ext gcc = {};
435+
GemContextCreateExt gcc{};
436436

437437
if (DebugManager.flags.DirectSubmissionDrmContext.get() != -1) {
438438
isDirectSubmissionRequested = DebugManager.flags.DirectSubmissionDrmContext.get();
@@ -464,7 +464,7 @@ uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequeste
464464
auto ioctlResult = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
465465

466466
UNRECOVERABLE_IF(ioctlResult != 0);
467-
return gcc.ctx_id;
467+
return gcc.contextId;
468468
}
469469

470470
void Drm::destroyDrmContext(uint32_t drmContextId) {

shared/source/os_interface/linux/drm_wrappers.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,9 @@ static_assert(sizeof(GemContextCreateExtSetParam) == sizeof(drm_i915_gem_context
114114
static_assert(offsetof(GemContextCreateExtSetParam, base) == offsetof(drm_i915_gem_context_create_ext_setparam, base));
115115
static_assert(offsetof(GemContextCreateExtSetParam, param) == offsetof(drm_i915_gem_context_create_ext_setparam, param));
116116

117+
static_assert(sizeof(GemContextCreateExt) == sizeof(drm_i915_gem_context_create_ext));
118+
static_assert(offsetof(GemContextCreateExt, contextId) == offsetof(drm_i915_gem_context_create_ext, ctx_id));
119+
static_assert(offsetof(GemContextCreateExt, flags) == offsetof(drm_i915_gem_context_create_ext, flags));
120+
static_assert(offsetof(GemContextCreateExt, extensions) == offsetof(drm_i915_gem_context_create_ext, extensions));
121+
117122
} // namespace NEO

shared/source/os_interface/linux/drm_wrappers.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,10 @@ struct GemContextCreateExtSetParam {
130130
GemContextParam param;
131131
};
132132

133+
struct GemContextCreateExt {
134+
uint32_t contextId;
135+
uint32_t flags;
136+
uint64_t extensions;
137+
};
138+
133139
} // namespace NEO

shared/source/os_interface/linux/ioctl_helper.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
#include <string>
1919
#include <vector>
2020

21-
struct drm_i915_gem_context_create_ext;
22-
2321
namespace NEO {
2422
class Drm;
2523
class IoctlHelper;
@@ -99,8 +97,8 @@ class IoctlHelper {
9997
virtual std::optional<int> getHasPageFaultParamId() = 0;
10098
virtual std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> &regionInstanceClass) = 0;
10199
virtual uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) = 0;
102-
virtual uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0;
103-
virtual uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) = 0;
100+
virtual uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) = 0;
101+
virtual uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) = 0;
104102
virtual void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) = 0;
105103
virtual void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) = 0;
106104
virtual std::optional<uint64_t> getCopyClassSaturatePCIECapability() = 0;
@@ -156,8 +154,8 @@ class IoctlHelperUpstream : public IoctlHelper {
156154
std::optional<int> getHasPageFaultParamId() override;
157155
std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> &regionInstanceClass) override;
158156
uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override;
159-
uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
160-
uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
157+
uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) override;
158+
uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) override;
161159
void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override;
162160
void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
163161
std::optional<uint64_t> getCopyClassSaturatePCIECapability() override;
@@ -220,8 +218,8 @@ class IoctlHelperPrelim20 : public IoctlHelper {
220218
std::optional<int> getHasPageFaultParamId() override;
221219
std::unique_ptr<uint8_t[]> createVmControlExtRegion(const std::optional<MemoryClassInstance> &regionInstanceClass) override;
222220
uint32_t getFlagsForVmCreate(bool disableScratch, bool enablePageFault, bool useVmBind) override;
223-
uint32_t createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
224-
uint32_t createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) override;
221+
uint32_t createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) override;
222+
uint32_t createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) override;
225223
void fillVmBindExtSetPat(VmBindExtSetPatT &vmBindExtSetPat, uint64_t patIndex, uint64_t nextExtension) override;
226224
void fillVmBindExtUserFence(VmBindExtUserFenceT &vmBindExtUserFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
227225
std::optional<uint64_t> getCopyClassSaturatePCIECapability() override;

shared/source/os_interface/linux/ioctl_helper_prelim.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -393,17 +393,17 @@ uint32_t IoctlHelperPrelim20::getFlagsForVmCreate(bool disableScratch, bool enab
393393
return flags;
394394
}
395395

396-
uint32_t gemCreateContextExt(Drm *drm, drm_i915_gem_context_create_ext &gcc, GemContextCreateExtSetParam &extSetparam) {
396+
uint32_t gemCreateContextExt(Drm *drm, GemContextCreateExt &gcc, GemContextCreateExtSetParam &extSetparam) {
397397
gcc.flags |= I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS;
398398
extSetparam.base.nextExtension = gcc.extensions;
399399
gcc.extensions = reinterpret_cast<uint64_t>(&extSetparam);
400400

401401
auto ioctlResult = IoctlHelper::ioctl(drm, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
402402
UNRECOVERABLE_IF(ioctlResult != 0);
403-
return gcc.ctx_id;
403+
return gcc.contextId;
404404
}
405405

406-
uint32_t gemCreateContextAcc(Drm *drm, drm_i915_gem_context_create_ext &gcc, uint16_t trigger, uint8_t granularity) {
406+
uint32_t gemCreateContextAcc(Drm *drm, GemContextCreateExt &gcc, uint16_t trigger, uint8_t granularity) {
407407
prelim_drm_i915_gem_context_param_acc paramAcc = {};
408408
paramAcc.trigger = trigger;
409409
paramAcc.notify = 1;
@@ -424,7 +424,7 @@ uint32_t gemCreateContextAcc(Drm *drm, drm_i915_gem_context_create_ext &gcc, uin
424424

425425
return gemCreateContextExt(drm, gcc, extSetparam);
426426
}
427-
uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
427+
uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) {
428428
uint16_t trigger = 0;
429429
if (DebugManager.flags.AccessCountersTrigger.get() != -1) {
430430
trigger = static_cast<uint16_t>(DebugManager.flags.AccessCountersTrigger.get());
@@ -436,7 +436,7 @@ uint32_t IoctlHelperPrelim20::createContextWithAccessCounters(Drm *drm, drm_i915
436436
return gemCreateContextAcc(drm, gcc, trigger, granularity);
437437
}
438438

439-
uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
439+
uint32_t IoctlHelperPrelim20::createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) {
440440
GemContextCreateExtSetParam extSetparam{};
441441
extSetparam.base.name = I915_CONTEXT_CREATE_EXT_SETPARAM;
442442
extSetparam.param.param = PRELIM_I915_CONTEXT_PARAM_RUNALONE;

shared/source/os_interface/linux/ioctl_helper_upstream.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ uint32_t IoctlHelperUpstream::getFlagsForVmCreate(bool disableScratch, bool enab
188188
return 0u;
189189
}
190190

191-
uint32_t IoctlHelperUpstream::createContextWithAccessCounters(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
191+
uint32_t IoctlHelperUpstream::createContextWithAccessCounters(Drm *drm, GemContextCreateExt &gcc) {
192192
return EINVAL;
193193
}
194194

195-
uint32_t IoctlHelperUpstream::createCooperativeContext(Drm *drm, drm_i915_gem_context_create_ext &gcc) {
195+
uint32_t IoctlHelperUpstream::createCooperativeContext(Drm *drm, GemContextCreateExt &gcc) {
196196
return EINVAL;
197197
}
198198

shared/test/common/libult/linux/drm_mock.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,8 @@ int DrmMock::ioctl(unsigned long request, void *arg) {
7676

7777
if ((request == DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT) && (arg != nullptr)) {
7878
ioctlCount.contextCreate++;
79-
auto create = static_cast<drm_i915_gem_context_create_ext *>(arg);
80-
auto contextCreate = static_cast<drm_i915_gem_context_create *>(arg);
81-
contextCreate->ctx_id = this->storedDrmContextId;
79+
auto create = static_cast<GemContextCreateExt *>(arg);
80+
create->contextId = this->storedDrmContextId;
8281
this->receivedContextCreateFlags = create->flags;
8382
if (create->extensions == 0) {
8483
return this->storedRetVal;

shared/test/common/libult/linux/drm_mock_prelim_context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ int DrmMockPrelimContext::handlePrelimRequest(unsigned long request, void *arg)
5858
}
5959
} break;
6060
case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: {
61-
auto create = static_cast<drm_i915_gem_context_create_ext *>(arg);
61+
auto create = static_cast<GemContextCreateExt *>(arg);
6262
auto setParam = reinterpret_cast<GemContextCreateExtSetParam *>(create->extensions);
6363
if (setParam->param.param == PRELIM_I915_CONTEXT_PARAM_ACC) {
6464
const auto paramAcc = reinterpret_cast<prelim_drm_i915_gem_context_param_acc *>(setParam->param.value);

shared/test/common/os_interface/linux/device_command_stream_fixture.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ int DrmMockCustom::ioctl(unsigned long request, void *arg) {
171171
} break;
172172

173173
case DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT: {
174-
auto contextCreateParam = reinterpret_cast<drm_i915_gem_context_create_ext *>(arg);
175-
contextCreateParam->ctx_id = ++ioctl_cnt.contextCreate;
174+
auto contextCreateParam = static_cast<NEO::GemContextCreateExt *>(arg);
175+
contextCreateParam->contextId = ++ioctl_cnt.contextCreate;
176176
} break;
177177
case DRM_IOCTL_I915_GEM_CONTEXT_DESTROY: {
178178
ioctl_cnt.contextDestroy++;

0 commit comments

Comments
 (0)