From 32e1b7d1a7748e283a7ba556259469465b9248e1 Mon Sep 17 00:00:00 2001 From: Bartosz Dunajski Date: Fri, 3 Apr 2020 17:38:09 +0200 Subject: [PATCH] Add helper for encoding memory prefetch Change-Id: I481ec11b66ad392ba9748bb5bbb6fd0ad3ce7f12 Signed-off-by: Bartosz Dunajski --- shared/source/command_container/command_encoder.h | 6 ++++++ shared/source/command_container/command_encoder.inl | 6 ++++++ shared/source/gen11/command_encoder_gen11.cpp | 1 + shared/source/gen12lp/command_encoder_gen12lp.cpp | 1 + shared/source/gen8/command_encoder_gen8.cpp | 1 + shared/source/gen9/command_encoder_gen9.cpp | 1 + .../command_container/command_encoder_tests.cpp | 10 ++++++++++ 7 files changed, 26 insertions(+) diff --git a/shared/source/command_container/command_encoder.h b/shared/source/command_container/command_encoder.h index 2fc27f7c90..f7be3c6f69 100644 --- a/shared/source/command_container/command_encoder.h +++ b/shared/source/command_container/command_encoder.h @@ -230,4 +230,10 @@ struct EncodeMiFlushDW { static size_t getMiFlushDwCmdSizeForDataWrite(); static size_t getMiFlushDwWaSize(); }; + +template +struct EncodeMemoryPrefetch { + static void programMemoryPrefetch(LinearStream &commandStream, uint64_t gpuVa, uint32_t size); + static size_t getSizeForMemoryPrefetch(); +}; } // namespace NEO diff --git a/shared/source/command_container/command_encoder.inl b/shared/source/command_container/command_encoder.inl index 0490e78a5e..399ed6c227 100644 --- a/shared/source/command_container/command_encoder.inl +++ b/shared/source/command_container/command_encoder.inl @@ -405,4 +405,10 @@ size_t EncodeMiFlushDW::getMiFlushDwCmdSizeForDataWrite() { return sizeof(typename GfxFamily::MI_FLUSH_DW) + EncodeMiFlushDW::getMiFlushDwWaSize(); } +template +void EncodeMemoryPrefetch::programMemoryPrefetch(LinearStream &commandStream, uint64_t gpuVa, uint32_t size) {} + +template +size_t EncodeMemoryPrefetch::getSizeForMemoryPrefetch() { return 0; } + } // namespace NEO diff --git a/shared/source/gen11/command_encoder_gen11.cpp b/shared/source/gen11/command_encoder_gen11.cpp index c5180e88ca..2deeec60a5 100644 --- a/shared/source/gen11/command_encoder_gen11.cpp +++ b/shared/source/gen11/command_encoder_gen11.cpp @@ -31,4 +31,5 @@ template struct EncodeAtomic; template struct EncodeSempahore; template struct EncodeBatchBufferStartOrEnd; template struct EncodeMiFlushDW; +template struct EncodeMemoryPrefetch; } // namespace NEO diff --git a/shared/source/gen12lp/command_encoder_gen12lp.cpp b/shared/source/gen12lp/command_encoder_gen12lp.cpp index 64e4f1535a..7262895a69 100644 --- a/shared/source/gen12lp/command_encoder_gen12lp.cpp +++ b/shared/source/gen12lp/command_encoder_gen12lp.cpp @@ -63,4 +63,5 @@ template struct EncodeSempahore; template struct EncodeBatchBufferStartOrEnd; template struct EncodeMiFlushDW; template struct EncodeWA; +template struct EncodeMemoryPrefetch; } // namespace NEO diff --git a/shared/source/gen8/command_encoder_gen8.cpp b/shared/source/gen8/command_encoder_gen8.cpp index 72c4dacc37..4a09392770 100644 --- a/shared/source/gen8/command_encoder_gen8.cpp +++ b/shared/source/gen8/command_encoder_gen8.cpp @@ -31,4 +31,5 @@ template struct EncodeAtomic; template struct EncodeSempahore; template struct EncodeBatchBufferStartOrEnd; template struct EncodeMiFlushDW; +template struct EncodeMemoryPrefetch; } // namespace NEO diff --git a/shared/source/gen9/command_encoder_gen9.cpp b/shared/source/gen9/command_encoder_gen9.cpp index 7cefd6d084..8f65fde7ba 100644 --- a/shared/source/gen9/command_encoder_gen9.cpp +++ b/shared/source/gen9/command_encoder_gen9.cpp @@ -31,4 +31,5 @@ template struct EncodeAtomic; template struct EncodeSempahore; template struct EncodeBatchBufferStartOrEnd; template struct EncodeMiFlushDW; +template struct EncodeMemoryPrefetch; } // namespace NEO diff --git a/shared/test/unit_test/command_container/command_encoder_tests.cpp b/shared/test/unit_test/command_container/command_encoder_tests.cpp index 90a7893871..b0c11f8993 100644 --- a/shared/test/unit_test/command_container/command_encoder_tests.cpp +++ b/shared/test/unit_test/command_container/command_encoder_tests.cpp @@ -55,3 +55,13 @@ HWTEST_F(CommandEncoderTests, givenImmDataWriteWhenProgrammingMiFlushDwThenSetAl EXPECT_EQ(gpuAddress, miFlushDwCmd->getDestinationAddress()); EXPECT_EQ(immData, miFlushDwCmd->getImmediateData()); } + +HWTEST_F(CommandEncoderTests, whenEncodeMemoryPrefetchCalledThenDoNothing) { + uint8_t buffer[MemoryConstants::pageSize] = {}; + LinearStream linearStream(buffer, sizeof(buffer)); + + EncodeMemoryPrefetch::programMemoryPrefetch(linearStream, 1, 2); + + EXPECT_EQ(0u, linearStream.getUsed()); + EXPECT_EQ(0u, EncodeMemoryPrefetch::getSizeForMemoryPrefetch()); +}