diff options
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 17 | ||||
| -rw-r--r-- | src/video_core/engines/puller.cpp | 5 | 
2 files changed, 9 insertions, 13 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 89a9d1f5a..b1a22b76c 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -473,9 +473,7 @@ void Maxwell3D::ProcessQueryGet() {      switch (regs.report_semaphore.query.operation) {      case Regs::ReportSemaphore::Operation::Release: -        if (regs.report_semaphore.query.release == -                Regs::ReportSemaphore::Release::AfterAllPreceedingWrites || -            regs.report_semaphore.query.short_query != 0) { +        if (regs.report_semaphore.query.short_query != 0) {              const GPUVAddr sequence_address{regs.report_semaphore.Address()};              const u32 payload = regs.report_semaphore.payload;              std::function<void()> operation([this, sequence_address, payload] { @@ -489,11 +487,10 @@ void Maxwell3D::ProcessQueryGet() {              };              const GPUVAddr sequence_address{regs.report_semaphore.Address()};              const u32 payload = regs.report_semaphore.payload; -            std::function<void()> operation([this, sequence_address, payload] { +            [this, sequence_address, payload] {                  memory_manager.Write<u64>(sequence_address + sizeof(u64), system.GPU().GetTicks());                  memory_manager.Write<u64>(sequence_address, payload); -            }); -            rasterizer->SyncOperation(std::move(operation)); +            }();          }          break;      case Regs::ReportSemaphore::Operation::Acquire: @@ -569,11 +566,11 @@ void Maxwell3D::ProcessCounterReset() {  void Maxwell3D::ProcessSyncPoint() {      const u32 sync_point = regs.sync_info.sync_point.Value(); -    const auto condition = regs.sync_info.condition.Value(); -    [[maybe_unused]] const u32 cache_flush = regs.sync_info.clean_l2.Value(); -    if (condition == Regs::SyncInfo::Condition::RopWritesDone) { -        rasterizer->SignalSyncPoint(sync_point); +    const u32 cache_flush = regs.sync_info.clean_l2.Value(); +    if (cache_flush != 0) { +        rasterizer->InvalidateGPUCache();      } +    rasterizer->SignalSyncPoint(sync_point);  }  void Maxwell3D::DrawArrays() { diff --git a/src/video_core/engines/puller.cpp b/src/video_core/engines/puller.cpp index cca890792..3977bb0fb 100644 --- a/src/video_core/engines/puller.cpp +++ b/src/video_core/engines/puller.cpp @@ -75,11 +75,10 @@ void Puller::ProcessSemaphoreTriggerMethod() {      if (op == GpuSemaphoreOperation::WriteLong) {          const GPUVAddr sequence_address{regs.semaphore_address.SemaphoreAddress()};          const u32 payload = regs.semaphore_sequence; -        std::function<void()> operation([this, sequence_address, payload] { +        [this, sequence_address, payload] {              memory_manager.Write<u64>(sequence_address + sizeof(u64), gpu.GetTicks());              memory_manager.Write<u64>(sequence_address, payload); -        }); -        rasterizer->SignalFence(std::move(operation)); +        }();      } else {          do {              const u32 word{memory_manager.Read<u32>(regs.semaphore_address.SemaphoreAddress())};  | 
