mirror of
https://github.com/xenia-project/xenia.git
synced 2025-12-06 07:12:03 +01:00
[UI] Fixed issue with freezing/crashing (BSOD) UI caused by incorrect fence
This commit is contained in:
parent
be44b9ba33
commit
7797adf5f2
|
|
@ -3134,7 +3134,8 @@ void D3D12CommandProcessor::CheckSubmissionFence(uint64_t await_submission) {
|
||||||
queue_operations_since_submission_fence_, fence_value)) &&
|
queue_operations_since_submission_fence_, fence_value)) &&
|
||||||
SUCCEEDED(
|
SUCCEEDED(
|
||||||
queue_operations_since_submission_fence_->SetEventOnCompletion(
|
queue_operations_since_submission_fence_->SetEventOnCompletion(
|
||||||
fence_value, nullptr))) {
|
fence_value, fence_completion_event_))) {
|
||||||
|
WaitForSingleObject(fence_completion_event_, INFINITE);
|
||||||
queue_operations_done_since_submission_signal_ = false;
|
queue_operations_done_since_submission_signal_ = false;
|
||||||
} else {
|
} else {
|
||||||
XELOGE(
|
XELOGE(
|
||||||
|
|
@ -3150,8 +3151,9 @@ void D3D12CommandProcessor::CheckSubmissionFence(uint64_t await_submission) {
|
||||||
uint64_t submission_completed_before = submission_completed_;
|
uint64_t submission_completed_before = submission_completed_;
|
||||||
submission_completed_ = submission_fence_->GetCompletedValue();
|
submission_completed_ = submission_fence_->GetCompletedValue();
|
||||||
if (submission_completed_ < await_submission) {
|
if (submission_completed_ < await_submission) {
|
||||||
if (SUCCEEDED(submission_fence_->SetEventOnCompletion(await_submission,
|
if (SUCCEEDED(submission_fence_->SetEventOnCompletion(
|
||||||
nullptr))) {
|
await_submission, fence_completion_event_))) {
|
||||||
|
WaitForSingleObject(fence_completion_event_, INFINITE);
|
||||||
submission_completed_ = submission_fence_->GetCompletedValue();
|
submission_completed_ = submission_fence_->GetCompletedValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,12 @@ bool D3D12SubmissionTracker::AwaitSubmissionCompletion(
|
||||||
fence_value = submission_signal_queued_;
|
fence_value = submission_signal_queued_;
|
||||||
}
|
}
|
||||||
if (fence_->GetCompletedValue() < fence_value) {
|
if (fence_->GetCompletedValue() < fence_value) {
|
||||||
if (FAILED(fence_->SetEventOnCompletion(fence_value, nullptr))) {
|
if (FAILED(fence_->SetEventOnCompletion(fence_value,
|
||||||
|
fence_completion_event_))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (WaitForSingleObject(fence_completion_event_, INFINITE) !=
|
||||||
|
WAIT_OBJECT_0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue