Revert "feature: Report correct GRF register count"

This reverts commit 8eb3fe222e.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
Compute-Runtime-Validation 2023-09-01 14:32:44 +02:00 committed by Compute-Runtime-Automation
parent abfed5a762
commit 154530ad23
22 changed files with 66 additions and 241 deletions

View File

@ -10,7 +10,6 @@
#include "shared/source/helpers/api_gfx_core_helper.h" #include "shared/source/helpers/api_gfx_core_helper.h"
#include "shared/source/helpers/heap_base_address_model.h" #include "shared/source/helpers/heap_base_address_model.h"
#include "level_zero/include/zet_intel_gpu_debug.h"
#include "level_zero/tools/source/debug/eu_thread.h" #include "level_zero/tools/source/debug/eu_thread.h"
#include <level_zero/ze_api.h> #include <level_zero/ze_api.h>
@ -79,7 +78,6 @@ class L0GfxCoreHelper : public NEO::ApiGfxCoreHelper {
virtual NEO::HeapAddressModel getPlatformHeapAddressModel() const = 0; virtual NEO::HeapAddressModel getPlatformHeapAddressModel() const = 0;
virtual std::vector<uint32_t> getSupportedNumGrfs() const = 0; virtual std::vector<uint32_t> getSupportedNumGrfs() const = 0;
virtual bool platformSupportsImmediateComputeFlushTask() const = 0; virtual bool platformSupportsImmediateComputeFlushTask() const = 0;
virtual zet_debug_regset_type_intel_gpu_t getRegsetTypeForLargeGrfDetection() const = 0;
protected: protected:
L0GfxCoreHelper() = default; L0GfxCoreHelper() = default;
@ -117,7 +115,6 @@ class L0GfxCoreHelperHw : public L0GfxCoreHelper {
NEO::HeapAddressModel getPlatformHeapAddressModel() const override; NEO::HeapAddressModel getPlatformHeapAddressModel() const override;
std::vector<uint32_t> getSupportedNumGrfs() const override; std::vector<uint32_t> getSupportedNumGrfs() const override;
bool platformSupportsImmediateComputeFlushTask() const override; bool platformSupportsImmediateComputeFlushTask() const override;
zet_debug_regset_type_intel_gpu_t getRegsetTypeForLargeGrfDetection() const override;
protected: protected:
L0GfxCoreHelperHw() = default; L0GfxCoreHelperHw() = default;

View File

@ -39,9 +39,4 @@ bool L0GfxCoreHelperHw<Family>::multiTileCapablePlatform() const {
return false; return false;
} }
template <typename Family>
zet_debug_regset_type_intel_gpu_t L0GfxCoreHelperHw<Family>::getRegsetTypeForLargeGrfDetection() const {
return ZET_DEBUG_REGSET_TYPE_INVALID_INTEL_GPU;
}
} // namespace L0 } // namespace L0

View File

@ -42,11 +42,6 @@ bool L0GfxCoreHelperHw<Family>::platformSupportsRayTracing() const {
return true; return true;
} }
template <>
zet_debug_regset_type_intel_gpu_t L0GfxCoreHelperHw<Family>::getRegsetTypeForLargeGrfDetection() const {
return ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU;
}
template class L0GfxCoreHelperHw<Family>; template class L0GfxCoreHelperHw<Family>;
} // namespace L0 } // namespace L0

View File

@ -35,11 +35,6 @@ bool L0GfxCoreHelperHw<Family>::platformSupportsStateBaseAddressTracking() const
return true; return true;
} }
template <>
zet_debug_regset_type_intel_gpu_t L0GfxCoreHelperHw<Family>::getRegsetTypeForLargeGrfDetection() const {
return ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU;
}
template class L0GfxCoreHelperHw<Family>; template class L0GfxCoreHelperHw<Family>;
} // namespace L0 } // namespace L0

View File

