소스 검색

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.
Fernando Sahmkow 6 년 전
부모
커밋
782b7a0ca4
2개의 변경된 파일1개의 추가작업 그리고 20개의 파일을 삭제
  1. 1 18
      src/core/hle/service/nvflinger/nvflinger.cpp
  2. 0 2
      src/core/hle/service/nvflinger/nvflinger.h

+ 1 - 18
src/core/hle/service/nvflinger/nvflinger.cpp

@@ -174,19 +174,8 @@ const VI::Layer* NVFlinger::FindLayer(u64 display_id, u64 layer_id) const {
 
 void NVFlinger::Compose() {
     for (auto& display : displays) {
-        bool trigger_event = false;
         // Trigger vsync for this display at the end of drawing
-        SCOPE_EXIT({
-            // 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();
-            }
-        });
+        SCOPE_EXIT({ display.SignalVSyncEvent(); });
 
         // Don't do anything for displays without layers.
         if (!display.HasLayers())
@@ -202,16 +191,10 @@ void NVFlinger::Compose() {
         MicroProfileFlip();
 
         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;
         }
 
         const auto& igbp_buffer = buffer->get().igbp_buffer;
-        trigger_event = true;
-        first_buffer_enqueued = true;
 
         const auto& gpu = system.GPU();
         const auto& multi_fence = buffer->get().multi_fence;

+ 0 - 2
src/core/hle/service/nvflinger/nvflinger.h

@@ -102,8 +102,6 @@ private:
 
     u32 swap_interval = 1;
 
-    bool first_buffer_enqueued{};
-
     /// Event that handles screen composition.
     Core::Timing::EventType* composition_event;