feature: store cpu pointer of command buffer pointing to post sync command
Related-To: NEO-10064 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
55f2b31f2a
commit
1995e6aa40
|
@ -293,6 +293,7 @@ void MemorySynchronizationCommands<GfxFamily>::setSingleBarrier(void *commandsBu
|
|||
}
|
||||
|
||||
if (postSyncMode != PostSyncMode::noWrite) {
|
||||
args.postSyncCmd = commandsBuffer;
|
||||
pipeControl.setAddress(static_cast<uint32_t>(gpuAddress & 0x0000FFFFFFFFULL));
|
||||
pipeControl.setAddressHigh(static_cast<uint32_t>(gpuAddress >> 32));
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2020-2023 Intel Corporation
|
||||
* Copyright (C) 2020-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -11,6 +11,7 @@ namespace NEO {
|
|||
|
||||
struct PipeControlArgs {
|
||||
PipeControlArgs() = default;
|
||||
void *postSyncCmd = nullptr;
|
||||
|
||||
bool blockSettingPostSyncProperties = false;
|
||||
bool csStallOnly = false;
|
||||
|
|
|
@ -260,9 +260,12 @@ HWTEST_F(PipeControlHelperTests, givenPostSyncWriteTimestampModeWhenHelperIsUsed
|
|||
stream, PostSyncMode::timestamp, address, immediateData, rootDeviceEnvironment, args);
|
||||
auto additionalPcSize = MemorySynchronizationCommands<FamilyType>::getSizeForBarrierWithPostSyncOperation(rootDeviceEnvironment, false) - sizeof(PIPE_CONTROL);
|
||||
auto pipeControlLocationSize = additionalPcSize - MemorySynchronizationCommands<FamilyType>::getSizeForSingleAdditionalSynchronization(rootDeviceEnvironment);
|
||||
auto pipeControl = genCmdCast<PIPE_CONTROL *>(ptrOffset(stream.getCpuBase(), pipeControlLocationSize));
|
||||
void *cpuPipeControlBuffer = ptrOffset(stream.getCpuBase(), pipeControlLocationSize);
|
||||
auto pipeControl = genCmdCast<PIPE_CONTROL *>(cpuPipeControlBuffer);
|
||||
ASSERT_NE(nullptr, pipeControl);
|
||||
|
||||
EXPECT_EQ(cpuPipeControlBuffer, args.postSyncCmd);
|
||||
|
||||
EXPECT_EQ(sizeof(PIPE_CONTROL) + additionalPcSize, stream.getUsed());
|
||||
EXPECT_EQ(pipeControl->getCommandStreamerStallEnable(), expectedPipeControl.getCommandStreamerStallEnable());
|
||||
EXPECT_EQ(pipeControl->getPostSyncOperation(), expectedPipeControl.getPostSyncOperation());
|
||||
|
@ -317,9 +320,12 @@ HWTEST_F(PipeControlHelperTests, givenPostSyncWriteImmediateDataModeWhenHelperIs
|
|||
stream, PostSyncMode::immediateData, address, immediateData, rootDeviceEnvironment, args);
|
||||
auto additionalPcSize = MemorySynchronizationCommands<FamilyType>::getSizeForBarrierWithPostSyncOperation(rootDeviceEnvironment, false) - sizeof(PIPE_CONTROL);
|
||||
auto pipeControlLocationSize = additionalPcSize - MemorySynchronizationCommands<FamilyType>::getSizeForSingleAdditionalSynchronization(rootDeviceEnvironment);
|
||||
auto pipeControl = genCmdCast<PIPE_CONTROL *>(ptrOffset(stream.getCpuBase(), pipeControlLocationSize));
|
||||
void *cpuPipeControlBuffer = ptrOffset(stream.getCpuBase(), pipeControlLocationSize);
|
||||
auto pipeControl = genCmdCast<PIPE_CONTROL *>(cpuPipeControlBuffer);
|
||||
ASSERT_NE(nullptr, pipeControl);
|
||||
|
||||
EXPECT_EQ(cpuPipeControlBuffer, args.postSyncCmd);
|
||||
|
||||
EXPECT_EQ(sizeof(PIPE_CONTROL) + additionalPcSize, stream.getUsed());
|
||||
EXPECT_EQ(pipeControl->getCommandStreamerStallEnable(), expectedPipeControl.getCommandStreamerStallEnable());
|
||||
EXPECT_EQ(pipeControl->getPostSyncOperation(), expectedPipeControl.getPostSyncOperation());
|
||||
|
|
Loading…
Reference in New Issue