2024-10-24 16:31:35 +00:00
|
|
|
/*
|
2025-01-28 13:18:46 +00:00
|
|
|
* Copyright (C) 2024-2025 Intel Corporation
|
2024-10-24 16:31:35 +00:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "shared/source/direct_submission/direct_submission_controller.h"
|
|
|
|
|
#include "shared/source/helpers/sleep.h"
|
2025-09-19 06:25:40 +02:00
|
|
|
#include "shared/source/os_interface/product_helper.h"
|
2024-10-24 16:31:35 +00:00
|
|
|
#include "shared/source/os_interface/windows/sys_calls_winmm.h"
|
|
|
|
|
|
2025-09-23 12:24:40 +00:00
|
|
|
#include <algorithm>
|
2024-10-24 16:31:35 +00:00
|
|
|
#include <chrono>
|
2025-06-20 09:23:25 +00:00
|
|
|
|
2024-10-24 16:31:35 +00:00
|
|
|
namespace NEO {
|
|
|
|
|
bool DirectSubmissionController::sleep(std::unique_lock<std::mutex> &lock) {
|
|
|
|
|
SysCalls::timeBeginPeriod(1u);
|
2025-09-23 12:24:40 +00:00
|
|
|
bool returnValue = NEO::waitOnConditionWithPredicate(syncData.condVar, lock, getSleepValue(), [&] { return !pagingFenceRequests.empty(); });
|
2024-10-24 16:31:35 +00:00
|
|
|
SysCalls::timeEndPeriod(1u);
|
|
|
|
|
return returnValue;
|
|
|
|
|
}
|
2025-06-16 16:40:35 +00:00
|
|
|
|
2025-09-19 06:25:40 +02:00
|
|
|
void DirectSubmissionController::overrideDirectSubmissionTimeouts(const ProductHelper &productHelper) {
|
|
|
|
|
uint64_t timeoutUs = this->timeout.count();
|
|
|
|
|
uint64_t maxTimeoutUs = this->maxTimeout.count();
|
|
|
|
|
productHelper.overrideDirectSubmissionTimeouts(timeoutUs, maxTimeoutUs);
|
|
|
|
|
this->timeout = std::chrono::microseconds(timeoutUs);
|
|
|
|
|
this->maxTimeout = std::chrono::microseconds(maxTimeoutUs);
|
|
|
|
|
}
|
2025-09-23 12:24:40 +00:00
|
|
|
} // namespace NEO
|