From 81609c7695abae7ced08d061c2f86c538e0309a7 Mon Sep 17 00:00:00 2001 From: Lukasz Jobczyk Date: Mon, 9 Aug 2021 14:33:44 +0000 Subject: [PATCH] Use bind fence atomically Signed-off-by: Lukasz Jobczyk --- shared/source/os_interface/linux/drm_neo.cpp | 4 ++++ shared/source/os_interface/linux/drm_neo.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 0b1d99537f..233eaf093c 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -420,6 +420,10 @@ int Drm::queryVmId(uint32_t drmContextId, uint32_t &vmId) { return retVal; } +std::unique_lock Drm::lockBindFenceMutex() { + return std::unique_lock(this->bindFenceMutex); +} + int Drm::getEuTotal(int &euTotal) { return getParamIoctl(I915_PARAM_EU_TOTAL, &euTotal); } diff --git a/shared/source/os_interface/linux/drm_neo.h b/shared/source/os_interface/linux/drm_neo.h index 68c2f5ba7c..e9a87d6b7c 100644 --- a/shared/source/os_interface/linux/drm_neo.h +++ b/shared/source/os_interface/linux/drm_neo.h @@ -230,6 +230,8 @@ class Drm : public DriverModel { static std::vector> discoverDevices(ExecutionEnvironment &executionEnvironment); + std::unique_lock lockBindFenceMutex(); + protected: Drm(std::unique_ptr hwDeviceIdIn, RootDeviceEnvironment &rootDeviceEnvironment); @@ -275,6 +277,7 @@ class Drm : public DriverModel { TopologyMap topologyMap; std::unordered_map> ioctlStatistics; + std::mutex bindFenceMutex; std::array pagingFence; std::array fenceVal; StackVec classHandles;