diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 19 |
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{}; |