diff --git a/level_zero/tools/source/debug/debug_session_imp.cpp b/level_zero/tools/source/debug/debug_session_imp.cpp index 72fd007d2c..c72677c6aa 100644 --- a/level_zero/tools/source/debug/debug_session_imp.cpp +++ b/level_zero/tools/source/debug/debug_session_imp.cpp @@ -1185,10 +1185,10 @@ void DebugSession::updateGrfRegisterSetProperties(EuThread::ThreadId thread, uin largeGrfModeEnabled = regPtr[1] & 0x6000; } - if (!largeGrfModeEnabled) { + 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; + pRegisterSetProperties[i].count = 256; } } } @@ -1233,6 +1233,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo auto parseRegsetDesc = [&](const SIP::regset_desc ®setDesc, zet_debug_regset_type_intel_gpu_t regsetType) { if (regsetDesc.num) { if (totalRegsetNum < *pCount) { + uint16_t num = (regsetType == ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU) ? 128 : regsetDesc.num; zet_debug_regset_properties_t regsetProps = { ZET_STRUCTURE_TYPE_DEBUG_REGSET_PROPERTIES, nullptr, @@ -1240,7 +1241,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo 0, DebugSessionImp::typeToRegsetFlags(regsetType), 0, - regsetDesc.num, + num, regsetDesc.bits, regsetDesc.bytes, }; diff --git a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp index cb851e369f..468306079d 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp @@ -334,6 +334,24 @@ TEST_F(DebugApiTest, givenSIPHeaderHasZeroSizeMMEThenNotExposedAsRegset) { } } +TEST_F(DebugApiTest, givenSIPHeaderGRFCountNotEqualTo128ThenGetRegisterSetPropertiesReturns128) { + static_cast(neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.get())->stateSaveAreaHeader = + MockSipData::createStateSaveAreaHeader(2, 256); + uint32_t count = 0; + EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr)); + + std::vector regsetProps(count); + EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, regsetProps.data())); + ASSERT_EQ(13u, count); + + for (uint32_t i = 0; i < count; i++) { + if (regsetProps[i].type == ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU) { + EXPECT_EQ(128u, regsetProps[i].count); + break; + } + } +} + TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturned) { uint32_t count = 0; EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));