mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
refactor: reorganize command encode classes 5/n
- move various methods from specialization in cpp into correct inl files - EncodeAtomic, EncodeMiFlushDW, EncodeMemoryPrefetch, EncodeDispatchKernel - move methods from generic inl files that are used on single platform to cpp - EncodeMiFlushDW Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
72efceb8a3
commit
d7f310dd5a
@@ -21,6 +21,7 @@
|
||||
#include "shared/source/helpers/gfx_core_helper.h"
|
||||
#include "shared/source/helpers/hw_info.h"
|
||||
#include "shared/source/helpers/local_id_gen.h"
|
||||
#include "shared/source/helpers/pipeline_select_args.h"
|
||||
#include "shared/source/helpers/preamble.h"
|
||||
#include "shared/source/helpers/register_offsets.h"
|
||||
#include "shared/source/helpers/simd_helper.h"
|
||||
@@ -525,31 +526,6 @@ size_t EncodeSurfaceState<Family>::pushBindingTableAndSurfaceStates(IndirectHeap
|
||||
return ptrDiff(dstBtiTableBase, dstHeap.getCpuBase());
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setImageAuxParamsForCCS(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
using AUXILIARY_SURFACE_MODE = typename Family::RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
// Its expected to not program pitch/qpitch/baseAddress for Aux surface in CCS scenarios
|
||||
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
setFlagsForMediaCompression(surfaceState, gmm);
|
||||
|
||||
setClearColorParams(surfaceState, gmm);
|
||||
setUnifiedAuxBaseAddress<Family>(surfaceState, gmm);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setBufferAuxParamsForCCS(R_SURFACE_STATE *surfaceState) {
|
||||
using AUXILIARY_SURFACE_MODE = typename R_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
|
||||
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool EncodeSurfaceState<Family>::isAuxModeEnabled(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
using AUXILIARY_SURFACE_MODE = typename R_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
|
||||
return (surfaceState->getAuxiliarySurfaceMode() == AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::appendParamsForImageFromBuffer(R_SURFACE_STATE *surfaceState) {
|
||||
}
|
||||
@@ -862,12 +838,6 @@ void EncodeSemaphore<Family>::applyMiSemaphoreWaitCommand(LinearStream &commandS
|
||||
commandsList.push_back(semaphoreCommand);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeAtomic<Family>::setMiAtomicAddress(MI_ATOMIC &atomic, uint64_t writeAddress) {
|
||||
atomic.setMemoryAddress(static_cast<uint32_t>(writeAddress & 0x0000FFFFFFFFULL));
|
||||
atomic.setMemoryAddressHigh(static_cast<uint32_t>(writeAddress >> 32));
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeAtomic<Family>::programMiAtomic(MI_ATOMIC *atomic,
|
||||
uint64_t writeAddress,
|
||||
@@ -1068,12 +1038,6 @@ size_t EncodeMiFlushDW<Family>::getCommandSizeWithWa(const EncodeDummyBlitWaArgs
|
||||
return sizeof(typename Family::MI_FLUSH_DW) + EncodeMiFlushDW<Family>::getWaSize(waArgs);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeMemoryPrefetch<Family>::programMemoryPrefetch(LinearStream &commandStream, const GraphicsAllocation &graphicsAllocation, uint32_t size, size_t offset, const RootDeviceEnvironment &rootDeviceEnvironment) {}
|
||||
|
||||
template <typename Family>
|
||||
inline size_t EncodeMemoryPrefetch<Family>::getSizeForMemoryPrefetch(size_t size, const RootDeviceEnvironment &rootDeviceEnvironment) { return 0u; }
|
||||
|
||||
template <typename Family>
|
||||
void EncodeMiArbCheck<Family>::program(LinearStream &commandStream, std::optional<bool> preParserDisable) {
|
||||
MI_ARB_CHECK cmd = Family::cmdInitArbCheck;
|
||||
@@ -1126,9 +1090,6 @@ inline void EncodeStoreMemory<Family>::programStoreDataImm(LinearStream &command
|
||||
workloadPartitionOffset);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void EncodeEnableRayTracing<GfxFamily>::append3dStateBtd(void *ptr3dStateBtd) {}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeMiPredicate<Family>::encode(LinearStream &cmdStream, [[maybe_unused]] MiPredicateType predicateType) {
|
||||
if constexpr (Family::isUsingMiSetPredicate) {
|
||||
@@ -1147,4 +1108,21 @@ void EnodeUserInterrupt<Family>::encode(LinearStream &commandStream) {
|
||||
*commandStream.getSpaceForCmd<typename Family::MI_USER_INTERRUPT>() = Family::cmdInitUserInterrupt;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool EncodeSurfaceState<Family>::isBindingTablePrefetchPreferred() {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
||||
|
||||
PipelineSelectArgs pipelineSelectArgs;
|
||||
pipelineSelectArgs.systolicPipelineSelectMode = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||
pipelineSelectArgs.systolicPipelineSelectSupport = container.systolicModeSupportRef();
|
||||
|
||||
PreambleHelper<Family>::programPipelineSelect(container.getCommandStream(),
|
||||
pipelineSelectArgs,
|
||||
container.getDevice()->getRootDeviceEnvironment());
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -23,4 +23,16 @@ template <typename Family>
|
||||
void EncodeMemoryFence<Family>::encodeSystemMemoryFence(LinearStream &commandStream, const GraphicsAllocation *globalFenceAllocation) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeAtomic<Family>::setMiAtomicAddress(MI_ATOMIC &atomic, uint64_t writeAddress) {
|
||||
atomic.setMemoryAddress(static_cast<uint32_t>(writeAddress & 0x0000FFFFFFFFULL));
|
||||
atomic.setMemoryAddressHigh(static_cast<uint32_t>(writeAddress >> 32));
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline size_t EncodeMemoryPrefetch<Family>::getSizeForMemoryPrefetch(size_t size, const RootDeviceEnvironment &rootDeviceEnvironment) { return 0u; }
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeMemoryPrefetch<Family>::programMemoryPrefetch(LinearStream &commandStream, const GraphicsAllocation &graphicsAllocation, uint32_t size, size_t offset, const RootDeviceEnvironment &rootDeviceEnvironment) {}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -62,4 +62,32 @@ void EncodeSurfaceState<Family>::setFlagsForMediaCompression(R_SURFACE_STATE *su
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setImageAuxParamsForCCS(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
using AUXILIARY_SURFACE_MODE = typename Family::RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
// Its expected to not program pitch/qpitch/baseAddress for Aux surface in CCS scenarios
|
||||
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
setFlagsForMediaCompression(surfaceState, gmm);
|
||||
|
||||
setClearColorParams(surfaceState, gmm);
|
||||
setUnifiedAuxBaseAddress<Family>(surfaceState, gmm);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setBufferAuxParamsForCCS(R_SURFACE_STATE *surfaceState) {
|
||||
using AUXILIARY_SURFACE_MODE = typename R_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
|
||||
surfaceState->setAuxiliarySurfaceMode(AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool EncodeSurfaceState<Family>::isAuxModeEnabled(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
using AUXILIARY_SURFACE_MODE = typename R_SURFACE_STATE::AUXILIARY_SURFACE_MODE;
|
||||
|
||||
return (surfaceState->getAuxiliarySurfaceMode() == AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeEnableRayTracing<Family>::append3dStateBtd(void *ptr3dStateBtd) {}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "shared/source/gmm_helper/client_context/gmm_client_context.h"
|
||||
#include "shared/source/gmm_helper/gmm_helper.h"
|
||||
#include "shared/source/helpers/hw_walk_order.h"
|
||||
|
||||
namespace NEO {
|
||||
template <typename Family>
|
||||
@@ -67,4 +68,59 @@ template <typename Family>
|
||||
inline void EncodeSurfaceState<Family>::setFlagsForMediaCompression(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setImageAuxParamsForCCS(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setBufferAuxParamsForCCS(R_SURFACE_STATE *surfaceState) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool EncodeSurfaceState<Family>::isAuxModeEnabled(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
return gmm && gmm->isCompressionEnabled();
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
template <typename WalkerType>
|
||||
void EncodeDispatchKernel<Family>::adjustWalkOrder(WalkerType &walkerCmd, uint32_t requiredWorkGroupOrder, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
if (HwWalkOrderHelper::compatibleDimensionOrders[requiredWorkGroupOrder] == HwWalkOrderHelper::linearWalk) {
|
||||
walkerCmd.setDispatchWalkOrder(WalkerType::DISPATCH_WALK_ORDER::LINERAR_WALKER);
|
||||
} else if (HwWalkOrderHelper::compatibleDimensionOrders[requiredWorkGroupOrder] == HwWalkOrderHelper::yOrderWalk) {
|
||||
walkerCmd.setDispatchWalkOrder(WalkerType::DISPATCH_WALK_ORDER::Y_ORDER_WALKER);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setCoherencyType(R_SURFACE_STATE *surfaceState, COHERENCY_TYPE coherencyType) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeWA<Family>::adjustCompressionFormatForPlanarImage(uint32_t &compressionFormat, int plane) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
size_t EncodeMemoryPrefetch<Family>::getSizeForMemoryPrefetch(size_t size, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
|
||||
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
||||
if (!productHelper.allowMemoryPrefetch(hwInfo)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size = alignUp(size, MemoryConstants::pageSize64k);
|
||||
|
||||
size_t count = size / MemoryConstants::pageSize64k;
|
||||
|
||||
return (count * sizeof(typename Family::STATE_PREFETCH));
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeMiFlushDW<Family>::adjust(MI_FLUSH_DW *miFlushDwCmd, const ProductHelper &productHelper) {
|
||||
miFlushDwCmd->setFlushLlc(1);
|
||||
|
||||
if (productHelper.isDcFlushAllowed()) {
|
||||
miFlushDwCmd->setFlushCcs(1);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -32,4 +32,9 @@ void EncodeBatchBufferStartOrEnd<Family>::appendBatchBufferStart(MI_BATCH_BUFFER
|
||||
cmd.setPredicationEnable(predicate);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeAtomic<Family>::setMiAtomicAddress(MI_ATOMIC &atomic, uint64_t writeAddress) {
|
||||
atomic.setMemoryAddress(writeAddress);
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
@@ -36,4 +36,20 @@ void EncodeSurfaceState<Family>::appendImageCompressionParams(R_SURFACE_STATE *s
|
||||
surfaceState->setCompressionFormat(compressionFormat);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setCoherencyType(R_SURFACE_STATE *surfaceState, COHERENCY_TYPE coherencyType) {
|
||||
surfaceState->setCoherencyType(R_SURFACE_STATE::COHERENCY_TYPE_GPU_COHERENT);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeWA<Family>::adjustCompressionFormatForPlanarImage(uint32_t &compressionFormat, int plane) {
|
||||
static_assert(sizeof(plane) == sizeof(GMM_YUV_PLANE_ENUM));
|
||||
if (plane == GMM_PLANE_Y) {
|
||||
compressionFormat &= 0xf;
|
||||
} else if ((plane == GMM_PLANE_U) || (plane == GMM_PLANE_V)) {
|
||||
compressionFormat |= 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -790,33 +790,10 @@ size_t EncodeStateBaseAddress<Family>::getRequiredSizeForStateBaseAddress(Device
|
||||
return size;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
||||
|
||||
PipelineSelectArgs pipelineSelectArgs;
|
||||
pipelineSelectArgs.systolicPipelineSelectMode = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||
pipelineSelectArgs.systolicPipelineSelectSupport = container.systolicModeSupportRef();
|
||||
|
||||
PreambleHelper<Family>::programPipelineSelect(container.getCommandStream(),
|
||||
pipelineSelectArgs,
|
||||
container.getDevice()->getRootDeviceEnvironment());
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeMediaInterfaceDescriptorLoad<Family>::encode(CommandContainer &container, IndirectHeap *childDsh) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeMiFlushDW<Family>::adjust(MI_FLUSH_DW *miFlushDwCmd, const ProductHelper &productHelper) {
|
||||
miFlushDwCmd->setFlushCcs(1);
|
||||
miFlushDwCmd->setFlushLlc(1);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool EncodeSurfaceState<Family>::isBindingTablePrefetchPreferred() {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::encodeExtraBufferParams(EncodeSurfaceStateArgs &args) {
|
||||
auto surfaceState = reinterpret_cast<R_SURFACE_STATE *>(args.outMemory);
|
||||
@@ -859,11 +836,6 @@ void EncodeSurfaceState<Family>::encodeExtraBufferParams(EncodeSurfaceStateArgs
|
||||
surfaceState->setCompressionFormat(compressionFormat);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::setCoherencyType(R_SURFACE_STATE *surfaceState, COHERENCY_TYPE coherencyType) {
|
||||
surfaceState->setCoherencyType(R_SURFACE_STATE::COHERENCY_TYPE_GPU_COHERENT);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSemaphore<Family>::programMiSemaphoreWait(MI_SEMAPHORE_WAIT *cmd,
|
||||
uint64_t compareAddress,
|
||||
@@ -924,16 +896,6 @@ inline void EncodeWA<Family>::addPipeControlPriorToNonPipelinedStateCommand(Line
|
||||
MemorySynchronizationCommands<Family>::addSingleBarrier(commandStream, args);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeWA<Family>::adjustCompressionFormatForPlanarImage(uint32_t &compressionFormat, int plane) {
|
||||
static_assert(sizeof(plane) == sizeof(GMM_YUV_PLANE_ENUM));
|
||||
if (plane == GMM_PLANE_Y) {
|
||||
compressionFormat &= 0xf;
|
||||
} else if ((plane == GMM_PLANE_U) || (plane == GMM_PLANE_V)) {
|
||||
compressionFormat |= 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
inline void EncodeStoreMemory<Family>::programStoreDataImm(MI_STORE_DATA_IMM *cmdBuffer,
|
||||
uint64_t gpuAddress,
|
||||
@@ -962,10 +924,6 @@ inline void EncodeStoreMMIO<Family>::appendFlags(MI_STORE_REGISTER_MEM *storeReg
|
||||
storeRegMem->setWorkloadPartitionIdOffsetEnable(workloadPartition);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
template <typename WalkerType>
|
||||
void EncodeDispatchKernel<Family>::adjustWalkOrder(WalkerType &walkerCmd, uint32_t requiredWorkGroupOrder, const RootDeviceEnvironment &rootDeviceEnvironment) {}
|
||||
|
||||
template <typename Family>
|
||||
size_t EncodeDispatchKernel<Family>::additionalSizeRequiredDsh(uint32_t iddCount) {
|
||||
return 0u;
|
||||
|
||||
@@ -86,11 +86,6 @@ void EncodeSurfaceState<Family>::encodeExtraBufferParams(EncodeSurfaceStateArgs
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
bool EncodeSurfaceState<Family>::isBindingTablePrefetchPreferred() {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeL3State<Family>::encode(CommandContainer &container, bool enableSLM) {
|
||||
}
|
||||
@@ -100,18 +95,6 @@ void EncodeStoreMMIO<Family>::appendFlags(MI_STORE_REGISTER_MEM *storeRegMem, bo
|
||||
storeRegMem->setMmioRemapEnable(true);
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
||||
|
||||
PipelineSelectArgs pipelineSelectArgs;
|
||||
pipelineSelectArgs.systolicPipelineSelectMode = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||
pipelineSelectArgs.systolicPipelineSelectSupport = container.systolicModeSupportRef();
|
||||
|
||||
PreambleHelper<Family>::programPipelineSelect(container.getCommandStream(),
|
||||
pipelineSelectArgs,
|
||||
container.getDevice()->getRootDeviceEnvironment());
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::appendImageCompressionParams(R_SURFACE_STATE *surfaceState, GraphicsAllocation *allocation,
|
||||
GmmHelper *gmmHelper, bool imageFromBuffer, GMM_YUV_PLANE_ENUM plane) {
|
||||
|
||||
@@ -42,11 +42,6 @@ void EncodeEnableRayTracing<Family>::append3dStateBtd(void *ptr3dStateBtd) {
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void EncodeAtomic<Family>::setMiAtomicAddress(MI_ATOMIC &atomic, uint64_t writeAddress) {
|
||||
atomic.setMemoryAddress(writeAddress);
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeComputeMode<Family>::programComputeModeCommand(LinearStream &csr, StateComputeModeProperties &properties, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
using STATE_COMPUTE_MODE = typename Family::STATE_COMPUTE_MODE;
|
||||
@@ -89,10 +84,6 @@ void EncodeComputeMode<Family>::programComputeModeCommand(LinearStream &csr, Sta
|
||||
*buffer = stateComputeMode;
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeWA<Family>::adjustCompressionFormatForPlanarImage(uint32_t &compressionFormat, int plane) {
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeMemoryPrefetch<Family>::programMemoryPrefetch(LinearStream &commandStream, const GraphicsAllocation &graphicsAllocation, uint32_t size, size_t offset, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
using STATE_PREFETCH = typename Family::STATE_PREFETCH;
|
||||
@@ -137,30 +128,6 @@ void EncodeMemoryPrefetch<Family>::programMemoryPrefetch(LinearStream &commandSt
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
size_t EncodeMemoryPrefetch<Family>::getSizeForMemoryPrefetch(size_t size, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
|
||||
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
||||
if (!productHelper.allowMemoryPrefetch(hwInfo)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size = alignUp(size, MemoryConstants::pageSize64k);
|
||||
|
||||
size_t count = size / MemoryConstants::pageSize64k;
|
||||
|
||||
return (count * sizeof(typename Family::STATE_PREFETCH));
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void EncodeMiFlushDW<Family>::adjust(MI_FLUSH_DW *miFlushDwCmd, const ProductHelper &productHelper) {
|
||||
miFlushDwCmd->setFlushLlc(1);
|
||||
|
||||
if (productHelper.isDcFlushAllowed()) {
|
||||
miFlushDwCmd->setFlushCcs(1);
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
template <>
|
||||
void EncodeDispatchKernel<Family>::programBarrierEnable(INTERFACE_DESCRIPTOR_DATA &interfaceDescriptor,
|
||||
@@ -179,19 +146,6 @@ void EncodeDispatchKernel<Family>::programBarrierEnable(INTERFACE_DESCRIPTOR_DAT
|
||||
interfaceDescriptor.setNumberOfBarriers(numBarriers);
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::setImageAuxParamsForCCS(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::setBufferAuxParamsForCCS(R_SURFACE_STATE *surfaceState) {
|
||||
}
|
||||
|
||||
template <>
|
||||
bool EncodeSurfaceState<Family>::isAuxModeEnabled(R_SURFACE_STATE *surfaceState, Gmm *gmm) {
|
||||
return gmm && gmm->isCompressionEnabled();
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::setAuxParamsForMCSCCS(R_SURFACE_STATE *surfaceState, const ReleaseHelper *releaseHelper) {
|
||||
if (releaseHelper && releaseHelper->isAuxSurfaceModeOverrideRequired())
|
||||
@@ -204,20 +158,6 @@ void EncodeDispatchKernel<Family>::setGrfInfo(InterfaceDescriptorType *pInterfac
|
||||
const size_t &sizeCrossThreadData, const size_t &sizePerThreadData,
|
||||
const RootDeviceEnvironment &rootDeviceEnvironment) {}
|
||||
|
||||
template <>
|
||||
template <typename WalkerType>
|
||||
void EncodeDispatchKernel<Family>::adjustWalkOrder(WalkerType &walkerCmd, uint32_t requiredWorkGroupOrder, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
if (HwWalkOrderHelper::compatibleDimensionOrders[requiredWorkGroupOrder] == HwWalkOrderHelper::linearWalk) {
|
||||
walkerCmd.setDispatchWalkOrder(WalkerType::DISPATCH_WALK_ORDER::LINERAR_WALKER);
|
||||
} else if (HwWalkOrderHelper::compatibleDimensionOrders[requiredWorkGroupOrder] == HwWalkOrderHelper::yOrderWalk) {
|
||||
walkerCmd.setDispatchWalkOrder(WalkerType::DISPATCH_WALK_ORDER::Y_ORDER_WALKER);
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::setCoherencyType(Family::RENDER_SURFACE_STATE *surfaceState, Family::RENDER_SURFACE_STATE::COHERENCY_TYPE coherencyType) {
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
#include "shared/source/command_container/command_encoder_enablers.inl"
|
||||
|
||||
@@ -26,11 +26,6 @@ using Family = NEO::XeHpcCoreFamily;
|
||||
|
||||
namespace NEO {
|
||||
|
||||
template <>
|
||||
inline void EncodeAtomic<Family>::setMiAtomicAddress(MI_ATOMIC &atomic, uint64_t writeAddress) {
|
||||
atomic.setMemoryAddress(writeAddress);
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeComputeMode<Family>::programComputeModeCommand(LinearStream &csr, StateComputeModeProperties &properties, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
using STATE_COMPUTE_MODE = typename Family::STATE_COMPUTE_MODE;
|
||||
@@ -178,6 +173,10 @@ void EncodeDispatchKernel<Family>::encodeComputeDispatchAllWalker(WalkerType &wa
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
template <typename WalkerType>
|
||||
void EncodeDispatchKernel<Family>::adjustWalkOrder(WalkerType &walkerCmd, uint32_t requiredWorkGroupOrder, const RootDeviceEnvironment &rootDeviceEnvironment) {}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
#include "shared/source/command_container/command_encoder_enablers.inl"
|
||||
|
||||
@@ -174,6 +174,12 @@ size_t EncodeMiFlushDW<Family>::getWaSize(const EncodeDummyBlitWaArgs &waArgs) {
|
||||
return sizeof(typename Family::MI_FLUSH_DW) + BlitCommandsHelper<Family>::getDummyBlitSize(waArgs);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeMiFlushDW<Family>::adjust(MI_FLUSH_DW *miFlushDwCmd, const ProductHelper &productHelper) {
|
||||
miFlushDwCmd->setFlushCcs(1);
|
||||
miFlushDwCmd->setFlushLlc(1);
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
#include "shared/source/command_container/command_encoder_enablers.inl"
|
||||
|
||||
Reference in New Issue
Block a user