@ -18,11 +18,6 @@ namespace L0 {
using Family = NEO::XeHpgCoreFamily; using Family = NEO::XeHpgCoreFamily;
static auto gfxCore = IGFX_XE_HPG_CORE; static auto gfxCore = IGFX_XE_HPG_CORE;
template <>
zet_debug_regset_type_intel_gpu_t L0GfxCoreHelperHw<Family>::getRegsetTypeForLargeGrfDetection() const {
return ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU;
}
#include "level_zero/core/source/helpers/l0_gfx_core_helper_factory_init.inl" #include "level_zero/core/source/helpers/l0_gfx_core_helper_factory_init.inl"
template class L0GfxCoreHelperHw<Family>; template class L0GfxCoreHelperHw<Family>;

View File

@ -23,11 +23,6 @@ HWTEST_EXCLUDE_PRODUCT(L0GfxCoreHelperTest, givenBitmaskWithAttentionBitsForHalf
using L0GfxCoreHelperTestGen12Lp = Test<DeviceFixture>; using L0GfxCoreHelperTestGen12Lp = Test<DeviceFixture>;
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGetRegsetTypeForLargeGrfDetectionIsCalledThenInvalidRegsetTypeIsRetuned) {
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
EXPECT_EQ(ZET_DEBUG_REGSET_TYPE_INVALID_INTEL_GPU, l0GfxCoreHelper.getRegsetTypeForLargeGrfDetection());
}
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenCheckingL0HelperForCmdListHeapSharingSupportThenReturnFalse) { GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenCheckingL0HelperForCmdListHeapSharingSupportThenReturnFalse) {
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>(); auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();

View File

@ -74,10 +74,5 @@ XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForPla
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsImmediateComputeFlushTask()); EXPECT_TRUE(l0GfxCoreHelper.platformSupportsImmediateComputeFlushTask());
} }
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenGetRegsetTypeForLargeGrfDetectionIsCalledThenCrRegsetTypeIsRetuned) {
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
EXPECT_EQ(ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU, l0GfxCoreHelper.getRegsetTypeForLargeGrfDetection());
}
} // namespace ult } // namespace ult
} // namespace L0 } // namespace L0

View File

@ -31,11 +31,6 @@ XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForMul
EXPECT_FALSE(l0GfxCoreHelper.multiTileCapablePlatform()); EXPECT_FALSE(l0GfxCoreHelper.multiTileCapablePlatform());
} }
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGetRegsetTypeForLargeGrfDetectionIsCalledThenCrRegsetTypeIsRetuned) {
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
EXPECT_EQ(ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU, l0GfxCoreHelper.getRegsetTypeForLargeGrfDetection());
}
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForCmdListHeapSharingSupportThenReturnTrue) { XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForCmdListHeapSharingSupportThenReturnTrue) {
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>(); auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsCmdListHeapSharing()); EXPECT_TRUE(l0GfxCoreHelper.platformSupportsCmdListHeapSharing());

View File

@ -110,9 +110,6 @@ struct DebugSession : _zet_debug_session_handle_t {
protected: protected:
DebugSession(const zet_debug_config_t &config, Device *device); DebugSession(const zet_debug_config_t &config, Device *device);
void createEuThreads(); void createEuThreads();
void updateGrfRegisterSetProperties(EuThread::ThreadId thread, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties);
virtual uint32_t getRegisterSize(uint32_t type) = 0;
virtual ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) = 0;
virtual void startAsyncThread() = 0; virtual void startAsyncThread() = 0;

View File

