From 728932ed4427b2e330d843ca75204caa9b54a47f Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Thu, 8 Nov 2018 13:05:46 +0100 Subject: [PATCH] Pass Drm object to OsContext on Linux Change-Id: I341925eef9bc892f5c321c668736bb6a3aff38f5 Signed-off-by: Dunajski, Bartosz --- runtime/os_interface/linux/CMakeLists.txt | 1 + .../os_interface/linux/os_context_linux.cpp | 11 ++++++++-- runtime/os_interface/linux/os_context_linux.h | 21 +++++++++++++++++++ .../linux/os_interface_linux_tests.cpp | 10 ++++++--- 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 runtime/os_interface/linux/os_context_linux.h diff --git a/runtime/os_interface/linux/CMakeLists.txt b/runtime/os_interface/linux/CMakeLists.txt index 1e62628509..6ae496e775 100644 --- a/runtime/os_interface/linux/CMakeLists.txt +++ b/runtime/os_interface/linux/CMakeLists.txt @@ -32,6 +32,7 @@ set(RUNTIME_SRCS_OS_INTERFACE_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/linux_inc.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.h ${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h ${CMAKE_CURRENT_SOURCE_DIR}/os_interface.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_interface.h diff --git a/runtime/os_interface/linux/os_context_linux.cpp b/runtime/os_interface/linux/os_context_linux.cpp index 72b2ed01c9..d6f34e32e9 100644 --- a/runtime/os_interface/linux/os_context_linux.cpp +++ b/runtime/os_interface/linux/os_context_linux.cpp @@ -6,12 +6,19 @@ */ #include "runtime/os_interface/os_context.h" +#include "runtime/os_interface/linux/drm_neo.h" +#include "runtime/os_interface/linux/os_context_linux.h" +#include "runtime/os_interface/linux/os_interface.h" namespace OCLRT { -class OsContext::OsContextImpl {}; + OsContext::OsContext(OSInterface *osInterface, uint32_t contextId) : contextId(contextId) { - osContextImpl = std::make_unique(); + if (osInterface) { + osContextImpl = std::make_unique(*osInterface->get()->getDrm()); + } } OsContext::~OsContext() = default; + +OsContextLinux::OsContextImpl(Drm &drm) : drm(drm) {} } // namespace OCLRT diff --git a/runtime/os_interface/linux/os_context_linux.h b/runtime/os_interface/linux/os_context_linux.h new file mode 100644 index 0000000000..4d760819bd --- /dev/null +++ b/runtime/os_interface/linux/os_context_linux.h @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2018 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "runtime/os_interface/os_context.h" + +namespace OCLRT { +class Drm; +using OsContextLinux = OsContext::OsContextImpl; + +class OsContext::OsContextImpl { + public: + OsContextImpl(Drm &drm); + + protected: + Drm &drm; +}; +} // namespace OCLRT diff --git a/unit_tests/os_interface/linux/os_interface_linux_tests.cpp b/unit_tests/os_interface/linux/os_interface_linux_tests.cpp index cb61eafdfb..bb8332c355 100644 --- a/unit_tests/os_interface/linux/os_interface_linux_tests.cpp +++ b/unit_tests/os_interface/linux/os_interface_linux_tests.cpp @@ -5,8 +5,9 @@ * */ -#include "runtime/os_interface/os_context.h" -#include "runtime/os_interface/os_interface.h" +#include "runtime/os_interface/linux/os_context_linux.h" +#include "runtime/os_interface/linux/os_interface.h" +#include "unit_tests/os_interface/linux/drm_mock.h" #include "gtest/gtest.h" namespace OCLRT { @@ -20,8 +21,11 @@ TEST(OsInterfaceTest, GivenLinuxOsInterfaceWhenDeviceHandleQueriedthenZeroIsRetu EXPECT_EQ(0u, osInterface.getDeviceHandle()); } -TEST(OsContextTest, WhenOsContextIsCreatedThenImplIsAvailable) { +TEST(OsContextTest, givenDrmWhenOsContextIsCreatedThenImplIsAvailable) { + DrmMock drmMock; OSInterface osInterface; + osInterface.get()->setDrm(&drmMock); + auto osContext = std::make_unique(&osInterface, 0u); EXPECT_NE(nullptr, osContext->get()); }