mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-20 08:53:55 +08:00
Rename special pipeline select mode to systolic
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
399758ef17
commit
c3f7e40a8d
@@ -700,7 +700,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
|||||||
|
|
||||||
auto mediaSamplerRequired = false;
|
auto mediaSamplerRequired = false;
|
||||||
uint32_t numGrfRequired = GrfConfig::DefaultGrfNumber;
|
uint32_t numGrfRequired = GrfConfig::DefaultGrfNumber;
|
||||||
auto specialPipelineSelectMode = false;
|
auto systolicPipelineSelectMode = false;
|
||||||
Kernel *kernel = nullptr;
|
Kernel *kernel = nullptr;
|
||||||
bool auxTranslationRequired = false;
|
bool auxTranslationRequired = false;
|
||||||
bool useGlobalAtomics = false;
|
bool useGlobalAtomics = false;
|
||||||
@@ -716,7 +716,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
|||||||
mediaSamplerRequired |= kernel->isVmeKernel();
|
mediaSamplerRequired |= kernel->isVmeKernel();
|
||||||
auto numGrfRequiredByKernel = static_cast<uint32_t>(kernel->getKernelInfo().kernelDescriptor.kernelAttributes.numGrfRequired);
|
auto numGrfRequiredByKernel = static_cast<uint32_t>(kernel->getKernelInfo().kernelDescriptor.kernelAttributes.numGrfRequired);
|
||||||
numGrfRequired = std::max(numGrfRequired, numGrfRequiredByKernel);
|
numGrfRequired = std::max(numGrfRequired, numGrfRequiredByKernel);
|
||||||
specialPipelineSelectMode |= kernel->requiresSpecialPipelineSelectMode();
|
systolicPipelineSelectMode |= kernel->requiresSystolicPipelineSelectMode();
|
||||||
auxTranslationRequired |= kernel->isAuxTranslationRequired();
|
auxTranslationRequired |= kernel->isAuxTranslationRequired();
|
||||||
if (kernel->hasUncacheableStatelessArgs()) {
|
if (kernel->hasUncacheableStatelessArgs()) {
|
||||||
anyUncacheableArgs = true;
|
anyUncacheableArgs = true;
|
||||||
@@ -791,7 +791,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
|||||||
isTextureCacheFlushNeeded(commandType)); // textureCacheFlush
|
isTextureCacheFlushNeeded(commandType)); // textureCacheFlush
|
||||||
|
|
||||||
dispatchFlags.pipelineSelectArgs.mediaSamplerRequired = mediaSamplerRequired;
|
dispatchFlags.pipelineSelectArgs.mediaSamplerRequired = mediaSamplerRequired;
|
||||||
dispatchFlags.pipelineSelectArgs.specialPipelineSelectMode = specialPipelineSelectMode;
|
dispatchFlags.pipelineSelectArgs.systolicPipelineSelectMode = systolicPipelineSelectMode;
|
||||||
|
|
||||||
dispatchFlags.disableEUFusion = kernel->getKernelInfo().kernelDescriptor.kernelAttributes.flags.requiresDisabledEUFusion;
|
dispatchFlags.disableEUFusion = kernel->getKernelInfo().kernelDescriptor.kernelAttributes.flags.requiresDisabledEUFusion;
|
||||||
|
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
|||||||
}
|
}
|
||||||
dispatchFlags.barrierTimestampPacketNodes = ×tampPacketDependencies->barrierNodes;
|
dispatchFlags.barrierTimestampPacketNodes = ×tampPacketDependencies->barrierNodes;
|
||||||
}
|
}
|
||||||
dispatchFlags.pipelineSelectArgs.specialPipelineSelectMode = kernel->requiresSpecialPipelineSelectMode();
|
dispatchFlags.pipelineSelectArgs.systolicPipelineSelectMode = kernel->requiresSystolicPipelineSelectMode();
|
||||||
if (anyUncacheableArgs) {
|
if (anyUncacheableArgs) {
|
||||||
dispatchFlags.l3CacheSettings = L3CachingSettings::l3CacheOff;
|
dispatchFlags.l3CacheSettings = L3CachingSettings::l3CacheOff;
|
||||||
} else if (!kernel->areStatelessWritesUsed()) {
|
} else if (!kernel->areStatelessWritesUsed()) {
|
||||||
|
|||||||
@@ -2178,7 +2178,7 @@ void Kernel::reconfigureKernel() {
|
|||||||
maxKernelWorkGroupSize >>= 1;
|
maxKernelWorkGroupSize >>= 1;
|
||||||
}
|
}
|
||||||
this->containsStatelessWrites = kernelDescriptor.kernelAttributes.flags.usesStatelessWrites;
|
this->containsStatelessWrites = kernelDescriptor.kernelAttributes.flags.usesStatelessWrites;
|
||||||
this->specialPipelineSelectMode = kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode;
|
this->systolicPipelineSelectMode = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Kernel::requiresCacheFlushCommand(const CommandQueue &commandQueue) const {
|
bool Kernel::requiresCacheFlushCommand(const CommandQueue &commandQueue) const {
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ class Kernel : public ReferenceTrackedObject<Kernel> {
|
|||||||
|
|
||||||
bool getAllowNonUniform() const { return program->getAllowNonUniform(); }
|
bool getAllowNonUniform() const { return program->getAllowNonUniform(); }
|
||||||
bool isVmeKernel() const { return kernelInfo.kernelDescriptor.kernelAttributes.flags.usesVme; }
|
bool isVmeKernel() const { return kernelInfo.kernelDescriptor.kernelAttributes.flags.usesVme; }
|
||||||
bool requiresSpecialPipelineSelectMode() const { return specialPipelineSelectMode; }
|
bool requiresSystolicPipelineSelectMode() const { return systolicPipelineSelectMode; }
|
||||||
|
|
||||||
void performKernelTuning(CommandStreamReceiver &commandStreamReceiver, const Vec3<size_t> &lws, const Vec3<size_t> &gws, const Vec3<size_t> &offsets, TimestampPacketContainer *timestampContainer);
|
void performKernelTuning(CommandStreamReceiver &commandStreamReceiver, const Vec3<size_t> &lws, const Vec3<size_t> &gws, const Vec3<size_t> &offsets, TimestampPacketContainer *timestampContainer);
|
||||||
MOCKABLE_VIRTUAL bool isSingleSubdevicePreferred() const;
|
MOCKABLE_VIRTUAL bool isSingleSubdevicePreferred() const;
|
||||||
@@ -527,7 +527,7 @@ class Kernel : public ReferenceTrackedObject<Kernel> {
|
|||||||
bool usingImages = false;
|
bool usingImages = false;
|
||||||
bool usingImagesOnly = false;
|
bool usingImagesOnly = false;
|
||||||
bool auxTranslationRequired = false;
|
bool auxTranslationRequired = false;
|
||||||
bool specialPipelineSelectMode = false;
|
bool systolicPipelineSelectMode = false;
|
||||||
bool svmAllocationsRequireCacheFlush = false;
|
bool svmAllocationsRequireCacheFlush = false;
|
||||||
bool isUnifiedMemorySyncRequired = true;
|
bool isUnifiedMemorySyncRequired = true;
|
||||||
bool debugEnabled = false;
|
bool debugEnabled = false;
|
||||||
|
|||||||
@@ -1084,7 +1084,7 @@ HWTEST2_F(CommandStreamReceiverFlushTaskTests, givenSpecialPipelineSelectModeCha
|
|||||||
CsrSizeRequestFlags csrSizeRequest = {};
|
CsrSizeRequestFlags csrSizeRequest = {};
|
||||||
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
||||||
|
|
||||||
csrSizeRequest.specialPipelineSelectModeChanged = true;
|
csrSizeRequest.systolicPipelineSelectMode = true;
|
||||||
commandStreamReceiver.overrideCsrSizeReqFlags(csrSizeRequest);
|
commandStreamReceiver.overrideCsrSizeReqFlags(csrSizeRequest);
|
||||||
size_t size = commandStreamReceiver.getCmdSizeForPipelineSelect();
|
size_t size = commandStreamReceiver.getCmdSizeForPipelineSelect();
|
||||||
|
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ HWTEST_F(DispatchFlagsTests, givenCommandComputeKernelWhenSubmitThenPassCorrectD
|
|||||||
std::unique_ptr<Command> command(new CommandComputeKernel(*mockCmdQ, kernelOperation, surfaces, flushDC, slmUsed, ndRangeKernel, nullptr, preemptionMode, kernel, 1));
|
std::unique_ptr<Command> command(new CommandComputeKernel(*mockCmdQ, kernelOperation, surfaces, flushDC, slmUsed, ndRangeKernel, nullptr, preemptionMode, kernel, 1));
|
||||||
command->submit(20, false);
|
command->submit(20, false);
|
||||||
|
|
||||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.pipelineSelectArgs.specialPipelineSelectMode);
|
EXPECT_FALSE(mockCsr->passedDispatchFlags.pipelineSelectArgs.systolicPipelineSelectMode);
|
||||||
EXPECT_EQ(kernel.mockKernel->isVmeKernel(), mockCsr->passedDispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
EXPECT_EQ(kernel.mockKernel->isVmeKernel(), mockCsr->passedDispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
||||||
EXPECT_EQ(mockCmdQ->flushStamp->getStampReference(), mockCsr->passedDispatchFlags.flushStampReference);
|
EXPECT_EQ(mockCmdQ->flushStamp->getStampReference(), mockCsr->passedDispatchFlags.flushStampReference);
|
||||||
EXPECT_EQ(mockCmdQ->getThrottle(), mockCsr->passedDispatchFlags.throttle);
|
EXPECT_EQ(mockCmdQ->getThrottle(), mockCsr->passedDispatchFlags.throttle);
|
||||||
@@ -342,7 +342,7 @@ HWTEST_F(DispatchFlagsTests, givenClCommandCopyImageWhenSubmitThenFlushTextureCa
|
|||||||
std::unique_ptr<Command> command(new CommandComputeKernel(*mockCmdQ, kernelOperation, surfaces, flushDC, slmUsed, commandType, nullptr, preemptionMode, kernel, 1));
|
std::unique_ptr<Command> command(new CommandComputeKernel(*mockCmdQ, kernelOperation, surfaces, flushDC, slmUsed, commandType, nullptr, preemptionMode, kernel, 1));
|
||||||
command->submit(20, false);
|
command->submit(20, false);
|
||||||
|
|
||||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.pipelineSelectArgs.specialPipelineSelectMode);
|
EXPECT_FALSE(mockCsr->passedDispatchFlags.pipelineSelectArgs.systolicPipelineSelectMode);
|
||||||
EXPECT_EQ(kernel.mockKernel->isVmeKernel(), mockCsr->passedDispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
EXPECT_EQ(kernel.mockKernel->isVmeKernel(), mockCsr->passedDispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
||||||
EXPECT_EQ(mockCmdQ->flushStamp->getStampReference(), mockCsr->passedDispatchFlags.flushStampReference);
|
EXPECT_EQ(mockCmdQ->flushStamp->getStampReference(), mockCsr->passedDispatchFlags.flushStampReference);
|
||||||
EXPECT_EQ(mockCmdQ->getThrottle(), mockCsr->passedDispatchFlags.throttle);
|
EXPECT_EQ(mockCmdQ->getThrottle(), mockCsr->passedDispatchFlags.throttle);
|
||||||
|
|||||||
@@ -542,12 +542,12 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, RenderSurfaceStateXeHPAndLaterTests, givenSpecificP
|
|||||||
|
|
||||||
using PipelineSelectTest = ::testing::Test;
|
using PipelineSelectTest = ::testing::Test;
|
||||||
|
|
||||||
HWCMDTEST_F(IGFX_XE_HP_CORE, PipelineSelectTest, whenCallingIsSpecialPipelineSelectModeChangedThenReturnCorrectValue) {
|
HWCMDTEST_F(IGFX_XE_HP_CORE, PipelineSelectTest, whenCallingIsSystolicPipelineSelectModeChangedThenReturnCorrectValue) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
bool oldPipelineSelectSpecialMode = true;
|
bool oldPipelineSelectSystolicMode = true;
|
||||||
bool newPipelineSelectSpecialMode = false;
|
bool newPipelineSelectSystolicMode = false;
|
||||||
|
|
||||||
auto result = PreambleHelper<FamilyType>::isSpecialPipelineSelectModeChanged(oldPipelineSelectSpecialMode, newPipelineSelectSpecialMode, *defaultHwInfo);
|
auto result = PreambleHelper<FamilyType>::isSystolicPipelineSelectModeChanged(oldPipelineSelectSystolicMode, newPipelineSelectSystolicMode, *defaultHwInfo);
|
||||||
EXPECT_TRUE(result);
|
EXPECT_TRUE(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ class MockKernel : public Kernel {
|
|||||||
void makeResident(CommandStreamReceiver &commandStreamReceiver) override;
|
void makeResident(CommandStreamReceiver &commandStreamReceiver) override;
|
||||||
void getResidency(std::vector<Surface *> &dst) override;
|
void getResidency(std::vector<Surface *> &dst) override;
|
||||||
|
|
||||||
void setSpecialPipelineSelectMode(bool value) { specialPipelineSelectMode = value; }
|
void setSystolicPipelineSelectMode(bool value) { systolicPipelineSelectMode = value; }
|
||||||
|
|
||||||
bool requiresCacheFlushCommand(const CommandQueue &commandQueue) const override;
|
bool requiresCacheFlushCommand(const CommandQueue &commandQueue) const override;
|
||||||
|
|
||||||
|
|||||||
@@ -65,11 +65,11 @@ PVCTEST_F(PvcCommandStreamReceiverFlushTaskTests, givenNotExistPolicyWhenFlushin
|
|||||||
EXPECT_EQ(notExistPolicy, commandStreamReceiver.streamProperties.stateComputeMode.threadArbitrationPolicy.value);
|
EXPECT_EQ(notExistPolicy, commandStreamReceiver.streamProperties.stateComputeMode.threadArbitrationPolicy.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
PVCTEST_F(PvcCommandStreamReceiverFlushTaskTests, givenRevisionBAndAboveWhenLastSpecialPipelineSelectModeIsTrueAndFlushTaskIsCalledThenDontReprogramPipelineSelect) {
|
PVCTEST_F(PvcCommandStreamReceiverFlushTaskTests, givenRevisionBAndAboveWhenLastSystolicPipelineSelectModeIsTrueAndFlushTaskIsCalledThenDontReprogramPipelineSelect) {
|
||||||
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
||||||
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
|
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
|
||||||
|
|
||||||
flushTaskFlags.pipelineSelectArgs.specialPipelineSelectMode = true;
|
flushTaskFlags.pipelineSelectArgs.systolicPipelineSelectMode = true;
|
||||||
flushTaskFlags.pipelineSelectArgs.mediaSamplerRequired = false;
|
flushTaskFlags.pipelineSelectArgs.mediaSamplerRequired = false;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
@@ -90,8 +90,8 @@ PVCTEST_F(PvcCommandStreamReceiverFlushTaskTests, givenRevisionBAndAboveWhenLast
|
|||||||
|
|
||||||
flushTask(commandStreamReceiver);
|
flushTask(commandStreamReceiver);
|
||||||
|
|
||||||
EXPECT_EQ(testInput.expectedValue, commandStreamReceiver.lastSpecialPipelineSelectMode);
|
EXPECT_EQ(testInput.expectedValue, commandStreamReceiver.lastSystolicPipelineSelectMode);
|
||||||
commandStreamReceiver.lastSpecialPipelineSelectMode = false;
|
commandStreamReceiver.lastSystolicPipelineSelectMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,9 +65,9 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
|
|||||||
threadDimsVec = {threadDims[0], threadDims[1], threadDims[2]};
|
threadDimsVec = {threadDims[0], threadDims[1], threadDims[2]};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool specialModeRequired = kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode;
|
bool systolicModeRequired = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||||
if (PreambleHelper<Family>::isSpecialPipelineSelectModeChanged(container.lastPipelineSelectModeRequired, specialModeRequired, hwInfo)) {
|
if (PreambleHelper<Family>::isSystolicPipelineSelectModeChanged(container.lastPipelineSelectModeRequired, systolicModeRequired, hwInfo)) {
|
||||||
container.lastPipelineSelectModeRequired = specialModeRequired;
|
container.lastPipelineSelectModeRequired = systolicModeRequired;
|
||||||
EncodeComputeMode<Family>::adjustPipelineSelect(container, kernelDescriptor);
|
EncodeComputeMode<Family>::adjustPipelineSelect(container, kernelDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -596,9 +596,9 @@ template <typename Family>
|
|||||||
void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &container, const NEO::KernelDescriptor &kernelDescriptor) {
|
||||||
using PIPELINE_SELECT = typename Family::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename Family::PIPELINE_SELECT;
|
||||||
auto pipelineSelectCmd = Family::cmdInitPipelineSelect;
|
auto pipelineSelectCmd = Family::cmdInitPipelineSelect;
|
||||||
auto isSpecialModeSelected = kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode;
|
auto isSystolicModeSelected = kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode;
|
||||||
|
|
||||||
PreambleHelper<Family>::appendProgramPipelineSelect(&pipelineSelectCmd, isSpecialModeSelected, container.getDevice()->getHardwareInfo());
|
PreambleHelper<Family>::appendProgramPipelineSelect(pipelineSelectCmd, isSystolicModeSelected, container.getDevice()->getHardwareInfo());
|
||||||
|
|
||||||
pipelineSelectCmd.setPipelineSelection(PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU);
|
pipelineSelectCmd.setPipelineSelection(PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU);
|
||||||
|
|
||||||
|
|||||||
@@ -460,7 +460,7 @@ class CommandStreamReceiver {
|
|||||||
bool timestampPacketWriteEnabled = false;
|
bool timestampPacketWriteEnabled = false;
|
||||||
bool staticWorkPartitioningEnabled = false;
|
bool staticWorkPartitioningEnabled = false;
|
||||||
bool nTo1SubmissionModelEnabled = false;
|
bool nTo1SubmissionModelEnabled = false;
|
||||||
bool lastSpecialPipelineSelectMode = false;
|
bool lastSystolicPipelineSelectMode = false;
|
||||||
bool requiresInstructionCacheFlush = false;
|
bool requiresInstructionCacheFlush = false;
|
||||||
|
|
||||||
bool localMemoryEnabled = false;
|
bool localMemoryEnabled = false;
|
||||||
|
|||||||
@@ -261,9 +261,9 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto newL3Config = PreambleHelper<GfxFamily>::getL3Config(hwInfo, dispatchFlags.useSLM);
|
auto newL3Config = PreambleHelper<GfxFamily>::getL3Config(hwInfo, dispatchFlags.useSLM);
|
||||||
auto isSpecialPipelineSelectModeChanged = PreambleHelper<GfxFamily>::isSpecialPipelineSelectModeChanged(lastSpecialPipelineSelectMode,
|
auto isSystolicPipelineSelectModeChanged = PreambleHelper<GfxFamily>::isSystolicPipelineSelectModeChanged(lastSystolicPipelineSelectMode,
|
||||||
dispatchFlags.pipelineSelectArgs.specialPipelineSelectMode,
|
dispatchFlags.pipelineSelectArgs.systolicPipelineSelectMode,
|
||||||
hwInfo);
|
hwInfo);
|
||||||
|
|
||||||
auto requiresCoherency = hwHelper.forceNonGpuCoherencyWA(dispatchFlags.requiresCoherency);
|
auto requiresCoherency = hwHelper.forceNonGpuCoherencyWA(dispatchFlags.requiresCoherency);
|
||||||
this->streamProperties.stateComputeMode.setProperties(requiresCoherency, dispatchFlags.numGrfRequired,
|
this->streamProperties.stateComputeMode.setProperties(requiresCoherency, dispatchFlags.numGrfRequired,
|
||||||
@@ -272,7 +272,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
|||||||
csrSizeRequestFlags.l3ConfigChanged = this->lastSentL3Config != newL3Config;
|
csrSizeRequestFlags.l3ConfigChanged = this->lastSentL3Config != newL3Config;
|
||||||
csrSizeRequestFlags.preemptionRequestChanged = this->lastPreemptionMode != dispatchFlags.preemptionMode;
|
csrSizeRequestFlags.preemptionRequestChanged = this->lastPreemptionMode != dispatchFlags.preemptionMode;
|
||||||
csrSizeRequestFlags.mediaSamplerConfigChanged = this->lastMediaSamplerConfig != static_cast<int8_t>(dispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
csrSizeRequestFlags.mediaSamplerConfigChanged = this->lastMediaSamplerConfig != static_cast<int8_t>(dispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
||||||
csrSizeRequestFlags.specialPipelineSelectModeChanged = isSpecialPipelineSelectModeChanged;
|
csrSizeRequestFlags.systolicPipelineSelectMode = isSystolicPipelineSelectModeChanged;
|
||||||
|
|
||||||
csrSizeRequestFlags.activePartitionsChanged = isProgramActivePartitionConfigRequired();
|
csrSizeRequestFlags.activePartitionsChanged = isProgramActivePartitionConfigRequired();
|
||||||
|
|
||||||
@@ -902,7 +902,7 @@ template <typename GfxFamily>
|
|||||||
inline size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForPipelineSelect() const {
|
inline size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForPipelineSelect() const {
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
if ((csrSizeRequestFlags.mediaSamplerConfigChanged ||
|
if ((csrSizeRequestFlags.mediaSamplerConfigChanged ||
|
||||||
csrSizeRequestFlags.specialPipelineSelectModeChanged ||
|
csrSizeRequestFlags.systolicPipelineSelectMode ||
|
||||||
!isPreambleSent) &&
|
!isPreambleSent) &&
|
||||||
!isPipelineSelectAlreadyProgrammed()) {
|
!isPipelineSelectAlreadyProgrammed()) {
|
||||||
size += PreambleHelper<GfxFamily>::getCmdSizeForPipelineSelect(peekHwInfo());
|
size += PreambleHelper<GfxFamily>::getCmdSizeForPipelineSelect(peekHwInfo());
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForL3Config() const { retur
|
|||||||
|
|
||||||
template <typename GfxFamily>
|
template <typename GfxFamily>
|
||||||
void CommandStreamReceiverHw<GfxFamily>::programPipelineSelect(LinearStream &commandStream, PipelineSelectArgs &pipelineSelectArgs) {
|
void CommandStreamReceiverHw<GfxFamily>::programPipelineSelect(LinearStream &commandStream, PipelineSelectArgs &pipelineSelectArgs) {
|
||||||
if (csrSizeRequestFlags.mediaSamplerConfigChanged || csrSizeRequestFlags.specialPipelineSelectModeChanged || !isPreambleSent) {
|
if (csrSizeRequestFlags.mediaSamplerConfigChanged || csrSizeRequestFlags.systolicPipelineSelectMode || !isPreambleSent) {
|
||||||
PreambleHelper<GfxFamily>::programPipelineSelect(&commandStream, pipelineSelectArgs, peekHwInfo());
|
PreambleHelper<GfxFamily>::programPipelineSelect(&commandStream, pipelineSelectArgs, peekHwInfo());
|
||||||
this->lastMediaSamplerConfig = pipelineSelectArgs.mediaSamplerRequired;
|
this->lastMediaSamplerConfig = pipelineSelectArgs.mediaSamplerRequired;
|
||||||
this->lastSpecialPipelineSelectMode = pipelineSelectArgs.specialPipelineSelectMode;
|
this->lastSystolicPipelineSelectMode = pipelineSelectArgs.systolicPipelineSelectMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ struct CsrSizeRequestFlags {
|
|||||||
bool preemptionRequestChanged = false;
|
bool preemptionRequestChanged = false;
|
||||||
bool mediaSamplerConfigChanged = false;
|
bool mediaSamplerConfigChanged = false;
|
||||||
bool hasSharedHandles = false;
|
bool hasSharedHandles = false;
|
||||||
bool specialPipelineSelectModeChanged = false;
|
bool systolicPipelineSelectMode = false;
|
||||||
bool activePartitionsChanged = false;
|
bool activePartitionsChanged = false;
|
||||||
};
|
};
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
@@ -1098,7 +1098,7 @@ NEO::DecodeError populateKernelDescriptor(NEO::ProgramInfo &dst, NEO::Elf::Elf<N
|
|||||||
kernelDescriptor.kernelAttributes.flags.useGlobalAtomics = execEnv.hasGlobalAtomics;
|
kernelDescriptor.kernelAttributes.flags.useGlobalAtomics = execEnv.hasGlobalAtomics;
|
||||||
kernelDescriptor.kernelAttributes.flags.useStackCalls = execEnv.hasStackCalls;
|
kernelDescriptor.kernelAttributes.flags.useStackCalls = execEnv.hasStackCalls;
|
||||||
kernelDescriptor.kernelAttributes.flags.usesFencesForReadWriteImages = execEnv.hasFenceForImageAccess;
|
kernelDescriptor.kernelAttributes.flags.usesFencesForReadWriteImages = execEnv.hasFenceForImageAccess;
|
||||||
kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = execEnv.hasDpas;
|
kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = execEnv.hasDpas;
|
||||||
kernelDescriptor.kernelAttributes.flags.usesStatelessWrites = (false == execEnv.hasNoStatelessWrite);
|
kernelDescriptor.kernelAttributes.flags.usesStatelessWrites = (false == execEnv.hasNoStatelessWrite);
|
||||||
kernelDescriptor.kernelAttributes.barrierCount = execEnv.barrierCount;
|
kernelDescriptor.kernelAttributes.barrierCount = execEnv.barrierCount;
|
||||||
kernelDescriptor.kernelAttributes.bufferAddressingMode = (execEnv.has4GBBuffers) ? KernelDescriptor::Stateless : KernelDescriptor::BindfulAndStateless;
|
kernelDescriptor.kernelAttributes.bufferAddressingMode = (execEnv.has4GBBuffers) ? KernelDescriptor::Stateless : KernelDescriptor::BindfulAndStateless;
|
||||||
|
|||||||
@@ -43,5 +43,5 @@ void HwInfoConfigHw<gfxProduct>::setAdditionalPipelineSelectFields(void *pipelin
|
|||||||
|
|
||||||
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
||||||
pipelineSelectTglplpCmd->setMaskBits(mask);
|
pipelineSelectTglplpCmd->setMaskBits(mask);
|
||||||
pipelineSelectTglplpCmd->setSpecialModeEnable(pipelineSelectArgs.specialPipelineSelectMode);
|
pipelineSelectTglplpCmd->setSpecialModeEnable(pipelineSelectArgs.systolicPipelineSelectMode);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2019-2021 Intel Corporation
|
* Copyright (C) 2019-2022 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
struct PipelineSelectArgs {
|
struct PipelineSelectArgs {
|
||||||
bool specialPipelineSelectMode = false;
|
bool systolicPipelineSelectMode = false;
|
||||||
bool mediaSamplerRequired = false;
|
bool mediaSamplerRequired = false;
|
||||||
bool is3DPipelineRequired = false;
|
bool is3DPipelineRequired = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ struct PreambleHelper {
|
|||||||
static void programPipelineSelect(LinearStream *pCommandStream,
|
static void programPipelineSelect(LinearStream *pCommandStream,
|
||||||
const PipelineSelectArgs &pipelineSelectArgs,
|
const PipelineSelectArgs &pipelineSelectArgs,
|
||||||
const HardwareInfo &hwInfo);
|
const HardwareInfo &hwInfo);
|
||||||
static void appendProgramPipelineSelect(void *cmd, bool isSpecialModeSelected, const HardwareInfo &hwInfo);
|
static void appendProgramPipelineSelect(typename GfxFamily::PIPELINE_SELECT &cmd, bool isSystolicModeSelected, const HardwareInfo &hwInfo);
|
||||||
static void programPreemption(LinearStream *pCommandStream, Device &device, GraphicsAllocation *preemptionCsr, LogicalStateHelper *logicalStateHelper);
|
static void programPreemption(LinearStream *pCommandStream, Device &device, GraphicsAllocation *preemptionCsr, LogicalStateHelper *logicalStateHelper);
|
||||||
static void addPipeControlBeforeVfeCmd(LinearStream *pCommandStream, const HardwareInfo *hwInfo, EngineGroupType engineGroupType);
|
static void addPipeControlBeforeVfeCmd(LinearStream *pCommandStream, const HardwareInfo *hwInfo, EngineGroupType engineGroupType);
|
||||||
static void appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd);
|
static void appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, void *cmd);
|
||||||
@@ -57,8 +57,8 @@ struct PreambleHelper {
|
|||||||
static uint32_t getL3Config(const HardwareInfo &hwInfo, bool useSLM);
|
static uint32_t getL3Config(const HardwareInfo &hwInfo, bool useSLM);
|
||||||
static bool isL3Configurable(const HardwareInfo &hwInfo);
|
static bool isL3Configurable(const HardwareInfo &hwInfo);
|
||||||
static bool isSystolicModeConfigurable(const HardwareInfo &hwInfo);
|
static bool isSystolicModeConfigurable(const HardwareInfo &hwInfo);
|
||||||
static bool isSpecialPipelineSelectModeChanged(bool lastSpecialPipelineSelectMode, bool newSpecialPipelineSelectMode,
|
static bool isSystolicPipelineSelectModeChanged(bool lastSystolicPipelineSelectMode, bool newSystolicPipelineSelectMode,
|
||||||
const HardwareInfo &hwInfo);
|
const HardwareInfo &hwInfo);
|
||||||
static size_t getAdditionalCommandsSize(const Device &device);
|
static size_t getAdditionalCommandsSize(const Device &device);
|
||||||
static std::vector<int32_t> getSupportedThreadArbitrationPolicies();
|
static std::vector<int32_t> getSupportedThreadArbitrationPolicies();
|
||||||
static size_t getVFECommandsSize();
|
static size_t getVFECommandsSize();
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ size_t PreambleHelper<GfxFamily>::getVFECommandsSize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename GfxFamily>
|
template <typename GfxFamily>
|
||||||
void PreambleHelper<GfxFamily>::appendProgramPipelineSelect(void *cmd, bool isSpecialModeSelected, const HardwareInfo &hwInfo) {}
|
void PreambleHelper<GfxFamily>::appendProgramPipelineSelect(typename GfxFamily::PIPELINE_SELECT &cmd, bool isSystolicModeSelected, const HardwareInfo &hwInfo) {}
|
||||||
|
|
||||||
template <typename GfxFamily>
|
template <typename GfxFamily>
|
||||||
bool PreambleHelper<GfxFamily>::isSystolicModeConfigurable(const HardwareInfo &hwInfo) {
|
bool PreambleHelper<GfxFamily>::isSystolicModeConfigurable(const HardwareInfo &hwInfo) {
|
||||||
@@ -83,8 +83,8 @@ bool PreambleHelper<GfxFamily>::isSystolicModeConfigurable(const HardwareInfo &h
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename GfxFamily>
|
template <typename GfxFamily>
|
||||||
bool PreambleHelper<GfxFamily>::isSpecialPipelineSelectModeChanged(bool lastSpecialPipelineSelectMode, bool newSpecialPipelineSelectMode,
|
bool PreambleHelper<GfxFamily>::isSystolicPipelineSelectModeChanged(bool lastSystolicPipelineSelectMode, bool newSystolicPipelineSelectMode,
|
||||||
const HardwareInfo &hwInfo) {
|
const HardwareInfo &hwInfo) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
@@ -26,22 +26,20 @@ template <>
|
|||||||
bool PreambleHelper<Family>::isSystolicModeConfigurable(const HardwareInfo &hwInfo);
|
bool PreambleHelper<Family>::isSystolicModeConfigurable(const HardwareInfo &hwInfo);
|
||||||
|
|
||||||
template <typename Family>
|
template <typename Family>
|
||||||
void PreambleHelper<Family>::appendProgramPipelineSelect(void *cmd, bool isSpecialModeSelected, const HardwareInfo &hwInfo) {
|
void PreambleHelper<Family>::appendProgramPipelineSelect(typename Family::PIPELINE_SELECT &cmd, bool isSystolicModeSelected, const HardwareInfo &hwInfo) {
|
||||||
using PIPELINE_SELECT = typename Family::PIPELINE_SELECT;
|
auto mask = cmd.getMaskBits();
|
||||||
auto command = static_cast<PIPELINE_SELECT *>(cmd);
|
|
||||||
auto mask = command->getMaskBits();
|
|
||||||
|
|
||||||
if (PreambleHelper<Family>::isSystolicModeConfigurable(hwInfo)) {
|
if (PreambleHelper<Family>::isSystolicModeConfigurable(hwInfo)) {
|
||||||
command->setSystolicModeEnable(isSpecialModeSelected);
|
cmd.setSystolicModeEnable(isSystolicModeSelected);
|
||||||
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DebugManager.flags.OverrideSystolicPipelineSelect.get() != -1) {
|
if (DebugManager.flags.OverrideSystolicPipelineSelect.get() != -1) {
|
||||||
command->setSystolicModeEnable(DebugManager.flags.OverrideSystolicPipelineSelect.get());
|
cmd.setSystolicModeEnable(DebugManager.flags.OverrideSystolicPipelineSelect.get());
|
||||||
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
mask |= pipelineSelectSystolicModeEnableMaskBits;
|
||||||
}
|
}
|
||||||
|
|
||||||
command->setMaskBits(mask);
|
cmd.setMaskBits(mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Family>
|
template <typename Family>
|
||||||
@@ -54,16 +52,16 @@ void PreambleHelper<Family>::programPipelineSelect(LinearStream *pCommandStream,
|
|||||||
PIPELINE_SELECT cmd = Family::cmdInitPipelineSelect;
|
PIPELINE_SELECT cmd = Family::cmdInitPipelineSelect;
|
||||||
|
|
||||||
if (DebugManager.flags.CleanStateInPreamble.get()) {
|
if (DebugManager.flags.CleanStateInPreamble.get()) {
|
||||||
auto pCmd = pCommandStream->getSpaceForCmd<PIPELINE_SELECT>();
|
auto cmdBuffer = pCommandStream->getSpaceForCmd<PIPELINE_SELECT>();
|
||||||
cmd.setPipelineSelection(PIPELINE_SELECT::PIPELINE_SELECTION_3D);
|
cmd.setPipelineSelection(PIPELINE_SELECT::PIPELINE_SELECTION_3D);
|
||||||
*pCmd = cmd;
|
*cmdBuffer = cmd;
|
||||||
|
|
||||||
PipeControlArgs args = {};
|
PipeControlArgs args = {};
|
||||||
args.stateCacheInvalidationEnable = true;
|
args.stateCacheInvalidationEnable = true;
|
||||||
MemorySynchronizationCommands<Family>::addSingleBarrier(*pCommandStream, args);
|
MemorySynchronizationCommands<Family>::addSingleBarrier(*pCommandStream, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pCmd = pCommandStream->getSpaceForCmd<PIPELINE_SELECT>();
|
auto cmdBuffer = pCommandStream->getSpaceForCmd<PIPELINE_SELECT>();
|
||||||
|
|
||||||
auto mask = pipelineSelectEnablePipelineSelectMaskBits;
|
auto mask = pipelineSelectEnablePipelineSelectMaskBits;
|
||||||
|
|
||||||
@@ -74,9 +72,9 @@ void PreambleHelper<Family>::programPipelineSelect(LinearStream *pCommandStream,
|
|||||||
}
|
}
|
||||||
cmd.setMaskBits(mask);
|
cmd.setMaskBits(mask);
|
||||||
|
|
||||||
appendProgramPipelineSelect(&cmd, pipelineSelectArgs.specialPipelineSelectMode, hwInfo);
|
appendProgramPipelineSelect(cmd, pipelineSelectArgs.systolicPipelineSelectMode, hwInfo);
|
||||||
|
|
||||||
*pCmd = cmd;
|
*cmdBuffer = cmd;
|
||||||
|
|
||||||
if (DebugManager.flags.CleanStateInPreamble.get()) {
|
if (DebugManager.flags.CleanStateInPreamble.get()) {
|
||||||
PipeControlArgs args = {};
|
PipeControlArgs args = {};
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ struct KernelDescriptor {
|
|||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
// 0
|
// 0
|
||||||
bool usesSpecialPipelineSelectMode : 1;
|
bool usesSystolicPipelineSelectMode : 1;
|
||||||
bool usesStringMapForPrintf : 1;
|
bool usesStringMapForPrintf : 1;
|
||||||
bool usesPrintf : 1;
|
bool usesPrintf : 1;
|
||||||
bool usesFencesForReadWriteImages : 1;
|
bool usesFencesForReadWriteImages : 1;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ void populateKernelDescriptor(KernelDescriptor &dst, const SPatchExecutionEnviro
|
|||||||
dst.kernelAttributes.flags.requiresSubgroupIndependentForwardProgress = (0 != execEnv.SubgroupIndependentForwardProgressRequired);
|
dst.kernelAttributes.flags.requiresSubgroupIndependentForwardProgress = (0 != execEnv.SubgroupIndependentForwardProgressRequired);
|
||||||
dst.kernelAttributes.flags.useGlobalAtomics = (0 != execEnv.HasGlobalAtomics);
|
dst.kernelAttributes.flags.useGlobalAtomics = (0 != execEnv.HasGlobalAtomics);
|
||||||
dst.kernelAttributes.flags.usesFencesForReadWriteImages = (0 != execEnv.UsesFencesForReadWriteImages);
|
dst.kernelAttributes.flags.usesFencesForReadWriteImages = (0 != execEnv.UsesFencesForReadWriteImages);
|
||||||
dst.kernelAttributes.flags.usesSpecialPipelineSelectMode = (0 != execEnv.HasDPAS);
|
dst.kernelAttributes.flags.usesSystolicPipelineSelectMode = (0 != execEnv.HasDPAS);
|
||||||
dst.kernelAttributes.flags.usesStatelessWrites = (0 != execEnv.StatelessWritesCount);
|
dst.kernelAttributes.flags.usesStatelessWrites = (0 != execEnv.StatelessWritesCount);
|
||||||
dst.kernelAttributes.flags.useStackCalls = (0 != execEnv.HasStackCalls);
|
dst.kernelAttributes.flags.useStackCalls = (0 != execEnv.HasStackCalls);
|
||||||
dst.kernelAttributes.flags.hasRTCalls = (0 != execEnv.HasRTCalls);
|
dst.kernelAttributes.flags.hasRTCalls = (0 != execEnv.HasRTCalls);
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ class HwInfoConfig {
|
|||||||
virtual bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const = 0;
|
virtual bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const = 0;
|
||||||
virtual bool isFlushTaskAllowed() const = 0;
|
virtual bool isFlushTaskAllowed() const = 0;
|
||||||
virtual bool programAllStateComputeCommandFields() const = 0;
|
virtual bool programAllStateComputeCommandFields() const = 0;
|
||||||
virtual bool isSpecialPipelineSelectModeChanged(const HardwareInfo &hwInfo) const = 0;
|
virtual bool isSystolicPipelineSelectModeChanged(const HardwareInfo &hwInfo) const = 0;
|
||||||
virtual bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const = 0;
|
virtual bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const = 0;
|
||||||
virtual bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const = 0;
|
virtual bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const = 0;
|
||||||
virtual bool isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
virtual bool isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
||||||
@@ -239,7 +239,7 @@ class HwInfoConfigHw : public HwInfoConfig {
|
|||||||
bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const override;
|
bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const override;
|
||||||
bool isFlushTaskAllowed() const override;
|
bool isFlushTaskAllowed() const override;
|
||||||
bool programAllStateComputeCommandFields() const override;
|
bool programAllStateComputeCommandFields() const override;
|
||||||
bool isSpecialPipelineSelectModeChanged(const HardwareInfo &hwInfo) const override;
|
bool isSystolicPipelineSelectModeChanged(const HardwareInfo &hwInfo) const override;
|
||||||
bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const override;
|
bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const override;
|
||||||
bool isComputeDispatchAllWalkerEnableInComputeWalkerRequired(const HardwareInfo &hwInfo) const override;
|
bool isComputeDispatchAllWalkerEnableInComputeWalkerRequired(const HardwareInfo &hwInfo) const override;
|
||||||
bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const override;
|
bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const override;
|
||||||
|
|||||||
@@ -357,7 +357,7 @@ bool HwInfoConfigHw<gfxProduct>::programAllStateComputeCommandFields() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <PRODUCT_FAMILY gfxProduct>
|
template <PRODUCT_FAMILY gfxProduct>
|
||||||
bool HwInfoConfigHw<gfxProduct>::isSpecialPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
bool HwInfoConfigHw<gfxProduct>::isSystolicPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ void PreambleHelper<Family>::appendProgramVFEState(const HardwareInfo &hwInfo, c
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool PreambleHelper<Family>::isSpecialPipelineSelectModeChanged(bool lastSpecialPipelineSelectMode, bool newSpecialPipelineSelectMode,
|
bool PreambleHelper<Family>::isSystolicPipelineSelectModeChanged(bool lastSystolicPipelineSelectMode, bool newSystolicPipelineSelectMode,
|
||||||
const HardwareInfo &hwInfo) {
|
const HardwareInfo &hwInfo) {
|
||||||
return lastSpecialPipelineSelectMode != newSpecialPipelineSelectMode;
|
return lastSystolicPipelineSelectMode != newSystolicPipelineSelectMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
|||||||
@@ -59,11 +59,11 @@ bool PreambleHelper<Family>::isSystolicModeConfigurable(const HardwareInfo &hwIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool PreambleHelper<Family>::isSpecialPipelineSelectModeChanged(bool lastSpecialPipelineSelectMode, bool newSpecialPipelineSelectMode,
|
bool PreambleHelper<Family>::isSystolicPipelineSelectModeChanged(bool lastSystolicPipelineSelectMode, bool newSystolicPipelineSelectMode,
|
||||||
const HardwareInfo &hwInfo) {
|
const HardwareInfo &hwInfo) {
|
||||||
|
|
||||||
const auto &hwInfoConfig = *NEO::HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
const auto &hwInfoConfig = *NEO::HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||||
return (lastSpecialPipelineSelectMode != newSpecialPipelineSelectMode) && hwInfoConfig.isSpecialPipelineSelectModeChanged(hwInfo);
|
return (lastSystolicPipelineSelectMode != newSystolicPipelineSelectMode) && hwInfoConfig.isSystolicPipelineSelectModeChanged(hwInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
template struct PreambleHelper<Family>;
|
template struct PreambleHelper<Family>;
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ bool HwInfoConfigHw<gfxProduct>::isDisableOverdispatchAvailable(const HardwareIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool HwInfoConfigHw<gfxProduct>::isSpecialPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
bool HwInfoConfigHw<gfxProduct>::isSystolicPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
||||||
return PVC::isAtMostXtA0(hwInfo);
|
return PVC::isAtMostXtA0(hwInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ bool PreambleHelper<Family>::isSystolicModeConfigurable(const HardwareInfo &hwIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool PreambleHelper<Family>::isSpecialPipelineSelectModeChanged(bool lastSpecialPipelineSelectMode, bool newSpecialPipelineSelectMode,
|
bool PreambleHelper<Family>::isSystolicPipelineSelectModeChanged(bool lastSystolicPipelineSelectMode, bool newSystolicPipelineSelectMode,
|
||||||
const HardwareInfo &hwInfo) {
|
const HardwareInfo &hwInfo) {
|
||||||
return lastSpecialPipelineSelectMode != newSpecialPipelineSelectMode;
|
return lastSystolicPipelineSelectMode != newSystolicPipelineSelectMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
template struct PreambleHelper<Family>;
|
template struct PreambleHelper<Family>;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class UltCommandStreamReceiver : public CommandStreamReceiverHw<GfxFamily>, publ
|
|||||||
using BaseClass::CommandStreamReceiver::lastPreemptionMode;
|
using BaseClass::CommandStreamReceiver::lastPreemptionMode;
|
||||||
using BaseClass::CommandStreamReceiver::lastSentL3Config;
|
using BaseClass::CommandStreamReceiver::lastSentL3Config;
|
||||||
using BaseClass::CommandStreamReceiver::lastSentUseGlobalAtomics;
|
using BaseClass::CommandStreamReceiver::lastSentUseGlobalAtomics;
|
||||||
using BaseClass::CommandStreamReceiver::lastSpecialPipelineSelectMode;
|
using BaseClass::CommandStreamReceiver::lastSystolicPipelineSelectMode;
|
||||||
using BaseClass::CommandStreamReceiver::lastVmeSubslicesConfig;
|
using BaseClass::CommandStreamReceiver::lastVmeSubslicesConfig;
|
||||||
using BaseClass::CommandStreamReceiver::latestFlushedTaskCount;
|
using BaseClass::CommandStreamReceiver::latestFlushedTaskCount;
|
||||||
using BaseClass::CommandStreamReceiver::latestSentStatelessMocsConfig;
|
using BaseClass::CommandStreamReceiver::latestSentStatelessMocsConfig;
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ bool HwInfoConfigHw<IGFX_UNKNOWN>::programAllStateComputeCommandFields() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool HwInfoConfigHw<IGFX_UNKNOWN>::isSpecialPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
bool HwInfoConfigHw<IGFX_UNKNOWN>::isSystolicPipelineSelectModeChanged(const HardwareInfo &hwInfo) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2615,7 +2615,7 @@ TEST(PopulateKernelDescriptor, GivenMinimalExecutionEnvThenPopulateKernelDescrip
|
|||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.useGlobalAtomics, Defaults::hasGlobalAtomics);
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.useGlobalAtomics, Defaults::hasGlobalAtomics);
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.useStackCalls, Defaults::hasStackCalls);
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.useStackCalls, Defaults::hasStackCalls);
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesFencesForReadWriteImages, Defaults::hasFenceForImageAccess);
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesFencesForReadWriteImages, Defaults::hasFenceForImageAccess);
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode, Defaults::hasDpas);
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode, Defaults::hasDpas);
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesStatelessWrites, (false == Defaults::hasNoStatelessWrite));
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesStatelessWrites, (false == Defaults::hasNoStatelessWrite));
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.barrierCount, static_cast<uint8_t>(Defaults::barrierCount));
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.barrierCount, static_cast<uint8_t>(Defaults::barrierCount));
|
||||||
EXPECT_EQ(kernelDescriptor.kernelAttributes.binaryFormat, DeviceBinaryFormat::Zebin);
|
EXPECT_EQ(kernelDescriptor.kernelAttributes.binaryFormat, DeviceBinaryFormat::Zebin);
|
||||||
|
|||||||
@@ -1283,7 +1283,7 @@ HWTEST2_F(CommandEncodeStatesTest,
|
|||||||
bool dpasModeRequired = true;
|
bool dpasModeRequired = true;
|
||||||
cmdContainer->lastPipelineSelectModeRequired = false;
|
cmdContainer->lastPipelineSelectModeRequired = false;
|
||||||
|
|
||||||
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = dpasModeRequired;
|
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = dpasModeRequired;
|
||||||
|
|
||||||
bool requiresUncachedMocs = false;
|
bool requiresUncachedMocs = false;
|
||||||
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
||||||
@@ -1313,7 +1313,7 @@ HWTEST2_F(CommandEncodeStatesTest,
|
|||||||
bool dpasModeRequired = true;
|
bool dpasModeRequired = true;
|
||||||
DebugManager.flags.OverrideSystolicPipelineSelect.set(!dpasModeRequired);
|
DebugManager.flags.OverrideSystolicPipelineSelect.set(!dpasModeRequired);
|
||||||
cmdContainer->lastPipelineSelectModeRequired = false;
|
cmdContainer->lastPipelineSelectModeRequired = false;
|
||||||
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = dpasModeRequired;
|
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = dpasModeRequired;
|
||||||
|
|
||||||
bool requiresUncachedMocs = false;
|
bool requiresUncachedMocs = false;
|
||||||
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
||||||
@@ -1340,7 +1340,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandEncodeStatesTest,
|
|||||||
|
|
||||||
bool dpasModeRequired = true;
|
bool dpasModeRequired = true;
|
||||||
cmdContainer->lastPipelineSelectModeRequired = dpasModeRequired;
|
cmdContainer->lastPipelineSelectModeRequired = dpasModeRequired;
|
||||||
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = dpasModeRequired;
|
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = dpasModeRequired;
|
||||||
|
|
||||||
bool requiresUncachedMocs = false;
|
bool requiresUncachedMocs = false;
|
||||||
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
EncodeDispatchKernelArgs dispatchArgs = createDefaultDispatchKernelArgs(pDevice, dispatchInterface.get(), dims, requiresUncachedMocs);
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenLargeGrfModeDisabledThenExpectedCommands
|
|||||||
|
|
||||||
HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithKernelDpasThenSystolicModeEnabled, IsWithinXeGfxFamily) {
|
HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithKernelDpasThenSystolicModeEnabled, IsWithinXeGfxFamily) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
||||||
GenCmdList commands;
|
GenCmdList commands;
|
||||||
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
||||||
@@ -121,7 +121,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithKernelDpasThenSystol
|
|||||||
|
|
||||||
HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithNoKernelDpasThenSystolicModeIsNotEnabled, IsWithinXeGfxFamily) {
|
HWTEST2_F(CommandEncodeStatesTest, givenCommandContainerWithNoKernelDpasThenSystolicModeIsNotEnabled, IsWithinXeGfxFamily) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = false;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = false;
|
||||||
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
||||||
GenCmdList commands;
|
GenCmdList commands;
|
||||||
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
||||||
@@ -138,7 +138,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenDebugModeToOverrideSystolicModeToTrueWhe
|
|||||||
DebugManager.flags.OverrideSystolicPipelineSelect.set(1);
|
DebugManager.flags.OverrideSystolicPipelineSelect.set(1);
|
||||||
|
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = false;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = false;
|
||||||
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
||||||
GenCmdList commands;
|
GenCmdList commands;
|
||||||
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
||||||
@@ -155,7 +155,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenDebugModeToOverrideSystolicModeToFalseWh
|
|||||||
DebugManager.flags.OverrideSystolicPipelineSelect.set(0);
|
DebugManager.flags.OverrideSystolicPipelineSelect.set(0);
|
||||||
|
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
EncodeComputeMode<FamilyType>::adjustPipelineSelect(*cmdContainer.get(), descriptor);
|
||||||
GenCmdList commands;
|
GenCmdList commands;
|
||||||
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
CmdParse<FamilyType>::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed());
|
||||||
@@ -175,7 +175,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenLargeGrfModeEnabledThenExpectedCommandsA
|
|||||||
|
|
||||||
auto usedSpaceBefore = cmdContainer->getCommandStream()->getUsed();
|
auto usedSpaceBefore = cmdContainer->getCommandStream()->getUsed();
|
||||||
|
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
NEO::EncodeComputeMode<GfxFamily>::adjustPipelineSelect(*cmdContainer, descriptor);
|
NEO::EncodeComputeMode<GfxFamily>::adjustPipelineSelect(*cmdContainer, descriptor);
|
||||||
StreamProperties streamProperties{};
|
StreamProperties streamProperties{};
|
||||||
streamProperties.stateComputeMode.largeGrfMode.set(1);
|
streamProperties.stateComputeMode.largeGrfMode.set(1);
|
||||||
@@ -213,7 +213,7 @@ HWTEST2_F(CommandEncodeStatesTest, givenLargeGrfModeEnabledAndDisabledThenExpect
|
|||||||
|
|
||||||
auto usedSpaceBefore = cmdContainer->getCommandStream()->getUsed();
|
auto usedSpaceBefore = cmdContainer->getCommandStream()->getUsed();
|
||||||
|
|
||||||
descriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
descriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
NEO::EncodeComputeMode<GfxFamily>::adjustPipelineSelect(*cmdContainer, descriptor);
|
NEO::EncodeComputeMode<GfxFamily>::adjustPipelineSelect(*cmdContainer, descriptor);
|
||||||
StreamProperties streamProperties{};
|
StreamProperties streamProperties{};
|
||||||
streamProperties.stateComputeMode.largeGrfMode.set(1);
|
streamProperties.stateComputeMode.largeGrfMode.set(1);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ using namespace NEO;
|
|||||||
|
|
||||||
using PreambleHelperTestsAdlp = ::testing::Test;
|
using PreambleHelperTestsAdlp = ::testing::Test;
|
||||||
|
|
||||||
ADLPTEST_F(PreambleHelperTestsAdlp, givenSpecialPipelineSelectModeDisabledWhenProgrammingPipelineSelectThenDisableSystolicMode) {
|
ADLPTEST_F(PreambleHelperTestsAdlp, givenSystolicPipelineSelectModeDisabledWhenProgrammingPipelineSelectThenDisableSystolicMode) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
constexpr static auto bufferSize = sizeof(PIPELINE_SELECT);
|
constexpr static auto bufferSize = sizeof(PIPELINE_SELECT);
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ ADLPTEST_F(PreambleHelperTestsAdlp, givenSpecialPipelineSelectModeDisabledWhenPr
|
|||||||
LinearStream stream{streamBuffer, sizeof(bufferSize)};
|
LinearStream stream{streamBuffer, sizeof(bufferSize)};
|
||||||
|
|
||||||
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
||||||
flags.pipelineSelectArgs.specialPipelineSelectMode = false;
|
flags.pipelineSelectArgs.systolicPipelineSelectMode = false;
|
||||||
|
|
||||||
auto *pCmd = static_cast<PIPELINE_SELECT *>(stream.getSpace(0));
|
auto *pCmd = static_cast<PIPELINE_SELECT *>(stream.getSpace(0));
|
||||||
PreambleHelper<FamilyType>::programPipelineSelect(&stream, flags.pipelineSelectArgs, ADLP::hwInfo);
|
PreambleHelper<FamilyType>::programPipelineSelect(&stream, flags.pipelineSelectArgs, ADLP::hwInfo);
|
||||||
@@ -37,7 +37,7 @@ ADLPTEST_F(PreambleHelperTestsAdlp, givenSpecialPipelineSelectModeDisabledWhenPr
|
|||||||
EXPECT_EQ(PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU, pCmd->getPipelineSelection());
|
EXPECT_EQ(PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU, pCmd->getPipelineSelection());
|
||||||
}
|
}
|
||||||
|
|
||||||
ADLPTEST_F(PreambleHelperTestsAdlp, givenSpecialPipelineSelectModeEnabledWhenProgrammingPipelineSelectThenEnableSystolicMode) {
|
ADLPTEST_F(PreambleHelperTestsAdlp, givenSystolicPipelineSelectModeEnabledWhenProgrammingPipelineSelectThenEnableSystolicMode) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
constexpr static auto bufferSize = sizeof(PIPELINE_SELECT);
|
constexpr static auto bufferSize = sizeof(PIPELINE_SELECT);
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ ADLPTEST_F(PreambleHelperTestsAdlp, givenSpecialPipelineSelectModeEnabledWhenPro
|
|||||||
LinearStream stream{streamBuffer, sizeof(bufferSize)};
|
LinearStream stream{streamBuffer, sizeof(bufferSize)};
|
||||||
|
|
||||||
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
DispatchFlags flags = DispatchFlagsHelper::createDefaultDispatchFlags();
|
||||||
flags.pipelineSelectArgs.specialPipelineSelectMode = true;
|
flags.pipelineSelectArgs.systolicPipelineSelectMode = true;
|
||||||
|
|
||||||
auto *pCmd = static_cast<PIPELINE_SELECT *>(stream.getSpace(0));
|
auto *pCmd = static_cast<PIPELINE_SELECT *>(stream.getSpace(0));
|
||||||
PreambleHelper<FamilyType>::programPipelineSelect(&stream, flags.pipelineSelectArgs, ADLP::hwInfo);
|
PreambleHelper<FamilyType>::programPipelineSelect(&stream, flags.pipelineSelectArgs, ADLP::hwInfo);
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenIsGlobalFenceInCommandStreamRequ
|
|||||||
EXPECT_FALSE(hwInfoConfig.isGlobalFenceInCommandStreamRequired(*defaultHwInfo));
|
EXPECT_FALSE(hwInfoConfig.isGlobalFenceInCommandStreamRequired(*defaultHwInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenIsSpecialPipelineSelectModeChangedThenFalseIsReturned) {
|
HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicPipelineSelectModeChangedThenFalseIsReturned) {
|
||||||
const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
|
const auto &hwInfoConfig = *HwInfoConfig::get(defaultHwInfo->platform.eProductFamily);
|
||||||
EXPECT_FALSE(hwInfoConfig.isSpecialPipelineSelectModeChanged(*defaultHwInfo));
|
EXPECT_FALSE(hwInfoConfig.isSystolicPipelineSelectModeChanged(*defaultHwInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicModeConfigurabledThenFalseIsReturned) {
|
HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicModeConfigurabledThenFalseIsReturned) {
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, WhenAppendProgramPipelineSelectThenNot
|
|||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
PIPELINE_SELECT cmd = FamilyType::cmdInitPipelineSelect;
|
PIPELINE_SELECT cmd = FamilyType::cmdInitPipelineSelect;
|
||||||
cmd.setMaskBits(pipelineSelectEnablePipelineSelectMaskBits);
|
cmd.setMaskBits(pipelineSelectEnablePipelineSelectMaskBits);
|
||||||
PreambleHelper<FamilyType>::appendProgramPipelineSelect(&cmd, true, *defaultHwInfo);
|
PreambleHelper<FamilyType>::appendProgramPipelineSelect(cmd, true, *defaultHwInfo);
|
||||||
EXPECT_EQ(pipelineSelectEnablePipelineSelectMaskBits, cmd.getMaskBits());
|
EXPECT_EQ(pipelineSelectEnablePipelineSelectMaskBits, cmd.getMaskBits());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,9 +120,9 @@ using XeHPPipelineSelect = ::testing::Test;
|
|||||||
XEHPTEST_F(XeHPPipelineSelect, WhenAppendProgramPipelineSelectThenCorrectValuesSet) {
|
XEHPTEST_F(XeHPPipelineSelect, WhenAppendProgramPipelineSelectThenCorrectValuesSet) {
|
||||||
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
using PIPELINE_SELECT = typename FamilyType::PIPELINE_SELECT;
|
||||||
PIPELINE_SELECT cmd = FamilyType::cmdInitPipelineSelect;
|
PIPELINE_SELECT cmd = FamilyType::cmdInitPipelineSelect;
|
||||||
PreambleHelper<FamilyType>::appendProgramPipelineSelect(&cmd, true, *defaultHwInfo);
|
PreambleHelper<FamilyType>::appendProgramPipelineSelect(cmd, true, *defaultHwInfo);
|
||||||
EXPECT_TRUE(cmd.getSystolicModeEnable());
|
EXPECT_TRUE(cmd.getSystolicModeEnable());
|
||||||
PreambleHelper<FamilyType>::appendProgramPipelineSelect(&cmd, false, *defaultHwInfo);
|
PreambleHelper<FamilyType>::appendProgramPipelineSelect(cmd, false, *defaultHwInfo);
|
||||||
EXPECT_FALSE(cmd.getSystolicModeEnable());
|
EXPECT_FALSE(cmd.getSystolicModeEnable());
|
||||||
EXPECT_EQ(pipelineSelectSystolicModeEnableMaskBits, cmd.getMaskBits());
|
EXPECT_EQ(pipelineSelectSystolicModeEnableMaskBits, cmd.getMaskBits());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsAdjustProgrammab
|
|||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsComputeDispatchAllWalkerEnableInCfeStateRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsComputeDispatchAllWalkerEnableInCfeStateRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsComputeDispatchAllWalkerEnableInComputeWalkerRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsComputeDispatchAllWalkerEnableInComputeWalkerRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsGlobalFenceInCommandStreamRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsGlobalFenceInCommandStreamRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsSpecialPipelineSelectModeChangedThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicPipelineSelectModeChangedThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicModeConfigurabledThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenIsSystolicModeConfigurabledThenFalseIsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenGetThreadEuRatioForScratchThen8IsReturned, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenHwInfoConfigWhenGetThreadEuRatioForScratchThen8IsReturned, IGFX_XE_HPC_CORE);
|
||||||
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenVariousValuesWhenConvertingHwRevIdAndSteppingThenConversionIsCorrect, IGFX_XE_HPC_CORE);
|
HWTEST_EXCLUDE_PRODUCT(HwInfoConfigTest, givenVariousValuesWhenConvertingHwRevIdAndSteppingThenConversionIsCorrect, IGFX_XE_HPC_CORE);
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ PVCTEST_F(EncodeKernelPvcTest, givenRevisionBAndAboveWhenSpecialModeRequiredThen
|
|||||||
|
|
||||||
uint32_t dims[] = {1, 1, 1};
|
uint32_t dims[] = {1, 1, 1};
|
||||||
std::unique_ptr<MockDispatchKernelEncoder> dispatchInterface(new MockDispatchKernelEncoder());
|
std::unique_ptr<MockDispatchKernelEncoder> dispatchInterface(new MockDispatchKernelEncoder());
|
||||||
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned short revId;
|
unsigned short revId;
|
||||||
@@ -93,7 +93,7 @@ PVCTEST_F(EncodeKernelPvcTest, givenRevisionBAndAboveWhenSpecialModeRequiredAndA
|
|||||||
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
||||||
|
|
||||||
std::unique_ptr<MockDispatchKernelEncoder> dispatchInterface(new MockDispatchKernelEncoder());
|
std::unique_ptr<MockDispatchKernelEncoder> dispatchInterface(new MockDispatchKernelEncoder());
|
||||||
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSpecialPipelineSelectMode = true;
|
dispatchInterface->kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode = true;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned short revId;
|
unsigned short revId;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ PVCTEST_F(PreamblePipelineSelectState, givenRevisionBAndAboveWhenCallingProgramP
|
|||||||
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
auto hwInfo = pDevice->getRootDeviceEnvironment().getMutableHardwareInfo();
|
||||||
|
|
||||||
PipelineSelectArgs pipelineArgs;
|
PipelineSelectArgs pipelineArgs;
|
||||||
pipelineArgs.specialPipelineSelectMode = true;
|
pipelineArgs.systolicPipelineSelectMode = true;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned short revId;
|
unsigned short revId;
|
||||||
|
|||||||
Reference in New Issue
Block a user