@ -1160,40 +1160,6 @@ ze_result_t DebugSessionImp::readSbaRegisters(EuThread::ThreadId threadId, uint3
return ZE_RESULT_SUCCESS; return ZE_RESULT_SUCCESS;
} }
void DebugSession::updateGrfRegisterSetProperties(EuThread::ThreadId thread, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties) {
if (pRegisterSetProperties == nullptr) {
return;
}
auto &gfxCoreHelper = this->connectedDevice->getGfxCoreHelper();
if (!gfxCoreHelper.largeGrfModeSupported()) {
return;
}
// update GRF, if large GRF is enabled
auto &l0GfxCoreHelper = connectedDevice->getNEODevice()->getRootDeviceEnvironment().getHelper<L0GfxCoreHelper>();
auto regsetType = l0GfxCoreHelper.getRegsetTypeForLargeGrfDetection();
bool largeGrfModeEnabled = false;
const auto regSize = std::max(getRegisterSize(regsetType), 64u);
auto reg = std::make_unique<uint32_t[]>(regSize / sizeof(uint32_t));
memset(reg.get(), 0, regSize);
readRegistersImp(thread, regsetType, 0, 1, reg.get());
auto regPtr = reg.get();
if (regsetType == ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU) {
largeGrfModeEnabled = regPtr[0] & 0x2000;
} else if (regsetType == ZET_DEBUG_REGSET_TYPE_SR_INTEL_GPU) {
largeGrfModeEnabled = regPtr[1] & 0x6000;
}
if (!largeGrfModeEnabled) {
for (uint32_t i = 0; i < *pCount; i++) {
if (pRegisterSetProperties[i].type == ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU) {
pRegisterSetProperties[i].count = 128;
}
}
}
}
ze_result_t DebugSession::getThreadRegisterSetProperties(ze_device_thread_t thread, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties) { ze_result_t DebugSession::getThreadRegisterSetProperties(ze_device_thread_t thread, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties) {
if (!isSingleThread(thread)) { if (!isSingleThread(thread)) {
return ZE_RESULT_ERROR_NOT_AVAILABLE; return ZE_RESULT_ERROR_NOT_AVAILABLE;
@ -1204,13 +1170,7 @@ ze_result_t DebugSession::getThreadRegisterSetProperties(ze_device_thread_t thre
return ZE_RESULT_ERROR_NOT_AVAILABLE; return ZE_RESULT_ERROR_NOT_AVAILABLE;
} }
auto ret = getRegisterSetProperties(this->connectedDevice, pCount, pRegisterSetProperties); return getRegisterSetProperties(this->connectedDevice, pCount, pRegisterSetProperties);
if (ret != ZE_RESULT_SUCCESS) {
return ret;
}
updateGrfRegisterSetProperties(threadId, pCount, pRegisterSetProperties);
return ret;
} }
ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties) { ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCount, zet_debug_regset_properties_t *pRegisterSetProperties) {
@ -1233,6 +1193,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo
auto parseRegsetDesc = [&](const SIP::regset_desc &regsetDesc, zet_debug_regset_type_intel_gpu_t regsetType) { auto parseRegsetDesc = [&](const SIP::regset_desc &regsetDesc, zet_debug_regset_type_intel_gpu_t regsetType) {
if (regsetDesc.num) { if (regsetDesc.num) {
if (totalRegsetNum < *pCount) { if (totalRegsetNum < *pCount) {
uint16_t num = (regsetType == ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU) ? 128 : regsetDesc.num;
zet_debug_regset_properties_t regsetProps = { zet_debug_regset_properties_t regsetProps = {
ZET_STRUCTURE_TYPE_DEBUG_REGSET_PROPERTIES, ZET_STRUCTURE_TYPE_DEBUG_REGSET_PROPERTIES,
nullptr, nullptr,
@ -1240,7 +1201,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo
0, 0,
DebugSessionImp::typeToRegsetFlags(regsetType), DebugSessionImp::typeToRegsetFlags(regsetType),
0, 0,
regsetDesc.num, num,
regsetDesc.bits, regsetDesc.bits,
regsetDesc.bytes, regsetDesc.bytes,
}; };

View File

@ -71,7 +71,7 @@ struct DebugSessionImp : DebugSession {
using ApiEventQueue = std::queue<zet_debug_event_t>; using ApiEventQueue = std::queue<zet_debug_event_t>;
protected: protected:
ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override; MOCKABLE_VIRTUAL ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
MOCKABLE_VIRTUAL ze_result_t writeRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues); MOCKABLE_VIRTUAL ze_result_t writeRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues);
Error resumeThreadsWithinDevice(uint32_t deviceIndex, ze_device_thread_t physicalThread); Error resumeThreadsWithinDevice(uint32_t deviceIndex, ze_device_thread_t physicalThread);
MOCKABLE_VIRTUAL bool writeResumeCommand(const std::vector<EuThread::ThreadId> &threadIds); MOCKABLE_VIRTUAL bool writeResumeCommand(const std::vector<EuThread::ThreadId> &threadIds);
@ -120,7 +120,7 @@ struct DebugSessionImp : DebugSession {
MOCKABLE_VIRTUAL ze_result_t waitForCmdReady(EuThread::ThreadId threadId, uint16_t retryCount); MOCKABLE_VIRTUAL ze_result_t waitForCmdReady(EuThread::ThreadId threadId, uint16_t retryCount);
const SIP::regset_desc *typeToRegsetDesc(uint32_t type); const SIP::regset_desc *typeToRegsetDesc(uint32_t type);
uint32_t getRegisterSize(uint32_t type) override; uint32_t getRegisterSize(uint32_t type);
size_t calculateThreadSlotOffset(EuThread::ThreadId threadId); size_t calculateThreadSlotOffset(EuThread::ThreadId threadId);
size_t calculateRegisterOffsetInThreadSlot(const SIP::regset_desc *const regdesc, uint32_t start); size_t calculateRegisterOffsetInThreadSlot(const SIP::regset_desc *const regdesc, uint32_t start);

View File

@ -13,7 +13,6 @@ target_sources(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/test_debug_api.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_debug_api.cpp
${CMAKE_CURRENT_SOURCE_DIR}/debug_session_common.h ${CMAKE_CURRENT_SOURCE_DIR}/debug_session_common.h
${CMAKE_CURRENT_SOURCE_DIR}/debug_session_common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/debug_session_common.cpp
${CMAKE_CURRENT_SOURCE_DIR}/debug_session_registers_access.h
) )
add_subdirectories() add_subdirectories()

View File

@ -1,61 +0,0 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
#include "level_zero/tools/test/unit_tests/sources/debug/mock_debug_session.h"
#include "common/StateSaveAreaHeader.h"
namespace L0 {
namespace ult {
struct DebugSessionRegistersAccess {
void setUp() {
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0);
deviceImp = std::make_unique<Mock<L0::DeviceImp>>(neoDevice, neoDevice->getExecutionEnvironment());
session = std::make_unique<MockDebugSession>(config, deviceImp.get());
session->allThreads[stoppedThreadId]->stopThread(1u);
session->allThreads[stoppedThreadId]->reportAsStopped();
}
void tearDown() {
}
void dumpRegisterState() {
if (session->stateSaveAreaHeader.size() == 0) {
return;
}
auto pStateSaveAreaHeader = reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data());
for (uint32_t thread = 0; thread < pStateSaveAreaHeader->regHeader.num_threads_per_eu; thread++) {
EuThread::ThreadId threadId(0, 0, 0, 0, thread);
auto threadSlotOffset = session->calculateThreadSlotOffset(threadId);
auto srMagicOffset = threadSlotOffset + pStateSaveAreaHeader->regHeader.sr_magic_offset;
SIP::sr_ident srMagic;
srMagic.count = 1;
srMagic.version.major = pStateSaveAreaHeader->versionHeader.version.major;
session->writeGpuMemory(0, reinterpret_cast<char *>(&srMagic), sizeof(srMagic), reinterpret_cast<uint64_t>(pStateSaveAreaHeader) + srMagicOffset);
}
}
ze_device_thread_t stoppedThread = {0, 0, 0, 0};
EuThread::ThreadId stoppedThreadId{0, stoppedThread};
std::unique_ptr<MockDebugSession> session;
std::unique_ptr<Mock<L0::DeviceImp>> deviceImp;
NEO::MockDevice *neoDevice = nullptr;
};
} // namespace ult
} // namespace L0

View File

@ -20,7 +20,7 @@
#include "level_zero/core/test/unit_tests/mocks/mock_device.h" #include "level_zero/core/test/unit_tests/mocks/mock_device.h"
#include "level_zero/include/zet_intel_gpu_debug.h" #include "level_zero/include/zet_intel_gpu_debug.h"
#include "level_zero/tools/source/debug/debug_session_imp.h" #include "level_zero/tools/source/debug/debug_session_imp.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"
#include "common/StateSaveAreaHeader.h" #include "common/StateSaveAreaHeader.h"
#include "encode_surface_state_args.h" #include "encode_surface_state_args.h"
@ -2228,6 +2228,50 @@ TEST_F(MultiTileDebugSessionTest, GivenMultitileDeviceWhenCallingAreRequestedThr
EXPECT_TRUE(stopped); EXPECT_TRUE(stopped);
} }
struct DebugSessionRegistersAccess {
void setUp() {
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0);
deviceImp = std::make_unique<Mock<L0::DeviceImp>>(neoDevice, neoDevice->getExecutionEnvironment());
session = std::make_unique<MockDebugSession>(config, deviceImp.get());
session->allThreads[stoppedThreadId]->stopThread(1u);
session->allThreads[stoppedThreadId]->reportAsStopped();
}
void tearDown() {
}
void dumpRegisterState() {
if (session->stateSaveAreaHeader.size() == 0) {
return;
}
auto pStateSaveAreaHeader = reinterpret_cast<SIP::StateSaveAreaHeader *>(session->stateSaveAreaHeader.data());
for (uint32_t thread = 0; thread < pStateSaveAreaHeader->regHeader.num_threads_per_eu; thread++) {
EuThread::ThreadId threadId(0, 0, 0, 0, thread);
auto threadSlotOffset = session->calculateThreadSlotOffset(threadId);
auto srMagicOffset = threadSlotOffset + pStateSaveAreaHeader->regHeader.sr_magic_offset;
SIP::sr_ident srMagic;
srMagic.count = 1;
srMagic.version.major = pStateSaveAreaHeader->versionHeader.version.major;
session->writeGpuMemory(0, reinterpret_cast<char *>(&srMagic), sizeof(srMagic), reinterpret_cast<uint64_t>(pStateSaveAreaHeader) + srMagicOffset);
}
}
ze_device_thread_t stoppedThread = {0, 0, 0, 0};
EuThread::ThreadId stoppedThreadId{0, stoppedThread};
std::unique_ptr<MockDebugSession> session;
std::unique_ptr<Mock<L0::DeviceImp>> deviceImp;
NEO::MockDevice *neoDevice = nullptr;
};
using DebugSessionRegistersAccessTest = Test<DebugSessionRegistersAccess>; using DebugSessionRegistersAccessTest = Test<DebugSessionRegistersAccess>;
TEST_F(DebugSessionRegistersAccessTest, givenTypeToRegsetDescCalledThenCorrectRegdescIsReturned) { TEST_F(DebugSessionRegistersAccessTest, givenTypeToRegsetDescCalledThenCorrectRegdescIsReturned) {
@ -2275,72 +2319,6 @@ TEST_F(DebugSessionRegistersAccessTest, givenGetThreadRegisterSetPropertiesCalle
EXPECT_EQ(ZE_RESULT_ERROR_NOT_AVAILABLE, zetDebugGetThreadRegisterSetProperties(session->toHandle(), stoppedThread, &threadCount, nullptr)); EXPECT_EQ(ZE_RESULT_ERROR_NOT_AVAILABLE, zetDebugGetThreadRegisterSetProperties(session->toHandle(), stoppedThread, &threadCount, nullptr));
} }
TEST_F(DebugSessionRegistersAccessTest,
givenNonZeroCountAndNullRegsetPointerWhenGetThreadRegisterSetPropertiesCalledTheniInvalidNullPointerIsReturned) {
uint32_t threadCount = 10;
ze_device_thread_t thread = stoppedThread;
EXPECT_EQ(ZE_RESULT_ERROR_INVALID_NULL_POINTER,
zetDebugGetThreadRegisterSetProperties(session->toHandle(), thread, &threadCount, nullptr));
}
HWTEST2_F(DebugSessionRegistersAccessTest,
givenGetThreadRegisterSetPropertiesCalledWhenLargeGrfIsSetThen256GrfRegisterCountIsReported,
IsXeHpOrXeHpcOrXeHpgCore) {
auto mockBuiltins = new MockBuiltins();
mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256);
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(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.cr;
uint32_t cr0[8] = {0, 0, 0, 0, 0, 0, 0, 0};
cr0[0] = 0x80002000;
session->registersAccessHelper(session->allThreads[stoppedThreadId].get(), regdesc, 0, 1, cr0, 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(DebugSessionRegistersAccessTest,
givenGetThreadRegisterSetPropertiesCalledWhenLargeGrfIsNotSetThen128GrfRegisterCountIsReported,
IsXeHpOrXeHpcOrXeHpgCore) {
auto mockBuiltins = new MockBuiltins();
mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256);
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(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.cr;
uint32_t cr0[8] = {0, 0, 0, 0, 0, 0, 0, 0};
cr0[0] = 0x80000000;
session->registersAccessHelper(session->allThreads[stoppedThreadId].get(), regdesc, 0, 1, cr0, 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);
}
TEST_F(DebugSessionRegistersAccessTest, givenGetThreadRegisterSetPropertiesCalledPropertieAreTheSameAsgetRegisterSetProperties) { TEST_F(DebugSessionRegistersAccessTest, givenGetThreadRegisterSetPropertiesCalledPropertieAreTheSameAsgetRegisterSetProperties) {
auto mockBuiltins = new MockBuiltins(); auto mockBuiltins = new MockBuiltins();

View File

@ -116,14 +116,6 @@ struct DebugSessionMock : public L0::DebugSession {
return true; return true;
} }
ze_result_t readRegistersImp(EuThread::ThreadId thread, uint32_t type, uint32_t start, uint32_t count, void *pRegisterValues) override {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
uint32_t getRegisterSize(uint32_t type) override {
return 0;
}
void detachTileDebugSession(DebugSession *tileSession) override {} void detachTileDebugSession(DebugSession *tileSession) override {}
bool areAllTileDebugSessionDetached() override { return true; } bool areAllTileDebugSessionDetached() override { return true; }

View File

@ -334,6 +334,21 @@ TEST_F(DebugApiTest, givenSIPHeaderHasZeroSizeMMEThenNotExposedAsRegset) {
} }
} }
TEST_F(DebugApiTest, givenSIPHeaderGRFCountNotEqualTo128ThenGetRegisterSetPropertiesReturns128) {
mockBuiltins = new MockBuiltins();
mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256);
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins);
uint32_t count = 0;
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));
EXPECT_EQ(13u, count);
std::vector<zet_debug_regset_properties_t> regsetProps(count);
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, regsetProps.data()));
EXPECT_EQ(13u, count);
EXPECT_EQ(128u, regsetProps[0].count);
}
TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturned) { TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturned) {
uint32_t count = 0; uint32_t count = 0;
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr)); EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));

