Skip to content

Commit dc41512

Browse files
Fix bindless surface/sampler MOCS programming
Signed-off-by: Rafal Maziejuk <[email protected]> Related-To: NEO-6045
1 parent 8e094ca commit dc41512

File tree

4 files changed

+47
-3
lines changed

4 files changed

+47
-3
lines changed

shared/source/gen11/state_base_address_gen11.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
#include "shared/source/helpers/state_base_address.h"
99
#include "shared/source/helpers/state_base_address_bdw_plus.inl"
10-
#include "shared/source/helpers/state_base_address_skl_plus.inl"
10+
#include "shared/source/helpers/state_base_address_icllp_plus.inl"
1111

1212
namespace NEO {
1313
template struct StateBaseAddressHelper<ICLFamily>;

shared/source/gen12lp/state_base_address_gen12lp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/*
2-
* Copyright (C) 2019-2020 Intel Corporation
2+
* Copyright (C) 2019-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
66
*/
77

88
#include "shared/source/helpers/state_base_address.h"
99
#include "shared/source/helpers/state_base_address_bdw_plus.inl"
10-
#include "shared/source/helpers/state_base_address_skl_plus.inl"
10+
#include "shared/source/helpers/state_base_address_icllp_plus.inl"
1111

1212
namespace NEO {
1313
template struct StateBaseAddressHelper<TGLLPFamily>;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright (C) 2020-2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "shared/source/helpers/state_base_address.h"
9+
10+
namespace NEO {
11+
12+
template <typename GfxFamily>
13+
void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
14+
STATE_BASE_ADDRESS *stateBaseAddress,
15+
const IndirectHeap *ssh,
16+
bool setGeneralStateBaseAddress,
17+
uint64_t indirectObjectHeapBaseAddress,
18+
GmmHelper *gmmHelper,
19+
bool isMultiOsContextCapable,
20+
MemoryCompressionState memoryCompressionState,
21+
bool overrideBindlessSurfaceStateBase,
22+
bool useGlobalAtomics,
23+
bool areMultipleSubDevicesInContext) {
24+
25+
if (overrideBindlessSurfaceStateBase && ssh) {
26+
stateBaseAddress->setBindlessSurfaceStateBaseAddressModifyEnable(true);
27+
stateBaseAddress->setBindlessSurfaceStateBaseAddress(ssh->getHeapGpuBase());
28+
uint32_t size = uint32_t(ssh->getMaxAvailableSpace() / 64) - 1;
29+
stateBaseAddress->setBindlessSurfaceStateSize(size);
30+
}
31+
32+
stateBaseAddress->setBindlessSamplerStateBaseAddressModifyEnable(true);
33+
34+
auto l3CacheOnPolicy = GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER;
35+
36+
if (gmmHelper != nullptr) {
37+
stateBaseAddress->setBindlessSurfaceStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
38+
stateBaseAddress->setBindlessSamplerStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
39+
}
40+
41+
appendExtraCacheSettings(stateBaseAddress, gmmHelper);
42+
}
43+
} // namespace NEO

shared/source/helpers/state_base_address_xehp_plus.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
6666
stateBaseAddress->setDynamicStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
6767
stateBaseAddress->setGeneralStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
6868
stateBaseAddress->setBindlessSurfaceStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
69+
stateBaseAddress->setBindlessSamplerStateMemoryObjectControlStateIndexToMocsTables(gmmHelper->getMOCS(l3CacheOnPolicy));
6970

7071
bool enableMultiGpuAtomics = isMultiOsContextCapable;
7172
if (DebugManager.flags.EnableMultiGpuAtomicsOptimization.get()) {

0 commit comments

Comments
 (0)