diff --git a/shared/source/helpers/state_base_address_base.inl b/shared/source/helpers/state_base_address_base.inl index e820edf721..48be9a4144 100644 --- a/shared/source/helpers/state_base_address_base.inl +++ b/shared/source/helpers/state_base_address_base.inl @@ -33,6 +33,7 @@ void StateBaseAddressHelper::programStateBaseAddressIntoCommandStream template void StateBaseAddressHelper::programStateBaseAddress( StateBaseAddressHelperArgs &args) { + using RENDER_SURFACE_STATE = typename GfxFamily::RENDER_SURFACE_STATE; *args.stateBaseAddressCmd = GfxFamily::cmdInitStateBaseAddress; const auto surfaceStateCount = getMaxBindlessSurfaceStates(); @@ -53,7 +54,7 @@ void StateBaseAddressHelper::programStateBaseAddress( if (args.sbaProperties->surfaceStateBaseAddress.value != StreamProperty64::initValue) { args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true); args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(static_cast(args.sbaProperties->surfaceStateBaseAddress.value)); - args.stateBaseAddressCmd->setBindlessSurfaceStateSize(static_cast(args.sbaProperties->surfaceStateSize.value)); + args.stateBaseAddressCmd->setBindlessSurfaceStateSize(static_cast(args.sbaProperties->surfaceStateSize.value * (MemoryConstants::pageSize / sizeof(RENDER_SURFACE_STATE)))); } if (args.sbaProperties->statelessMocs.value != StreamProperty::initValue) { diff --git a/shared/test/unit_test/helpers/state_base_address_tests.cpp b/shared/test/unit_test/helpers/state_base_address_tests.cpp index 376dbb8024..0c41c4423c 100644 --- a/shared/test/unit_test/helpers/state_base_address_tests.cpp +++ b/shared/test/unit_test/helpers/state_base_address_tests.cpp @@ -753,6 +753,7 @@ using BindlessSurfaceAddressPlatforms = IsAtLeastGen9; HWTEST2_F(SbaTest, givenStateBaseAddressPropertiesWhenSettingBindlessSurfaceStatePropertyThenCommandDispatchedCorrectlyBindlessBaseAddress, BindlessSurfaceAddressPlatforms) { using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS; + using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; constexpr uint64_t surfaceHeapBase = 0x10000; constexpr uint32_t surfaceHeapSize = 0x10; @@ -785,7 +786,7 @@ HWTEST2_F(SbaTest, givenStateBaseAddressPropertiesWhenSettingBindlessSurfaceStat args.bindlessSurfaceStateBaseAddress = 0; StateBaseAddressHelper::programStateBaseAddress(args); - EXPECT_EQ(surfaceHeapSize, sbaCmd.getBindlessSurfaceStateSize()); + EXPECT_EQ(surfaceHeapSize * MemoryConstants::pageSize / sizeof(RENDER_SURFACE_STATE), sbaCmd.getBindlessSurfaceStateSize()); EXPECT_EQ(surfaceHeapBase, sbaCmd.getBindlessSurfaceStateBaseAddress()); EXPECT_TRUE(sbaCmd.getBindlessSurfaceStateBaseAddressModifyEnable()); }