View File

@ -96,7 +96,6 @@ class GfxCoreHelper {
virtual uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const = 0; virtual uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const = 0;
virtual uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const = 0; virtual uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const = 0;
virtual uint32_t calculateMaxWorkGroupSize(const KernelDescriptor &kernelDescriptor, uint32_t defaultMaxGroupSize) const = 0; virtual uint32_t calculateMaxWorkGroupSize(const KernelDescriptor &kernelDescriptor, uint32_t defaultMaxGroupSize) const = 0;
virtual bool largeGrfModeSupported() const = 0;
virtual uint32_t alignSlmSize(uint32_t slmSize) const = 0; virtual uint32_t alignSlmSize(uint32_t slmSize) const = 0;
virtual uint32_t computeSlmValues(const HardwareInfo &hwInfo, uint32_t slmSize) const = 0; virtual uint32_t computeSlmValues(const HardwareInfo &hwInfo, uint32_t slmSize) const = 0;
@ -274,7 +273,6 @@ class GfxCoreHelperHw : public GfxCoreHelper {
uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const override; uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const override;
uint32_t calculateMaxWorkGroupSize(const KernelDescriptor &kernelDescriptor, uint32_t defaultMaxGroupSize) const override; uint32_t calculateMaxWorkGroupSize(const KernelDescriptor &kernelDescriptor, uint32_t defaultMaxGroupSize) const override;
bool largeGrfModeSupported() const override;
uint32_t alignSlmSize(uint32_t slmSize) const override; uint32_t alignSlmSize(uint32_t slmSize) const override;

View File

@ -664,11 +664,6 @@ bool GfxCoreHelperHw<gfxProduct>::isChipsetUniqueUUIDSupported() const {
return false; return false;
} }
template <typename gfxProduct>
bool GfxCoreHelperHw<gfxProduct>::largeGrfModeSupported() const {
return false;
}
template <typename gfxProduct> template <typename gfxProduct>
bool GfxCoreHelperHw<gfxProduct>::isTimestampShiftRequired() const { bool GfxCoreHelperHw<gfxProduct>::isTimestampShiftRequired() const {
return true; return true;

View File

@ -232,9 +232,4 @@ bool GfxCoreHelperHw<Family>::isChipsetUniqueUUIDSupported() const {
return true; return true;
} }
template <>
bool GfxCoreHelperHw<Family>::largeGrfModeSupported() const {
return true;
}
} // namespace NEO } // namespace NEO

View File

@ -33,7 +33,7 @@ std::vector<char> createStateSaveAreaHeader(uint32_t version) {
} }
std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum) { std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum) {
return createStateSaveAreaHeader(version, grfNum, 1); return createStateSaveAreaHeader(version, 128, 1);
} }
std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum, uint16_t mmeNum) { std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum, uint16_t mmeNum) {

View File

@ -44,7 +44,6 @@ using IsAtMostXeHpcCore = IsAtMostGfxCore<IGFX_XE_HPC_CORE>;
using IsXeHpOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>; using IsXeHpOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
using IsXeHpOrXeHpcCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>; using IsXeHpOrXeHpcCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;
using IsXeHpcOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HPC_CORE, IGFX_XE_HPG_CORE>; using IsXeHpcOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HPC_CORE, IGFX_XE_HPG_CORE>;
using IsXeHpOrXeHpcOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE, IGFX_XE_HPG_CORE>;
using IsNotXeHpOrXeHpgCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>; using IsNotXeHpOrXeHpgCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
using IsNotXeHpOrXeHpcCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>; using IsNotXeHpOrXeHpcCore = IsNotAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;

View File

@ -19,11 +19,6 @@
using GfxCoreHelperTestDg1 = GfxCoreHelperTest; using GfxCoreHelperTestDg1 = GfxCoreHelperTest;
DG1TEST_F(GfxCoreHelperTestDg1, givenDg1SteppingWhenLargeGrfModeSupportedIsQueriedThenFalseIsReturned) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
EXPECT_FALSE(gfxCoreHelper.largeGrfModeSupported());
}
DG1TEST_F(GfxCoreHelperTestDg1, givenDg1SteppingA0WhenAdjustDefaultEngineTypeCalledThenRcsIsReturned) { DG1TEST_F(GfxCoreHelperTestDg1, givenDg1SteppingA0WhenAdjustDefaultEngineTypeCalledThenRcsIsReturned) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>(); auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
const auto &productHelper = getHelper<ProductHelper>(); const auto &productHelper = getHelper<ProductHelper>();