From 38ca6e986244fcf783dd711950b78376a85731ff Mon Sep 17 00:00:00 2001 From: Maciej Dziuban Date: Mon, 12 Oct 2020 10:13:29 +0200 Subject: [PATCH] Disable L1 for Gen12lp Change-Id: I3b0ec2a6ea9a3bb72507ff66d314bfb1ad7a6a81 Signed-off-by: Maciej Dziuban --- .../gen12lp/buffer_tests_gen12lp.inl | 30 +++++++++++++++---- .../gen12lp/hw_helper_tests_gen12lp.inl | 6 ++-- .../gen12lp/command_encoder_gen12lp.cpp | 4 +-- shared/source/gen12lp/hw_helper_gen12lp.cpp | 4 +-- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/opencl/test/unit_test/gen12lp/buffer_tests_gen12lp.inl b/opencl/test/unit_test/gen12lp/buffer_tests_gen12lp.inl index e14f55e209..0ca02383ef 100644 --- a/opencl/test/unit_test/gen12lp/buffer_tests_gen12lp.inl +++ b/opencl/test/unit_test/gen12lp/buffer_tests_gen12lp.inl @@ -45,7 +45,7 @@ GEN12LPTEST_F(BufferTestsTgllp, givenBufferNotReadonlyWhenProgrammingSurfaceStat EXPECT_EQ(expectedMocs, actualMocs); } -GEN12LPTEST_F(BufferTestsTgllp, givenBufferReadonlyWhenProgrammingSurfaceStateThenUseL1) { +GEN12LPTEST_F(BufferTestsTgllp, givenBufferReadonlyWhenProgrammingSurfaceStateThenUseL3) { auto buffer = std::unique_ptr(Buffer::create( context.get(), CL_MEM_READ_WRITE, @@ -57,12 +57,12 @@ GEN12LPTEST_F(BufferTestsTgllp, givenBufferReadonlyWhenProgrammingSurfaceStateTh typename FamilyType::RENDER_SURFACE_STATE surfaceState = {}; buffer->setArgStateful(&surfaceState, false, false, false, true, context->getDevice(0)->getDevice()); - const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST); + const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER); const auto actualMocs = surfaceState.getMemoryObjectControlState(); EXPECT_EQ(expectedMocs, actualMocs); } -GEN12LPTEST_F(BufferTestsTgllp, givenConstantSurfaceWhenProgrammingSurfaceStateThenUseL1) { +GEN12LPTEST_F(BufferTestsTgllp, givenConstantSurfaceWhenProgrammingSurfaceStateThenUseL3) { auto buffer = std::unique_ptr(Buffer::create( context.get(), CL_MEM_READ_WRITE, @@ -75,12 +75,12 @@ GEN12LPTEST_F(BufferTestsTgllp, givenConstantSurfaceWhenProgrammingSurfaceStateT typename FamilyType::RENDER_SURFACE_STATE surfaceState = {}; buffer->setArgStateful(&surfaceState, false, false, false, false, context->getDevice(0)->getDevice()); - const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST); + const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER); const auto actualMocs = surfaceState.getMemoryObjectControlState(); EXPECT_EQ(expectedMocs, actualMocs); } -GEN12LPTEST_F(BufferTestsTgllp, givenL1ForceEnabledWhenProgrammingSurfaceStateThenUseL1) { +GEN12LPTEST_F(BufferTestsTgllp, givenL1ForceEnabledWhenProgrammingSurfaceStateThenUseL3) { DebugManagerStateRestore restore{}; DebugManager.flags.ForceL1Caching.set(1); @@ -95,6 +95,26 @@ GEN12LPTEST_F(BufferTestsTgllp, givenL1ForceEnabledWhenProgrammingSurfaceStateTh typename FamilyType::RENDER_SURFACE_STATE surfaceState = {}; buffer->setArgStateful(&surfaceState, false, false, false, false, device->getDevice()); + const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER); + const auto actualMocs = surfaceState.getMemoryObjectControlState(); + EXPECT_EQ(expectedMocs, actualMocs); +} + +GEN12LPTEST_F(BufferTestsTgllp, givenBufferReadonlyAndL1ForceEnabledWhenProgrammingSurfaceStateThenUseL1) { + DebugManagerStateRestore restore{}; + DebugManager.flags.ForceL1Caching.set(1); + + auto buffer = std::unique_ptr(Buffer::create( + context.get(), + CL_MEM_READ_ONLY, + MemoryConstants::pageSize, + nullptr, + retVal)); + ASSERT_EQ(CL_SUCCESS, retVal); + + typename FamilyType::RENDER_SURFACE_STATE surfaceState = {}; + buffer->setArgStateful(&surfaceState, false, false, false, false, device->getDevice()); + const auto expectedMocs = device->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST); const auto actualMocs = surfaceState.getMemoryObjectControlState(); EXPECT_EQ(expectedMocs, actualMocs); diff --git a/opencl/test/unit_test/gen12lp/hw_helper_tests_gen12lp.inl b/opencl/test/unit_test/gen12lp/hw_helper_tests_gen12lp.inl index 1890077a86..8873a0e23b 100644 --- a/opencl/test/unit_test/gen12lp/hw_helper_tests_gen12lp.inl +++ b/opencl/test/unit_test/gen12lp/hw_helper_tests_gen12lp.inl @@ -385,12 +385,11 @@ GEN12LPTEST_F(HwHelperTestGen12Lp, whenRequestingMocsThenProperMocsIndicesAreBei const auto mocsNoCache = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED) >> 1; const auto mocsL3 = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER) >> 1; - const auto mocsL1 = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST) >> 1; EXPECT_EQ(mocsNoCache, helper.getMocsIndex(*gmmHelper, false, false)); EXPECT_EQ(mocsNoCache, helper.getMocsIndex(*gmmHelper, false, true)); EXPECT_EQ(mocsL3, helper.getMocsIndex(*gmmHelper, true, false)); - EXPECT_EQ(mocsL1, helper.getMocsIndex(*gmmHelper, true, true)); + EXPECT_EQ(mocsL3, helper.getMocsIndex(*gmmHelper, true, true)); } GEN12LPTEST_F(HwHelperTestGen12Lp, givenL1ForceEnabledWhenRequestingMocsThenProperMocsIndicesAreBeingReturned) { @@ -401,11 +400,12 @@ GEN12LPTEST_F(HwHelperTestGen12Lp, givenL1ForceEnabledWhenRequestingMocsThenProp auto gmmHelper = this->pDevice->getGmmHelper(); const auto mocsNoCache = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED) >> 1; + const auto mocsL3 = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER) >> 1; const auto mocsL1 = gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST) >> 1; EXPECT_EQ(mocsNoCache, helper.getMocsIndex(*gmmHelper, false, false)); EXPECT_EQ(mocsNoCache, helper.getMocsIndex(*gmmHelper, false, true)); - EXPECT_EQ(mocsL1, helper.getMocsIndex(*gmmHelper, true, false)); + EXPECT_EQ(mocsL3, helper.getMocsIndex(*gmmHelper, true, false)); EXPECT_EQ(mocsL1, helper.getMocsIndex(*gmmHelper, true, true)); } diff --git a/shared/source/gen12lp/command_encoder_gen12lp.cpp b/shared/source/gen12lp/command_encoder_gen12lp.cpp index cb2eeb7588..b91066c00c 100644 --- a/shared/source/gen12lp/command_encoder_gen12lp.cpp +++ b/shared/source/gen12lp/command_encoder_gen12lp.cpp @@ -56,8 +56,8 @@ void EncodeSurfaceState::encodeExtraBufferParams(R_SURFACE_STATE *surfac const bool isConstantSurface = allocation && allocation->getAllocationType() == GraphicsAllocation::AllocationType::CONSTANT_SURFACE; bool useL1 = isReadOnly || isConstantSurface; - if (DebugManager.flags.ForceL1Caching.get() != -1) { - useL1 = !!DebugManager.flags.ForceL1Caching.get(); + if (DebugManager.flags.ForceL1Caching.get() != 1) { + useL1 = false; } if (useL1) { diff --git a/shared/source/gen12lp/hw_helper_gen12lp.cpp b/shared/source/gen12lp/hw_helper_gen12lp.cpp index cfe98b3073..408a1b4df4 100644 --- a/shared/source/gen12lp/hw_helper_gen12lp.cpp +++ b/shared/source/gen12lp/hw_helper_gen12lp.cpp @@ -243,8 +243,8 @@ bool HwHelperHw::useOnlyGlobalTimestamps() const { template <> uint32_t HwHelperHw::getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const { if (l3enabled) { - if (DebugManager.flags.ForceL1Caching.get() != -1) { - l1enabled = !!DebugManager.flags.ForceL1Caching.get(); + if (DebugManager.flags.ForceL1Caching.get() != 1) { + l1enabled = false; } if (l1enabled) {