SWDEV-358915 - Wait for 10 micro secs, if the next engine is SDMA.

Change-Id: Ib3ed91510e62090f47d4f55be8de635caaee083d
This commit is contained in:
kjayapra-amd
2022-10-17 14:31:24 -04:00
committad av Karthik Jayaprakash
förälder 446a3fc688
incheckning 61b6a94627
2 ändrade filer med 12 tillägg och 3 borttagningar
+5 -1
Visa fil
@@ -475,9 +475,13 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal(
// ================================================================================================
std::vector<hsa_signal_t>& VirtualGPU::HwQueueTracker::WaitingSignal(HwQueueEngine engine) {
bool explicit_wait = false;
bool sdma_wait = false;
// Reset all current waiting signals
waiting_signals_.clear();
if(engine != HwQueueEngine::Compute)
sdma_wait = true;
// Does runtime switch the active engine?
if (engine != engine_) {
// Yes, return the signal from the previous operation for a wait
@@ -518,7 +522,7 @@ std::vector<hsa_signal_t>& VirtualGPU::HwQueueTracker::WaitingSignal(HwQueueEngi
if (hsa_signal_load_relaxed(external_signals_[i]->signal_) > 0) {
const Settings& settings = gpu_.dev().settings();
// Actively wait on CPU to avoid extra overheads of signal tracking on GPU
if (!WaitForSignal<true>(external_signals_[i]->signal_)) {
if (!WaitForSignal<true>(external_signals_[i]->signal_, false, sdma_wait)) {
if (settings.cpu_wait_for_signal_) {
// Wait on CPU for completion if requested
CpuWaitForSignal(external_signals_[i]);