2021-11-13 01:34:33 +08:00
|
|
|
/*
|
2022-05-18 05:40:34 +08:00
|
|
|
* Copyright (C) 2021-2022 Intel Corporation
|
2021-11-13 01:34:33 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "shared/test/common/libult/linux/drm_mock.h"
|
|
|
|
#include "shared/test/common/os_interface/linux/drm_mock_device_blob.h"
|
|
|
|
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
|
2022-05-18 05:40:34 +08:00
|
|
|
void DrmMockEngine::handleQueryItem(QueryItem *queryItem) {
|
|
|
|
switch (queryItem->queryId) {
|
2021-11-13 01:34:33 +08:00
|
|
|
case DRM_I915_QUERY_ENGINE_INFO:
|
|
|
|
if (queryEngineInfoSuccessCount == 0) {
|
|
|
|
queryItem->length = -EINVAL;
|
|
|
|
} else {
|
|
|
|
queryEngineInfoSuccessCount--;
|
|
|
|
auto numberOfEngines = 2u;
|
|
|
|
int engineInfoSize = sizeof(drm_i915_query_engine_info) + numberOfEngines * sizeof(drm_i915_engine_info);
|
|
|
|
if (queryItem->length == 0) {
|
|
|
|
queryItem->length = engineInfoSize;
|
|
|
|
} else {
|
|
|
|
EXPECT_EQ(engineInfoSize, queryItem->length);
|
2022-05-18 05:40:34 +08:00
|
|
|
auto queryEnginenInfo = reinterpret_cast<drm_i915_query_engine_info *>(queryItem->dataPtr);
|
2021-11-13 01:34:33 +08:00
|
|
|
EXPECT_EQ(0u, queryEnginenInfo->num_engines);
|
|
|
|
queryEnginenInfo->num_engines = numberOfEngines;
|
|
|
|
queryEnginenInfo->engines[0].engine.engine_class = I915_ENGINE_CLASS_RENDER;
|
|
|
|
queryEnginenInfo->engines[0].engine.engine_instance = 1;
|
|
|
|
queryEnginenInfo->engines[1].engine.engine_class = I915_ENGINE_CLASS_COPY;
|
|
|
|
queryEnginenInfo->engines[1].engine.engine_instance = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case DRM_I915_QUERY_HWCONFIG_TABLE: {
|
|
|
|
if (failQueryDeviceBlob) {
|
|
|
|
queryItem->length = -EINVAL;
|
|
|
|
} else {
|
|
|
|
int deviceBlobSize = sizeof(dummyDeviceBlobData);
|
|
|
|
if (queryItem->length == 0) {
|
|
|
|
queryItem->length = deviceBlobSize;
|
|
|
|
} else {
|
|
|
|
EXPECT_EQ(deviceBlobSize, queryItem->length);
|
2022-05-18 05:40:34 +08:00
|
|
|
auto deviceBlobData = reinterpret_cast<uint32_t *>(queryItem->dataPtr);
|
2021-11-13 01:34:33 +08:00
|
|
|
memcpy(deviceBlobData, &dummyDeviceBlobData, deviceBlobSize);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} break;
|
|
|
|
}
|
|
|
|
}
|