From 4d2764eb0d6bda2b1cf9ba1fce31900e759aaa8b Mon Sep 17 00:00:00 2001 From: Lukasz Jobczyk Date: Mon, 23 Aug 2021 12:04:56 +0000 Subject: [PATCH] Refactor direct submission per product files Signed-off-by: Lukasz Jobczyk --- .../source/direct_submission/CMakeLists.txt | 9 +++ .../direct_submission_hw.inl | 25 ------ ...ct_submission_prefetch_mitigation_base.inl | 33 ++++++++ ...efetch_mitigation_xe_hp_core_and_later.inl | 29 +++++++ .../direct_submission_prefetcher_base.inl | 16 ++++ ...ission_prefetcher_xe_hp_core_and_later.inl | 22 ++++++ .../gen11/linux/direct_submission_gen11.cpp | 4 +- .../gen11/windows/direct_submission_gen11.cpp | 4 +- .../linux/direct_submission_gen12lp.cpp | 4 +- .../windows/direct_submission_gen12lp.cpp | 4 +- .../gen8/linux/direct_submission_gen8.cpp | 4 +- .../gen8/windows/direct_submission_gen8.cpp | 4 +- .../gen9/linux/direct_submission_gen9.cpp | 4 +- .../gen9/windows/direct_submission_gen9.cpp | 4 +- .../direct_submission_xe_hp_core.cpp | 79 ------------------- .../linux/direct_submission_xe_hp_core.cpp | 11 ++- .../windows/direct_submission_xe_hp_core.cpp | 11 ++- 17 files changed, 153 insertions(+), 114 deletions(-) create mode 100644 shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl create mode 100644 shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl create mode 100644 shared/source/direct_submission/direct_submission_prefetcher_base.inl create mode 100644 shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl delete mode 100644 shared/source/xe_hp_core/direct_submission_xe_hp_core.cpp diff --git a/shared/source/direct_submission/CMakeLists.txt b/shared/source/direct_submission/CMakeLists.txt index f86079e8db..6cde2423ff 100644 --- a/shared/source/direct_submission/CMakeLists.txt +++ b/shared/source/direct_submission/CMakeLists.txt @@ -6,6 +6,8 @@ set(NEO_CORE_DIRECT_SUBMISSION ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_prefetcher_base.inl + ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_prefetch_mitigation_base.inl ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_controller.cpp ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_controller.h ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_hw.h @@ -15,6 +17,13 @@ set(NEO_CORE_DIRECT_SUBMISSION ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_properties.h ) +if(SUPPORT_XEHP_AND_LATER) + list(APPEND NEO_CORE_DIRECT_SUBMISSION + ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_prefetcher_xe_hp_core_and_later.inl + ${CMAKE_CURRENT_SOURCE_DIR}/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl + ) +endif() + set_property(GLOBAL PROPERTY NEO_CORE_DIRECT_SUBMISSION ${NEO_CORE_DIRECT_SUBMISSION}) add_subdirectories() diff --git a/shared/source/direct_submission/direct_submission_hw.inl b/shared/source/direct_submission/direct_submission_hw.inl index 6a92a02948..b7c6bb0504 100644 --- a/shared/source/direct_submission/direct_submission_hw.inl +++ b/shared/source/direct_submission/direct_submission_hw.inl @@ -289,22 +289,6 @@ inline size_t DirectSubmissionHw::getSizeDispatch() { return size; } -template -inline void DirectSubmissionHw::dispatchPrefetchMitigation() { - uint32_t *prefetchNoop = static_cast(ringCommandStream.getSpace(prefetchSize)); - size_t i = 0u; - while (i < prefetchNoops) { - *prefetchNoop = 0u; - prefetchNoop++; - i++; - } -} - -template -inline size_t DirectSubmissionHw::getSizePrefetchMitigation() { - return prefetchSize; -} - template void *DirectSubmissionHw::dispatchWorkloadSection(BatchBuffer &batchBuffer) { void *currentPosition = ringCommandStream.getSpace(0); @@ -387,15 +371,6 @@ inline void DirectSubmissionHw::setReturnAddress(void *re *returnBBStart = cmd; } -template -inline void DirectSubmissionHw::dispatchDisablePrefetcher(bool disable) { -} - -template -inline size_t DirectSubmissionHw::getSizeDisablePrefetcher() { - return 0u; -} - template inline void DirectSubmissionHw::handleNewResourcesSubmission() { } diff --git a/shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl b/shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl new file mode 100644 index 0000000000..e7e515bb1d --- /dev/null +++ b/shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/direct_submission/direct_submission_hw.h" + +namespace NEO { + +template +inline void DirectSubmissionHw::dispatchPrefetchMitigation() { + uint32_t *prefetchNoop = static_cast(ringCommandStream.getSpace(prefetchSize)); + size_t i = 0u; + while (i < prefetchNoops) { + *prefetchNoop = 0u; + prefetchNoop++; + i++; + } +} + +template +inline size_t DirectSubmissionHw::getSizePrefetchMitigation() { + return prefetchSize; +} + +template +inline size_t DirectSubmissionHw::getSizeDisablePrefetcher() { + return 0u; +} + +} // namespace NEO \ No newline at end of file diff --git a/shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl b/shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl new file mode 100644 index 0000000000..60bf11a8ec --- /dev/null +++ b/shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/direct_submission/direct_submission_hw.h" + +namespace NEO { + +template +inline void DirectSubmissionHw::dispatchPrefetchMitigation() { + auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection()); + dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump)); +} + +template +inline size_t DirectSubmissionHw::getSizePrefetchMitigation() { + return getSizeStartSection(); +} + +template +inline size_t DirectSubmissionHw::getSizeDisablePrefetcher() { + using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; + return sizeof(MI_ARB_CHECK); +} + +} // namespace NEO \ No newline at end of file diff --git a/shared/source/direct_submission/direct_submission_prefetcher_base.inl b/shared/source/direct_submission/direct_submission_prefetcher_base.inl new file mode 100644 index 0000000000..d8a2876ba0 --- /dev/null +++ b/shared/source/direct_submission/direct_submission_prefetcher_base.inl @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/direct_submission/direct_submission_hw.h" + +namespace NEO { + +template +inline void DirectSubmissionHw::dispatchDisablePrefetcher(bool disable) { +} + +} // namespace NEO \ No newline at end of file diff --git a/shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl b/shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl new file mode 100644 index 0000000000..158f702477 --- /dev/null +++ b/shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/direct_submission/direct_submission_hw.h" + +namespace NEO { + +template +inline void DirectSubmissionHw::dispatchDisablePrefetcher(bool disable) { + using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; + + MI_ARB_CHECK arbCheck = GfxFamily::cmdInitArbCheck; + arbCheck.setPreFetchDisable(disable); + MI_ARB_CHECK *arbCheckSpace = ringCommandStream.getSpaceForCmd(); + *arbCheckSpace = arbCheck; +} + +} // namespace NEO \ No newline at end of file diff --git a/shared/source/gen11/linux/direct_submission_gen11.cpp b/shared/source/gen11/linux/direct_submission_gen11.cpp index b3b29f7ebe..e107c2090e 100644 --- a/shared/source/gen11/linux/direct_submission_gen11.cpp +++ b/shared/source/gen11/linux/direct_submission_gen11.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen11/windows/direct_submission_gen11.cpp b/shared/source/gen11/windows/direct_submission_gen11.cpp index 9618bcd7d0..ac98760134 100644 --- a/shared/source/gen11/windows/direct_submission_gen11.cpp +++ b/shared/source/gen11/windows/direct_submission_gen11.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen12lp/linux/direct_submission_gen12lp.cpp b/shared/source/gen12lp/linux/direct_submission_gen12lp.cpp index 49ddef3601..521dfee392 100644 --- a/shared/source/gen12lp/linux/direct_submission_gen12lp.cpp +++ b/shared/source/gen12lp/linux/direct_submission_gen12lp.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen12lp/windows/direct_submission_gen12lp.cpp b/shared/source/gen12lp/windows/direct_submission_gen12lp.cpp index 9c2306441b..36d0ade1bb 100644 --- a/shared/source/gen12lp/windows/direct_submission_gen12lp.cpp +++ b/shared/source/gen12lp/windows/direct_submission_gen12lp.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen8/linux/direct_submission_gen8.cpp b/shared/source/gen8/linux/direct_submission_gen8.cpp index e145960075..df7316f42d 100644 --- a/shared/source/gen8/linux/direct_submission_gen8.cpp +++ b/shared/source/gen8/linux/direct_submission_gen8.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen8/windows/direct_submission_gen8.cpp b/shared/source/gen8/windows/direct_submission_gen8.cpp index 3eca676c32..578dcbf3e3 100644 --- a/shared/source/gen8/windows/direct_submission_gen8.cpp +++ b/shared/source/gen8/windows/direct_submission_gen8.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen9/linux/direct_submission_gen9.cpp b/shared/source/gen9/linux/direct_submission_gen9.cpp index b9553bd325..37b192d4fb 100644 --- a/shared/source/gen9/linux/direct_submission_gen9.cpp +++ b/shared/source/gen9/linux/direct_submission_gen9.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/gen9/windows/direct_submission_gen9.cpp b/shared/source/gen9/windows/direct_submission_gen9.cpp index 8cd7208bc7..084ff341c9 100644 --- a/shared/source/gen9/windows/direct_submission_gen9.cpp +++ b/shared/source/gen9/windows/direct_submission_gen9.cpp @@ -1,11 +1,13 @@ /* - * Copyright (C) 2020 Intel Corporation + * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_base.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_base.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" diff --git a/shared/source/xe_hp_core/direct_submission_xe_hp_core.cpp b/shared/source/xe_hp_core/direct_submission_xe_hp_core.cpp deleted file mode 100644 index 39d136bbdf..0000000000 --- a/shared/source/xe_hp_core/direct_submission_xe_hp_core.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "shared/source/direct_submission/direct_submission_hw.inl" -#include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" -#include "shared/source/direct_submission/dispatchers/dispatcher.inl" -#include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" - -#include "hw_cmds.h" - -namespace NEO { -using GfxFamily = XeHpFamily; - -template class Dispatcher; -template class BlitterDispatcher; -template class RenderDispatcher; - -template <> -void DirectSubmissionHw>::dispatchPrefetchMitigation() { - auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection()); - dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump)); -} - -template <> -size_t DirectSubmissionHw>::getSizePrefetchMitigation() { - return getSizeStartSection(); -} - -template <> -void DirectSubmissionHw>::dispatchDisablePrefetcher(bool disable) { - using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; - - MI_ARB_CHECK arbCheck = GfxFamily::cmdInitArbCheck; - arbCheck.setPreFetchDisable(disable); - MI_ARB_CHECK *arbCheckSpace = ringCommandStream.getSpaceForCmd(); - *arbCheckSpace = arbCheck; -} - -template <> -size_t DirectSubmissionHw>::getSizeDisablePrefetcher() { - using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; - return sizeof(MI_ARB_CHECK); -} - -template <> -void DirectSubmissionHw>::dispatchPrefetchMitigation() { - auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection()); - dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump)); -} - -template <> -size_t DirectSubmissionHw>::getSizePrefetchMitigation() { - return getSizeStartSection(); -} - -template <> -void DirectSubmissionHw>::dispatchDisablePrefetcher(bool disable) { - using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; - - MI_ARB_CHECK arbCheck = GfxFamily::cmdInitArbCheck; - arbCheck.setPreFetchDisable(disable); - MI_ARB_CHECK *arbCheckSpace = ringCommandStream.getSpaceForCmd(); - *arbCheckSpace = arbCheck; -} - -template <> -size_t DirectSubmissionHw>::getSizeDisablePrefetcher() { - using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK; - return sizeof(MI_ARB_CHECK); -} - -template class DirectSubmissionHw>; -template class DirectSubmissionHw>; - -} // namespace NEO diff --git a/shared/source/xe_hp_core/linux/direct_submission_xe_hp_core.cpp b/shared/source/xe_hp_core/linux/direct_submission_xe_hp_core.cpp index 1d778cef79..6e3979a108 100644 --- a/shared/source/xe_hp_core/linux/direct_submission_xe_hp_core.cpp +++ b/shared/source/xe_hp_core/linux/direct_submission_xe_hp_core.cpp @@ -5,7 +5,9 @@ * */ -#include "shared/source/direct_submission/direct_submission_hw.h" +#include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" @@ -16,6 +18,13 @@ namespace NEO { using GfxFamily = XeHpFamily; +template class Dispatcher; +template class BlitterDispatcher; +template class RenderDispatcher; + +template class DirectSubmissionHw>; +template class DirectSubmissionHw>; + template class DrmDirectSubmission>; template class DrmDirectSubmission>; } // namespace NEO diff --git a/shared/source/xe_hp_core/windows/direct_submission_xe_hp_core.cpp b/shared/source/xe_hp_core/windows/direct_submission_xe_hp_core.cpp index 392cc48b99..b8fb668238 100644 --- a/shared/source/xe_hp_core/windows/direct_submission_xe_hp_core.cpp +++ b/shared/source/xe_hp_core/windows/direct_submission_xe_hp_core.cpp @@ -5,7 +5,9 @@ * */ -#include "shared/source/direct_submission/direct_submission_hw.h" +#include "shared/source/direct_submission/direct_submission_hw.inl" +#include "shared/source/direct_submission/direct_submission_prefetch_mitigation_xe_hp_core_and_later.inl" +#include "shared/source/direct_submission/direct_submission_prefetcher_xe_hp_core_and_later.inl" #include "shared/source/direct_submission/dispatchers/blitter_dispatcher.inl" #include "shared/source/direct_submission/dispatchers/dispatcher.inl" #include "shared/source/direct_submission/dispatchers/render_dispatcher.inl" @@ -16,6 +18,13 @@ namespace NEO { using GfxFamily = XeHpFamily; +template class Dispatcher; +template class BlitterDispatcher; +template class RenderDispatcher; + +template class DirectSubmissionHw>; +template class DirectSubmissionHw>; + template class WddmDirectSubmission>; template class WddmDirectSubmission>; } // namespace NEO