Skip to content
Snippets Groups Projects
Commit 782b7a0c authored by Fernando Sahmkow's avatar Fernando Sahmkow Committed by FernandoS27
Browse files

NVFlinger: Reverse the change that only signaled events on buffer acquire.

This has been hardware tested and it seems that NVFlinger will still 
signal even if there are no buffers to present.
parent ffc2ce89
No related branches found
No related tags found
No related merge requests found
...@@ -174,19 +174,8 @@ const VI::Layer* NVFlinger::FindLayer(u64 display_id, u64 layer_id) const { ...@@ -174,19 +174,8 @@ const VI::Layer* NVFlinger::FindLayer(u64 display_id, u64 layer_id) const {
void NVFlinger::Compose() { void NVFlinger::Compose() {
for (auto& display : displays) { for (auto& display : displays) {
bool trigger_event = false;
// Trigger vsync for this display at the end of drawing // Trigger vsync for this display at the end of drawing
SCOPE_EXIT({ SCOPE_EXIT({ display.SignalVSyncEvent(); });
// TODO(Blinkhawk): Correctly send buffers through nvflinger while
// loading the game thorugh the OS.
// During loading, the OS takes care of sending buffers to vsync,
// thus it triggers, since this is not properly emulated due to
// HLE complications, we allow it to signal until the game enqueues
// it's first buffer.
if (trigger_event || !first_buffer_enqueued) {
display.SignalVSyncEvent();
}
});
// Don't do anything for displays without layers. // Don't do anything for displays without layers.
if (!display.HasLayers()) if (!display.HasLayers())
...@@ -202,16 +191,10 @@ void NVFlinger::Compose() { ...@@ -202,16 +191,10 @@ void NVFlinger::Compose() {
MicroProfileFlip(); MicroProfileFlip();
if (!buffer) { if (!buffer) {
// There was no queued buffer to draw, render previous frame
auto& gpu = system.GPU();
// Always trigger on sync GPU.
trigger_event = !gpu.IsAsync();
continue; continue;
} }
const auto& igbp_buffer = buffer->get().igbp_buffer; const auto& igbp_buffer = buffer->get().igbp_buffer;
trigger_event = true;
first_buffer_enqueued = true;
const auto& gpu = system.GPU(); const auto& gpu = system.GPU();
const auto& multi_fence = buffer->get().multi_fence; const auto& multi_fence = buffer->get().multi_fence;
......
...@@ -102,8 +102,6 @@ private: ...@@ -102,8 +102,6 @@ private:
u32 swap_interval = 1; u32 swap_interval = 1;
bool first_buffer_enqueued{};
/// Event that handles screen composition. /// Event that handles screen composition.
Core::Timing::EventType* composition_event; Core::Timing::EventType* composition_event;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment