mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Dont wait for BCS before enqueue completion
Change-Id: I99fa7834e927049c2faff5dfbf44b3c2a77a1af1 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com> Related-To: NEO-3020
This commit is contained in:

committed by
sys_ocldev

parent
382bc8547d
commit
dda6e29254
@ -16,6 +16,7 @@
|
||||
#include "runtime/helpers/hw_helper.h"
|
||||
#include "runtime/helpers/options.h"
|
||||
#include "runtime/mem_obj/buffer.h"
|
||||
#include "runtime/memory_manager/allocations_list.h"
|
||||
#include "runtime/memory_manager/unified_memory_manager.h"
|
||||
#include "runtime/os_interface/os_context.h"
|
||||
#include "runtime/platform/platform.h"
|
||||
@ -921,32 +922,41 @@ HWTEST_F(BcsBufferTests, givenBlockingEnqueueWhenUsingBcsThenCallWait) {
|
||||
public:
|
||||
using UltCommandStreamReceiver<FamilyType>::UltCommandStreamReceiver;
|
||||
|
||||
void waitForTaskCountWithKmdNotifyFallback(uint32_t taskCountToWait, FlushStamp flushStampToWait,
|
||||
bool useQuickKmdSleep, bool forcePowerSavingMode) override {
|
||||
waitForTaskCountWithKmdNotifyFallbackCalled++;
|
||||
void waitForTaskCountAndCleanAllocationList(uint32_t requiredTaskCount, uint32_t allocationUsage) override {
|
||||
EXPECT_TRUE(gpgpuCsr->getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(*this->getTagAddress(), requiredTaskCount);
|
||||
waitForTaskCountAndCleanAllocationListCalled++;
|
||||
}
|
||||
|
||||
uint32_t waitForTaskCountWithKmdNotifyFallbackCalled = 0;
|
||||
uint32_t waitForTaskCountAndCleanAllocationListCalled = 0;
|
||||
CommandStreamReceiver *gpgpuCsr = nullptr;
|
||||
};
|
||||
|
||||
auto myMockCsr = new MyMockCsr(*device->getExecutionEnvironment());
|
||||
myMockCsr->taskCount = 1234;
|
||||
myMockCsr->initializeTagAllocation();
|
||||
myMockCsr->setupContext(*bcsMockContext->bcsOsContext);
|
||||
bcsMockContext->bcsCsr.reset(myMockCsr);
|
||||
|
||||
EngineControl bcsEngineControl = {myMockCsr, bcsMockContext->bcsOsContext.get()};
|
||||
|
||||
auto cmdQ = clUniquePtr(new MockCommandQueueHw<FamilyType>(bcsMockContext.get(), device.get(), nullptr));
|
||||
cmdQ->bcsEngine = &bcsEngineControl;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
auto &gpgpuCsr = cmdQ->getGpgpuCommandStreamReceiver();
|
||||
myMockCsr->gpgpuCsr = &gpgpuCsr;
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
auto buffer = clUniquePtr<Buffer>(Buffer::create(bcsMockContext.get(), CL_MEM_READ_WRITE, 1, nullptr, retVal));
|
||||
buffer->forceDisallowCPUCopy = true;
|
||||
void *hostPtr = reinterpret_cast<void *>(0x12340000);
|
||||
|
||||
cmdQ->enqueueWriteBuffer(buffer.get(), false, 0, 1, hostPtr, nullptr, 0, nullptr, nullptr);
|
||||
EXPECT_EQ(0u, myMockCsr->waitForTaskCountWithKmdNotifyFallbackCalled);
|
||||
EXPECT_EQ(0u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled);
|
||||
EXPECT_FALSE(gpgpuCsr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(myMockCsr->getTemporaryAllocations().peekIsEmpty());
|
||||
|
||||
cmdQ->enqueueWriteBuffer(buffer.get(), true, 0, 1, hostPtr, nullptr, 0, nullptr, nullptr);
|
||||
EXPECT_EQ(1u, myMockCsr->waitForTaskCountWithKmdNotifyFallbackCalled);
|
||||
EXPECT_EQ(1u, myMockCsr->waitForTaskCountAndCleanAllocationListCalled);
|
||||
}
|
||||
|
||||
TEST_F(RenderCompressedBuffersCopyHostMemoryTests, givenNonRenderCompressedBufferWhenCopyFromHostPtrIsRequiredThenDontCallWriteBuffer) {
|
||||
|
Reference in New Issue
Block a user