mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
feature: add initial support for Xe2 platforms
Related-To: NEO-8188, NEO-10774 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0158decb2b
commit
778645c11e
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Copyright (C) 2024 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(TESTS_XE2_HPG_CORE)
|
||||
target_sources(${TARGET_NAME} PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_session_tests_xe2_hpg_core.cpp
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright (C) 2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/common/mocks/mock_device.h"
|
||||
#include "shared/test/common/mocks/mock_sip.h"
|
||||
#include "shared/test/common/test_macros/hw_test.h"
|
||||
|
||||
#include "level_zero/core/test/unit_tests/mocks/mock_built_ins.h"
|
||||
#include "level_zero/tools/source/debug/debug_session_imp.h"
|
||||
#include "level_zero/tools/test/unit_tests/sources/debug/debug_session_common.h"
|
||||
#include "level_zero/tools/test/unit_tests/sources/debug/debug_session_registers_access.h"
|
||||
#include "level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h"
|
||||
|
||||
namespace L0 {
|
||||
namespace ult {
|
||||
|
||||
using Xe2HpgCoreDebugSessionTest = Test<L0::ult::DebugSessionRegistersAccess>;
|
||||
|
||||
HWTEST2_F(Xe2HpgCoreDebugSessionTest,
|
||||
givenGetThreadRegisterSetPropertiesCalledWhenLargeGrfIsSetThen256GrfRegisterCountIsReported, IsXe2HpgCore) {
|
||||
auto mockBuiltins = new L0::ult::MockBuiltins();
|
||||
mockBuiltins->stateSaveAreaHeader = NEO::MockSipData::createStateSaveAreaHeader(2, 256);
|
||||
MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins);
|
||||
|
||||
{
|
||||
auto pStateSaveAreaHeader = reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data());
|
||||
auto size = pStateSaveAreaHeader->versionHeader.size * 8 +
|
||||
pStateSaveAreaHeader->regHeader.state_area_offset +
|
||||
pStateSaveAreaHeader->regHeader.state_save_size * 16;
|
||||
session->stateSaveAreaHeader.resize(size);
|
||||
}
|
||||
|
||||
ze_device_thread_t thread = stoppedThread;
|
||||
|
||||
auto *regdesc = &(reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data()))->regHeader.sr;
|
||||
uint32_t sr0[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
sr0[1] = 0x80006000;
|
||||
session->registersAccessHelper(session->allThreads[stoppedThreadId].get(), regdesc, 0, 1, sr0, true);
|
||||
|
||||
uint32_t threadCount = 0;
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetThreadRegisterSetProperties(session->toHandle(), thread, &threadCount, nullptr));
|
||||
std::vector<zet_debug_regset_properties_t> threadRegsetProps(threadCount);
|
||||
ASSERT_EQ(ZE_RESULT_SUCCESS, zetDebugGetThreadRegisterSetProperties(session->toHandle(), thread, &threadCount, threadRegsetProps.data()));
|
||||
EXPECT_EQ(256u, threadRegsetProps[0].count);
|
||||
}
|
||||
|
||||
HWTEST2_F(Xe2HpgCoreDebugSessionTest,
|
||||
givenGetThreadRegisterSetPropertiesCalledWhenLargeGrfIsNotSetThen128GrfRegisterCountIsReported, IsXe2HpgCore) {
|
||||
auto mockBuiltins = new L0::ult::MockBuiltins();
|
||||
mockBuiltins->stateSaveAreaHeader = NEO::MockSipData::createStateSaveAreaHeader(2, 256);
|
||||
MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins);
|
||||
|
||||
{
|
||||
auto pStateSaveAreaHeader = reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data());
|
||||
auto size = pStateSaveAreaHeader->versionHeader.size * 8 +
|
||||
pStateSaveAreaHeader->regHeader.state_area_offset +
|
||||
pStateSaveAreaHeader->regHeader.state_save_size * 16;
|
||||
session->stateSaveAreaHeader.resize(size);
|
||||
}
|
||||
|
||||
ze_device_thread_t thread = stoppedThread;
|
||||
|
||||
auto *regdesc = &(reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data()))->regHeader.sr;
|
||||
uint32_t sr0[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
sr0[1] = 0x80003000;
|
||||
session->registersAccessHelper(session->allThreads[stoppedThreadId].get(), regdesc, 0, 1, sr0, true);
|
||||
|
||||
uint32_t threadCount = 0;
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetThreadRegisterSetProperties(session->toHandle(), thread, &threadCount, nullptr));
|
||||
std::vector<zet_debug_regset_properties_t> threadRegsetProps(threadCount);
|
||||
ASSERT_EQ(ZE_RESULT_SUCCESS, zetDebugGetThreadRegisterSetProperties(session->toHandle(), thread, &threadCount, threadRegsetProps.data()));
|
||||
EXPECT_EQ(128u, threadRegsetProps[0].count);
|
||||
}
|
||||
|
||||
using DebugApiTest = Test<DebugApiFixture>;
|
||||
using isDebugSupportedProduct = IsAtLeastProduct<IGFX_BMG>;
|
||||
HWTEST2_F(DebugApiTest, givenDeviceWhenDebugAttachIsAvaialbleThenGetPropertiesReturnsCorrectFlag2, isDebugSupportedProduct) {
|
||||
zet_device_debug_properties_t debugProperties = {};
|
||||
debugProperties.flags = ZET_DEVICE_DEBUG_PROPERTY_FLAG_FORCE_UINT32;
|
||||
|
||||
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new OsInterfaceWithDebugAttach);
|
||||
|
||||
auto result = zetDeviceGetDebugProperties(device->toHandle(), &debugProperties);
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||
EXPECT_EQ(ZET_DEVICE_DEBUG_PROPERTY_FLAG_ATTACH, debugProperties.flags);
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
Reference in New Issue
Block a user