summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/vi/vi.cpp19
1 files changed, 4 insertions, 15 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 1051000f8..968cd16b6 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -536,6 +536,8 @@ private:
536 LOG_DEBUG(Service_VI, "called. id=0x{:08X} transaction={:X}, flags=0x{:08X}", id, 536 LOG_DEBUG(Service_VI, "called. id=0x{:08X} transaction={:X}, flags=0x{:08X}", id,
537 transaction, flags); 537 transaction, flags);
538 538
539 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
540
539 switch (transaction) { 541 switch (transaction) {
540 case TransactionId::Connect: { 542 case TransactionId::Connect: {
541 IGBPConnectRequestParcel request{ctx.ReadBuffer()}; 543 IGBPConnectRequestParcel request{ctx.ReadBuffer()};
@@ -545,10 +547,7 @@ private:
545 static_cast<u32>(static_cast<u32>(DisplayResolution::UndockedHeight) * 547 static_cast<u32>(static_cast<u32>(DisplayResolution::UndockedHeight) *
546 Settings::values.resolution_factor.GetValue())}; 548 Settings::values.resolution_factor.GetValue())};
547 549
548 { 550 buffer_queue.Connect();
549 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
550 buffer_queue.Connect();
551 }
552 551
553 ctx.WriteBuffer(response.Serialize()); 552 ctx.WriteBuffer(response.Serialize());
554 break; 553 break;
@@ -556,11 +555,7 @@ private:
556 case TransactionId::SetPreallocatedBuffer: { 555 case TransactionId::SetPreallocatedBuffer: {
557 IGBPSetPreallocatedBufferRequestParcel request{ctx.ReadBuffer()}; 556 IGBPSetPreallocatedBufferRequestParcel request{ctx.ReadBuffer()};
558 557
559 { 558 buffer_queue.SetPreallocatedBuffer(request.data.slot, request.buffer_container.buffer);
560 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
561 buffer_queue.SetPreallocatedBuffer(request.data.slot,
562 request.buffer_container.buffer);
563 }
564 559
565 IGBPSetPreallocatedBufferResponseParcel response{}; 560 IGBPSetPreallocatedBufferResponseParcel response{};
566 ctx.WriteBuffer(response.Serialize()); 561 ctx.WriteBuffer(response.Serialize());
@@ -571,7 +566,6 @@ private:
571 const u32 width{request.data.width}; 566 const u32 width{request.data.width};
572 const u32 height{request.data.height}; 567 const u32 height{request.data.height};
573 568
574 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
575 do { 569 do {
576 if (auto result = buffer_queue.DequeueBuffer(width, height); result) { 570 if (auto result = buffer_queue.DequeueBuffer(width, height); result) {
577 // Buffer is available 571 // Buffer is available
@@ -586,7 +580,6 @@ private:
586 case TransactionId::RequestBuffer: { 580 case TransactionId::RequestBuffer: {
587 IGBPRequestBufferRequestParcel request{ctx.ReadBuffer()}; 581 IGBPRequestBufferRequestParcel request{ctx.ReadBuffer()};
588 582
589 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
590 auto& buffer = buffer_queue.RequestBuffer(request.slot); 583 auto& buffer = buffer_queue.RequestBuffer(request.slot);
591 IGBPRequestBufferResponseParcel response{buffer}; 584 IGBPRequestBufferResponseParcel response{buffer};
592 ctx.WriteBuffer(response.Serialize()); 585 ctx.WriteBuffer(response.Serialize());
@@ -596,7 +589,6 @@ private:
596 case TransactionId::QueueBuffer: { 589 case TransactionId::QueueBuffer: {
597 IGBPQueueBufferRequestParcel request{ctx.ReadBuffer()}; 590 IGBPQueueBufferRequestParcel request{ctx.ReadBuffer()};
598 591
599 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
600 buffer_queue.QueueBuffer(request.data.slot, request.data.transform, 592 buffer_queue.QueueBuffer(request.data.slot, request.data.transform,
601 request.data.GetCropRect(), request.data.swap_interval, 593 request.data.GetCropRect(), request.data.swap_interval,
602 request.data.multi_fence); 594 request.data.multi_fence);
@@ -608,7 +600,6 @@ private:
608 case TransactionId::Query: { 600 case TransactionId::Query: {
609 IGBPQueryRequestParcel request{ctx.ReadBuffer()}; 601 IGBPQueryRequestParcel request{ctx.ReadBuffer()};
610 602
611 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
612 const u32 value = 603 const u32 value =
613 buffer_queue.Query(static_cast<NVFlinger::BufferQueue::QueryType>(request.type)); 604 buffer_queue.Query(static_cast<NVFlinger::BufferQueue::QueryType>(request.type));
614 605
@@ -619,7 +610,6 @@ private:
619 case TransactionId::CancelBuffer: { 610 case TransactionId::CancelBuffer: {
620 IGBPCancelBufferRequestParcel request{ctx.ReadBuffer()}; 611 IGBPCancelBufferRequestParcel request{ctx.ReadBuffer()};
621 612
622 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
623 buffer_queue.CancelBuffer(request.data.slot, request.data.multi_fence); 613 buffer_queue.CancelBuffer(request.data.slot, request.data.multi_fence);
624 614
625 IGBPCancelBufferResponseParcel response{}; 615 IGBPCancelBufferResponseParcel response{};
@@ -630,7 +620,6 @@ private:
630 LOG_WARNING(Service_VI, "(STUBBED) called, transaction=Disconnect"); 620 LOG_WARNING(Service_VI, "(STUBBED) called, transaction=Disconnect");
631 const auto buffer = ctx.ReadBuffer(); 621 const auto buffer = ctx.ReadBuffer();
632 622
633 auto& buffer_queue = *nv_flinger.FindBufferQueue(id);
634 buffer_queue.Disconnect(); 623 buffer_queue.Disconnect();
635 624
636 IGBPEmptyResponseParcel response{}; 625 IGBPEmptyResponseParcel response{};