/* * Copyright (C) 2018-2019 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "runtime/command_queue/command_queue_hw.h" #include "runtime/command_stream/command_stream_receiver.h" namespace NEO { template cl_int CommandQueueHw::finish() { auto result = getGpgpuCommandStreamReceiver().flushBatchedSubmissions(); if (!result) { return CL_OUT_OF_RESOURCES; } //as long as queue is blocked we need to stall. while (isQueueBlocked()) ; auto taskCountToWaitFor = this->taskCount; auto flushStampToWaitFor = this->flushStamp->peekStamp(); // Stall until HW reaches CQ taskCount waitUntilComplete(taskCountToWaitFor, flushStampToWaitFor, false); return CL_SUCCESS; } } // namespace NEO