From 0cc8330a1a7b9e52005bbb14eebe32b4b7b9f39b Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Tue, 4 Jul 2023 14:54:56 +0000 Subject: [PATCH] refactor: Unify bindless surface state base programming - program BSSBA in one place when sbaProperties used Signed-off-by: Mateusz Hoppe --- shared/source/helpers/state_base_address_base.inl | 7 +++++++ .../source/helpers/state_base_address_icllp_and_later.inl | 8 -------- shared/source/helpers/state_base_address_skl.inl | 8 -------- .../source/helpers/state_base_address_xehp_and_later.inl | 6 +----- 4 files changed, 8 insertions(+), 21 deletions(-) diff --git a/shared/source/helpers/state_base_address_base.inl b/shared/source/helpers/state_base_address_base.inl index 3bdbc0e431..79ca3682c7 100644 --- a/shared/source/helpers/state_base_address_base.inl +++ b/shared/source/helpers/state_base_address_base.inl @@ -50,6 +50,13 @@ void StateBaseAddressHelper::programStateBaseAddress( args.stateBaseAddressCmd->setSurfaceStateBaseAddressModifyEnable(true); args.stateBaseAddressCmd->setSurfaceStateBaseAddress(static_cast(args.sbaProperties->surfaceStateBaseAddress.value)); } + + 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)); + } + if (args.sbaProperties->statelessMocs.value != StreamProperty::initValue) { args.statelessMocsIndex = static_cast(args.sbaProperties->statelessMocs.value); } diff --git a/shared/source/helpers/state_base_address_icllp_and_later.inl b/shared/source/helpers/state_base_address_icllp_and_later.inl index 750aa53232..13a15a4afb 100644 --- a/shared/source/helpers/state_base_address_icllp_and_later.inl +++ b/shared/source/helpers/state_base_address_icllp_and_later.inl @@ -14,14 +14,6 @@ template void StateBaseAddressHelper::appendStateBaseAddressParameters( StateBaseAddressHelperArgs &args) { - if (args.sbaProperties) { - 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)); - } - } - if (!args.useGlobalHeapsBaseAddress && args.ssh) { args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true); args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.ssh->getHeapGpuBase()); diff --git a/shared/source/helpers/state_base_address_skl.inl b/shared/source/helpers/state_base_address_skl.inl index 8ef5fad2d9..c94796ddf0 100644 --- a/shared/source/helpers/state_base_address_skl.inl +++ b/shared/source/helpers/state_base_address_skl.inl @@ -13,14 +13,6 @@ template void StateBaseAddressHelper::appendStateBaseAddressParameters( StateBaseAddressHelperArgs &args) { - if (args.sbaProperties) { - 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)); - } - } - if (!args.useGlobalHeapsBaseAddress && args.ssh) { args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddressModifyEnable(true); args.stateBaseAddressCmd->setBindlessSurfaceStateBaseAddress(args.ssh->getHeapGpuBase()); diff --git a/shared/source/helpers/state_base_address_xehp_and_later.inl b/shared/source/helpers/state_base_address_xehp_and_later.inl index 5d61bf9cb1..aeffa8e00c 100644 --- a/shared/source/helpers/state_base_address_xehp_and_later.inl +++ b/shared/source/helpers/state_base_address_xehp_and_later.inl @@ -38,11 +38,7 @@ void StateBaseAddressHelper::appendStateBaseAddressParameters( args.stateBaseAddressCmd->setGeneralStateBufferSizeModifyEnable(true); args.stateBaseAddressCmd->setGeneralStateBufferSize(0xfffff); } - 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)); - } + if (args.sbaProperties->globalAtomics.value != StreamProperty::initValue) { args.useGlobalAtomics = !!args.sbaProperties->globalAtomics.value; }