Refactor direct submission per product files
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
parent
1e8be7305a
commit
4d2764eb0d
|
@ -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()
|
||||
|
|
|
@ -289,22 +289,6 @@ inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizeDispatch() {
|
|||
return size;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchPrefetchMitigation() {
|
||||
uint32_t *prefetchNoop = static_cast<uint32_t *>(ringCommandStream.getSpace(prefetchSize));
|
||||
size_t i = 0u;
|
||||
while (i < prefetchNoops) {
|
||||
*prefetchNoop = 0u;
|
||||
prefetchNoop++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizePrefetchMitigation() {
|
||||
return prefetchSize;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
void *DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchWorkloadSection(BatchBuffer &batchBuffer) {
|
||||
void *currentPosition = ringCommandStream.getSpace(0);
|
||||
|
@ -387,15 +371,6 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::setReturnAddress(void *re
|
|||
*returnBBStart = cmd;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchDisablePrefetcher(bool disable) {
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizeDisablePrefetcher() {
|
||||
return 0u;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::handleNewResourcesSubmission() {
|
||||
}
|
||||
|
|
|
@ -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 <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchPrefetchMitigation() {
|
||||
uint32_t *prefetchNoop = static_cast<uint32_t *>(ringCommandStream.getSpace(prefetchSize));
|
||||
size_t i = 0u;
|
||||
while (i < prefetchNoops) {
|
||||
*prefetchNoop = 0u;
|
||||
prefetchNoop++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizePrefetchMitigation() {
|
||||
return prefetchSize;
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizeDisablePrefetcher() {
|
||||
return 0u;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
|
@ -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 <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchPrefetchMitigation() {
|
||||
auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection());
|
||||
dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump));
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizePrefetchMitigation() {
|
||||
return getSizeStartSection();
|
||||
}
|
||||
|
||||
template <typename GfxFamily, typename Dispatcher>
|
||||
inline size_t DirectSubmissionHw<GfxFamily, Dispatcher>::getSizeDisablePrefetcher() {
|
||||
using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK;
|
||||
return sizeof(MI_ARB_CHECK);
|
||||
}
|
||||
|
||||
} // namespace NEO
|
|
@ -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 <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchDisablePrefetcher(bool disable) {
|
||||
}
|
||||
|
||||
} // namespace NEO
|
|
@ -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 <typename GfxFamily, typename Dispatcher>
|
||||
inline void DirectSubmissionHw<GfxFamily, Dispatcher>::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<MI_ARB_CHECK>();
|
||||
*arbCheckSpace = arbCheck;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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<GfxFamily>;
|
||||
template class BlitterDispatcher<GfxFamily>;
|
||||
template class RenderDispatcher<GfxFamily>;
|
||||
|
||||
template <>
|
||||
void DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::dispatchPrefetchMitigation() {
|
||||
auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection());
|
||||
dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump));
|
||||
}
|
||||
|
||||
template <>
|
||||
size_t DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::getSizePrefetchMitigation() {
|
||||
return getSizeStartSection();
|
||||
}
|
||||
|
||||
template <>
|
||||
void DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::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<MI_ARB_CHECK>();
|
||||
*arbCheckSpace = arbCheck;
|
||||
}
|
||||
|
||||
template <>
|
||||
size_t DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>::getSizeDisablePrefetcher() {
|
||||
using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK;
|
||||
return sizeof(MI_ARB_CHECK);
|
||||
}
|
||||
|
||||
template <>
|
||||
void DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::dispatchPrefetchMitigation() {
|
||||
auto addressToJump = ptrOffset(ringCommandStream.getSpace(0u), getSizeStartSection());
|
||||
dispatchStartSection(getCommandBufferPositionGpuAddress(addressToJump));
|
||||
}
|
||||
|
||||
template <>
|
||||
size_t DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::getSizePrefetchMitigation() {
|
||||
return getSizeStartSection();
|
||||
}
|
||||
|
||||
template <>
|
||||
void DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::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<MI_ARB_CHECK>();
|
||||
*arbCheckSpace = arbCheck;
|
||||
}
|
||||
|
||||
template <>
|
||||
size_t DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>::getSizeDisablePrefetcher() {
|
||||
using MI_ARB_CHECK = typename GfxFamily::MI_ARB_CHECK;
|
||||
return sizeof(MI_ARB_CHECK);
|
||||
}
|
||||
|
||||
template class DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>;
|
||||
template class DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>;
|
||||
|
||||
} // namespace NEO
|
|
@ -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<GfxFamily>;
|
||||
template class BlitterDispatcher<GfxFamily>;
|
||||
template class RenderDispatcher<GfxFamily>;
|
||||
|
||||
template class DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>;
|
||||
template class DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>;
|
||||
|
||||
template class DrmDirectSubmission<GfxFamily, BlitterDispatcher<GfxFamily>>;
|
||||
template class DrmDirectSubmission<GfxFamily, RenderDispatcher<GfxFamily>>;
|
||||
} // namespace NEO
|
||||
|
|
|
@ -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<GfxFamily>;
|
||||
template class BlitterDispatcher<GfxFamily>;
|
||||
template class RenderDispatcher<GfxFamily>;
|
||||
|
||||
template class DirectSubmissionHw<GfxFamily, BlitterDispatcher<GfxFamily>>;
|
||||
template class DirectSubmissionHw<GfxFamily, RenderDispatcher<GfxFamily>>;
|
||||
|
||||
template class WddmDirectSubmission<GfxFamily, BlitterDispatcher<GfxFamily>>;
|
||||
template class WddmDirectSubmission<GfxFamily, RenderDispatcher<GfxFamily>>;
|
||||
} // namespace NEO
|
||||
|
|
Loading…
Reference in New Issue