Skip to content

Commit aa96508

Browse files
Set valid coherency type in Surface State for Buffers
Change-Id: Id84f6a8561831d29b1de9ac589a52e3e083eefda
1 parent 684b1d7 commit aa96508

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

runtime/mem_obj/buffer.inl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,17 @@ void BufferHw<GfxFamily>::setArgStateful(void *memory) {
8181
surfaceState->setMemoryObjectControlState(GmmHelper::getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED));
8282
}
8383

84-
surfaceState->setCoherencyType(RENDER_SURFACE_STATE::COHERENCY_TYPE_IA_COHERENT);
8584
surfaceState->setSurfaceBaseAddress(bufferAddress);
8685

8786
Gmm *gmm = graphicsAllocation ? graphicsAllocation->gmm : nullptr;
8887

8988
if (gmm && gmm->isRenderCompressed) {
89+
surfaceState->setCoherencyType(RENDER_SURFACE_STATE::COHERENCY_TYPE_GPU_COHERENT);
9090
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
9191
surfaceState->setAuxiliarySurfaceBaseAddress(surfaceState->getSurfaceBaseAddress() +
9292
gmm->gmmResourceInfo->getUnifiedAuxSurfaceOffset(GMM_UNIFIED_AUX_TYPE::GMM_AUX_CCS));
9393
} else {
94+
surfaceState->setCoherencyType(RENDER_SURFACE_STATE::COHERENCY_TYPE_IA_COHERENT);
9495
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_NONE);
9596
surfaceState->setAuxiliarySurfaceBaseAddress(0);
9697
}

unit_tests/mem_obj/buffer_tests.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,7 @@ HWTEST_F(BufferSetSurfaceTests, givenRenderCompressedGmmResourceWhenSurfaceState
10161016

10171017
EXPECT_EQ(baseAddress + controlOffset, surfaceState.getAuxiliarySurfaceBaseAddress());
10181018
EXPECT_TRUE(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E == surfaceState.getAuxiliarySurfaceMode());
1019+
EXPECT_TRUE(RENDER_SURFACE_STATE::COHERENCY_TYPE_GPU_COHERENT == surfaceState.getCoherencyType());
10191020
}
10201021

10211022
HWTEST_F(BufferSetSurfaceTests, givenNonRenderCompressedGmmResourceWhenSurfaceStateIsProgrammedThenDontSetAuxParams) {
@@ -1035,6 +1036,7 @@ HWTEST_F(BufferSetSurfaceTests, givenNonRenderCompressedGmmResourceWhenSurfaceSt
10351036

10361037
EXPECT_EQ(0u, surfaceState.getAuxiliarySurfaceBaseAddress());
10371038
EXPECT_TRUE(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_NONE == surfaceState.getAuxiliarySurfaceMode());
1039+
EXPECT_TRUE(RENDER_SURFACE_STATE::COHERENCY_TYPE_IA_COHERENT == surfaceState.getCoherencyType());
10381040
}
10391041

10401042
struct BufferUnmapTest : public DeviceFixture, public ::testing::Test {

0 commit comments

Comments
 (0)