Adding MemoryInfo to Drm
- call queryMemoryInfo on Drm::create() Change-Id: Ib0532894f271bd4ab3dcbb281d0bddf2a01d4afe Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
parent
a7d66b0365
commit
432591a88a
|
@ -188,6 +188,8 @@ Drm *Drm::create(int32_t deviceOrdinal) {
|
||||||
printDebugString(DebugManager.flags.PrintDebugMessages.get(), stderr, "%s", "WARNING: Failed to request OCL Turbo Boost\n");
|
printDebugString(DebugManager.flags.PrintDebugMessages.get(), stderr, "%s", "WARNING: Failed to request OCL Turbo Boost\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drmObject->queryMemoryInfo();
|
||||||
|
|
||||||
drms[deviceOrdinal % drms.size()] = drmObject.release();
|
drms[deviceOrdinal % drms.size()] = drmObject.release();
|
||||||
return drms[deviceOrdinal % drms.size()];
|
return drms[deviceOrdinal % drms.size()];
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,9 +32,11 @@ set(RUNTIME_SRCS_OS_INTERFACE_LINUX
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo.h
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo_create.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_neo_create.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_neo_memory_info.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_null_device.h
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_null_device.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/linux_inc.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/linux_inc.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/memory_info.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.h
|
${CMAKE_CURRENT_SOURCE_DIR}/os_context_linux.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h
|
${CMAKE_CURRENT_SOURCE_DIR}/os_inc.h
|
||||||
|
|
|
@ -6,12 +6,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#include "runtime/os_interface/linux/memory_info.h"
|
||||||
#include "runtime/utilities/api_intercept.h"
|
#include "runtime/utilities/api_intercept.h"
|
||||||
|
|
||||||
#include "igfxfmid.h"
|
#include "igfxfmid.h"
|
||||||
|
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -68,6 +70,7 @@ class Drm {
|
||||||
MOCKABLE_VIRTUAL int getErrno();
|
MOCKABLE_VIRTUAL int getErrno();
|
||||||
void setSimplifiedMocsTableUsage(bool value);
|
void setSimplifiedMocsTableUsage(bool value);
|
||||||
bool getSimplifiedMocsTableUsage() const;
|
bool getSimplifiedMocsTableUsage() const;
|
||||||
|
void queryMemoryInfo();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool useSimplifiedMocsTable = false;
|
bool useSimplifiedMocsTable = false;
|
||||||
|
@ -77,6 +80,7 @@ class Drm {
|
||||||
int revisionId;
|
int revisionId;
|
||||||
GTTYPE eGtType;
|
GTTYPE eGtType;
|
||||||
Drm(int fd) : fd(fd), deviceId(0), revisionId(0), eGtType(GTTYPE_UNDEFINED) {}
|
Drm(int fd) : fd(fd), deviceId(0), revisionId(0), eGtType(GTTYPE_UNDEFINED) {}
|
||||||
|
std::unique_ptr<MemoryInfo> memoryInfo;
|
||||||
|
|
||||||
static bool isi915Version(int fd);
|
static bool isi915Version(int fd);
|
||||||
static int getDeviceFd(const int devType);
|
static int getDeviceFd(const int devType);
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "drm_neo.h"
|
||||||
|
|
||||||
|
namespace OCLRT {
|
||||||
|
|
||||||
|
void Drm::queryMemoryInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace OCLRT
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace OCLRT {
|
||||||
|
|
||||||
|
struct MemoryInfo {
|
||||||
|
MemoryInfo() = default;
|
||||||
|
virtual ~MemoryInfo() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
inline MemoryInfo::~MemoryInfo(){};
|
||||||
|
|
||||||
|
} // namespace OCLRT
|
|
@ -19,6 +19,7 @@ set(IGDRCL_SRCS_tests_os_interface_linux
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_command_stream_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_command_stream_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_gem_close_worker_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_gem_close_worker_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_mapper_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_mapper_tests.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_memory_info_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_memory_manager_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_memory_manager_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_memory_manager_tests.h
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_memory_manager_tests.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_memory_manager_allocate_in_device_pool_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_memory_manager_allocate_in_device_pool_tests.cpp
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "runtime/os_interface/linux/memory_info.h"
|
||||||
|
#include "unit_tests/os_interface/linux/drm_mock.h"
|
||||||
|
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
using namespace OCLRT;
|
||||||
|
|
||||||
|
TEST(DrmTest, whenQueryingMemoryInfoThenMemoryInfoIsNotCreatedAndNoIoctlIsCalled) {
|
||||||
|
std::unique_ptr<DrmMock> drm = std::make_unique<DrmMock>();
|
||||||
|
EXPECT_NE(nullptr, drm);
|
||||||
|
|
||||||
|
drm->queryMemoryInfo();
|
||||||
|
|
||||||
|
EXPECT_EQ(nullptr, drm->memoryInfo.get());
|
||||||
|
EXPECT_EQ(0u, drm->ioctlCallsCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MemoryInfo, givenMemoryInfoImplementationWhenDestructingThenDestructorIsCalled) {
|
||||||
|
struct MemoryInfoImpl : public OCLRT::MemoryInfo {
|
||||||
|
MemoryInfoImpl() {}
|
||||||
|
~MemoryInfoImpl() override{};
|
||||||
|
};
|
||||||
|
|
||||||
|
MemoryInfoImpl memoryInfoImpl;
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ static const int mockFd = 33;
|
||||||
// Mock DRM class that responds to DRM_IOCTL_I915_GETPARAMs
|
// Mock DRM class that responds to DRM_IOCTL_I915_GETPARAMs
|
||||||
class DrmMock : public Drm {
|
class DrmMock : public Drm {
|
||||||
public:
|
public:
|
||||||
|
using Drm::memoryInfo;
|
||||||
using Drm::preemptionSupported;
|
using Drm::preemptionSupported;
|
||||||
|
|
||||||
DrmMock() : Drm(mockFd) {
|
DrmMock() : Drm(mockFd) {
|
||||||
|
@ -39,6 +40,8 @@ class DrmMock : public Drm {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int ioctl(unsigned long request, void *arg) override {
|
int ioctl(unsigned long request, void *arg) override {
|
||||||
|
ioctlCallsCount++;
|
||||||
|
|
||||||
if ((request == DRM_IOCTL_I915_GETPARAM) && (arg != nullptr)) {
|
if ((request == DRM_IOCTL_I915_GETPARAM) && (arg != nullptr)) {
|
||||||
drm_i915_getparam_t *gp = (drm_i915_getparam_t *)arg;
|
drm_i915_getparam_t *gp = (drm_i915_getparam_t *)arg;
|
||||||
if (false
|
if (false
|
||||||
|
@ -243,6 +246,7 @@ class DrmMock : public Drm {
|
||||||
int StoredExecSoftPin = 0;
|
int StoredExecSoftPin = 0;
|
||||||
uint32_t StoredCtxId = 1;
|
uint32_t StoredCtxId = 1;
|
||||||
uint32_t receivedDestroyContextId = 0;
|
uint32_t receivedDestroyContextId = 0;
|
||||||
|
uint32_t ioctlCallsCount = 0;
|
||||||
|
|
||||||
uint32_t receivedContextParamRequestCount = 0;
|
uint32_t receivedContextParamRequestCount = 0;
|
||||||
drm_i915_gem_context_param receivedContextParamRequest = {};
|
drm_i915_gem_context_param receivedContextParamRequest = {};
|
||||||
|
|
Loading…
Reference in New Issue