1515#include " shared/source/utilities/stackvec.h"
1616
1717#include " drm/i915_drm.h"
18+ #include " engine_limits.h"
1819#include " engine_node.h"
1920#include " igfxfmid.h"
2021
@@ -125,6 +126,9 @@ class Drm {
125126 bool isContextDebugSupported () { return contextDebugSupported; }
126127 MOCKABLE_VIRTUAL void setContextDebugFlag (uint32_t drmContextId);
127128
129+ void setDirectSubmissionActive (bool value) { this ->directSubmissionActive = value; }
130+ bool isDirectSubmissionActive () { return this ->directSubmissionActive ; }
131+
128132 MOCKABLE_VIRTUAL bool isVmBindAvailable ();
129133 MOCKABLE_VIRTUAL bool registerResourceClasses ();
130134
@@ -169,6 +173,10 @@ class Drm {
169173 return hwDeviceId->getPciPath ();
170174 }
171175
176+ void waitForBind (uint32_t vmHandleId);
177+ uint64_t getNextFenceVal (uint32_t vmHandleId) { return ++fenceVal[vmHandleId]; }
178+ uint64_t *getFenceAddr (uint32_t vmHandleId) { return &pagingFence[vmHandleId]; }
179+
172180 protected:
173181 int getQueueSliceCount (drm_i915_gem_context_param_sseu *sseu);
174182 bool translateTopologyInfo (const drm_i915_query_topology_info *queryTopologyInfo, int &sliceCount, int &subSliceCount, int &euCount);
@@ -180,6 +188,7 @@ class Drm {
180188 bool nonPersistentContextsSupported = false ;
181189 bool requirePerContextVM = false ;
182190 bool bindAvailable = false ;
191+ bool directSubmissionActive = false ;
183192 bool contextDebugSupported = false ;
184193 std::once_flag checkBindOnce;
185194 std::unique_ptr<HwDeviceId> hwDeviceId;
@@ -196,6 +205,9 @@ class Drm {
196205 std::unique_ptr<MemoryInfo> memoryInfo;
197206 std::vector<uint32_t > virtualMemoryIds;
198207
208+ std::array<uint64_t , EngineLimits::maxHandleCount> pagingFence;
209+ std::array<uint64_t , EngineLimits::maxHandleCount> fenceVal;
210+
199211 std::string getSysFsPciPath ();
200212 std::unique_ptr<uint8_t []> query (uint32_t queryId, uint32_t queryItemFlags, int32_t &length);
201213
0 commit comments