mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-23 03:33:13 +08:00
Related-To: NEO-2236 Change-Id: I8e15193bcdf58dc3c6a87be3409a3438b78724e3 Signed-off-by: Adam Cetnerowski <adam.cetnerowski@intel.com>
41 lines
1007 B
C++
41 lines
1007 B
C++
/*
|
|
* Copyright (C) 2017-2020 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#include "shared/test/unit_test/helpers/debug_manager_state_restore.h"
|
|
|
|
#include "opencl/test/unit_test/mocks/mock_event.h"
|
|
|
|
#include "event_fixture.h"
|
|
|
|
#include <memory>
|
|
|
|
class SmallMockEvent : public Event {
|
|
public:
|
|
SmallMockEvent(Context *ctx) : Event(ctx, nullptr, CL_COMMAND_NDRANGE_KERNEL, 0, 0) {}
|
|
void switchToSubmitted() {
|
|
transitionExecutionStatus(CL_SUBMITTED);
|
|
}
|
|
void switchToComplete() {
|
|
transitionExecutionStatus(CL_COMPLETE);
|
|
}
|
|
};
|
|
|
|
TEST(EventTestMt, WhenWaitingForEventsThenDoNotReturnUntilAllStatusesSetToComplete) {
|
|
|
|
for (uint32_t i = 0; i < 100; i++) {
|
|
std::unique_ptr<UserEvent> userEvent = std::unique_ptr<UserEvent>(new UserEvent(nullptr));
|
|
|
|
std::thread t([&]() {
|
|
userEvent->setStatus(CL_COMPLETE);
|
|
});
|
|
|
|
t.join();
|
|
cl_event clEvent = userEvent.get();
|
|
Event::waitForEvents(1, &clEvent);
|
|
}
|
|
}
|