mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-20 00:24:58 +08:00
Global l3 invaldate for blitter engine
Related-To: NEO-5175 Change-Id: I88b3c9333398c91a7dd799f5e52cfd9182316960 Signed-off-by: Pawel Wilma <pawel.wilma@intel.com>
This commit is contained in:
@@ -241,7 +241,14 @@ struct EncodeSempahore {
|
||||
static void programMiSemaphoreWait(MI_SEMAPHORE_WAIT *cmd,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode);
|
||||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode);
|
||||
|
||||
static void addMiSemaphoreWaitCommand(LinearStream &commandStream,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode);
|
||||
|
||||
static void addMiSemaphoreWaitCommand(LinearStream &commandStream,
|
||||
uint64_t compareAddress,
|
||||
|
||||
@@ -463,29 +463,25 @@ size_t EncodeIndirectParams<Family>::getCmdsSizeForSetGroupSizeIndirect() {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSempahore<Family>::programMiSemaphoreWait(MI_SEMAPHORE_WAIT *cmd,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode) {
|
||||
MI_SEMAPHORE_WAIT localCmd = Family::cmdInitMiSemaphoreWait;
|
||||
localCmd.setCompareOperation(compareMode);
|
||||
localCmd.setSemaphoreDataDword(compareData);
|
||||
localCmd.setSemaphoreGraphicsAddress(compareAddress);
|
||||
localCmd.setWaitMode(MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE);
|
||||
|
||||
*cmd = localCmd;
|
||||
void EncodeSempahore<Family>::addMiSemaphoreWaitCommand(LinearStream &commandStream,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode) {
|
||||
addMiSemaphoreWaitCommand(commandStream, compareAddress, compareData, compareMode, false);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSempahore<Family>::addMiSemaphoreWaitCommand(LinearStream &commandStream,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode) {
|
||||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode) {
|
||||
auto semaphoreCommand = commandStream.getSpaceForCmd<MI_SEMAPHORE_WAIT>();
|
||||
programMiSemaphoreWait(semaphoreCommand,
|
||||
compareAddress,
|
||||
compareData,
|
||||
compareMode);
|
||||
compareMode,
|
||||
registerPollMode);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
|
||||
@@ -392,4 +392,19 @@ void EncodeSurfaceState<GfxFamily>::encodeExtraBufferParams(R_SURFACE_STATE *sur
|
||||
bool isReadOnly, uint32_t numAvailableDevices) {
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeSempahore<Family>::programMiSemaphoreWait(MI_SEMAPHORE_WAIT *cmd,
|
||||
uint64_t compareAddress,
|
||||
uint32_t compareData,
|
||||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode) {
|
||||
MI_SEMAPHORE_WAIT localCmd = Family::cmdInitMiSemaphoreWait;
|
||||
localCmd.setCompareOperation(compareMode);
|
||||
localCmd.setSemaphoreDataDword(compareData);
|
||||
localCmd.setSemaphoreGraphicsAddress(compareAddress);
|
||||
localCmd.setWaitMode(MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE);
|
||||
|
||||
*cmd = localCmd;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -984,6 +984,8 @@ uint32_t CommandStreamReceiverHw<GfxFamily>::blitBuffer(const BlitPropertiesCont
|
||||
makeResident(*blitProperties.dstAllocation);
|
||||
}
|
||||
|
||||
BlitCommandsHelper<GfxFamily>::programGlobalSequencerFlush(commandStream);
|
||||
|
||||
MemorySynchronizationCommands<GfxFamily>::addAdditionalSynchronization(commandStream, tagAllocation->getGpuAddress(), peekHwInfo());
|
||||
|
||||
EncodeMiFlushDW<GfxFamily>::programMiFlushDw(commandStream, tagAllocation->getGpuAddress(), newTaskCount, false, true);
|
||||
|
||||
@@ -142,5 +142,7 @@ struct BlitCommandsHelper {
|
||||
static bool useOneBlitCopyCommand(Vec3<size_t> copySize, uint32_t bytesPerPixel);
|
||||
static uint32_t getAvailableBytesPerPixel(size_t copySize, uint32_t srcOrigin, uint32_t dstOrigin, uint32_t srcSize, uint32_t dstSize);
|
||||
static bool isCopyRegionPreferred(const Vec3<size_t> ©Size, const RootDeviceEnvironment &rootDeviceEnvironment);
|
||||
static void programGlobalSequencerFlush(LinearStream &commandStream);
|
||||
static size_t getSizeForGlobalSequencerFlush();
|
||||
};
|
||||
} // namespace NEO
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "shared/source/gmm_helper/resource_info.h"
|
||||
#include "shared/source/helpers/blit_commands_helper.h"
|
||||
#include "shared/source/helpers/hw_helper.h"
|
||||
#include "shared/source/helpers/register_offsets.h"
|
||||
#include "shared/source/helpers/timestamp_packet.h"
|
||||
|
||||
namespace NEO {
|
||||
@@ -104,6 +105,8 @@ size_t BlitCommandsHelper<GfxFamily>::estimateBlitCommandsSize(const BlitPropert
|
||||
size += BlitCommandsHelper<GfxFamily>::getSizeForDebugPauseCommands();
|
||||
}
|
||||
|
||||
size += BlitCommandsHelper<GfxFamily>::getSizeForGlobalSequencerFlush();
|
||||
|
||||
return alignUp(size, MemoryConstants::cacheLineSize);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,4 +73,13 @@ template <typename GfxFamily>
|
||||
void BlitCommandsHelper<GfxFamily>::getBlitAllocationProperties(const GraphicsAllocation &allocation, uint32_t &pitch, uint32_t &qPitch, GMM_TILE_TYPE &tileType, uint32_t &mipTailLod) {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
void BlitCommandsHelper<GfxFamily>::programGlobalSequencerFlush(LinearStream &commandStream) {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t BlitCommandsHelper<GfxFamily>::getSizeForGlobalSequencerFlush() {
|
||||
return 0u;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -21,7 +21,8 @@ HWTEST_F(CommandEncodeSemaphore, programMiSemaphoreWait) {
|
||||
EncodeSempahore<FamilyType>::programMiSemaphoreWait(&miSemaphore,
|
||||
0x123400,
|
||||
4,
|
||||
MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
||||
MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD,
|
||||
false);
|
||||
|
||||
EXPECT_EQ(MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, miSemaphore.getCompareOperation());
|
||||
EXPECT_EQ(4u, miSemaphore.getSemaphoreDataDword());
|
||||
|
||||
Reference in New Issue
Block a user