diff options
| author | 2018-02-12 19:40:19 -0500 | |
|---|---|---|
| committer | 2018-02-12 21:24:38 -0500 | |
| commit | 4f969e22713ee510ef29741773b8d6721ebe9e49 (patch) | |
| tree | 35927f7af56d534f594e108085ce61c54c1ed1fd /src/core | |
| parent | Merge pull request #180 from MerryMage/f/dynarmic/direct-page-table (diff) | |
| download | yuzu-4f969e22713ee510ef29741773b8d6721ebe9e49.tar.gz yuzu-4f969e22713ee510ef29741773b8d6721ebe9e49.tar.xz yuzu-4f969e22713ee510ef29741773b8d6721ebe9e49.zip | |
TransactParcel: Move WriteBlock to narrowest scope.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index dd4d3e517..7d9a41ded 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp | |||
| @@ -442,18 +442,20 @@ private: | |||
| 442 | void TransactParcel(u32 id, TransactionId transaction, const std::vector<u8>& input_data, | 442 | void TransactParcel(u32 id, TransactionId transaction, const std::vector<u8>& input_data, |
| 443 | VAddr output_addr, u64 output_size) { | 443 | VAddr output_addr, u64 output_size) { |
| 444 | auto buffer_queue = nv_flinger->GetBufferQueue(id); | 444 | auto buffer_queue = nv_flinger->GetBufferQueue(id); |
| 445 | std::vector<u8> response_buffer; | 445 | |
| 446 | if (transaction == TransactionId::Connect) { | 446 | if (transaction == TransactionId::Connect) { |
| 447 | IGBPConnectRequestParcel request{input_data}; | 447 | IGBPConnectRequestParcel request{input_data}; |
| 448 | IGBPConnectResponseParcel response{1280, 720}; | 448 | IGBPConnectResponseParcel response{1280, 720}; |
| 449 | response_buffer = response.Serialize(); | 449 | std::vector<u8> response_buffer = response.Serialize(); |
| 450 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | ||
| 450 | } else if (transaction == TransactionId::SetPreallocatedBuffer) { | 451 | } else if (transaction == TransactionId::SetPreallocatedBuffer) { |
| 451 | IGBPSetPreallocatedBufferRequestParcel request{input_data}; | 452 | IGBPSetPreallocatedBufferRequestParcel request{input_data}; |
| 452 | 453 | ||
| 453 | buffer_queue->SetPreallocatedBuffer(request.data.slot, request.buffer); | 454 | buffer_queue->SetPreallocatedBuffer(request.data.slot, request.buffer); |
| 454 | 455 | ||
| 455 | IGBPSetPreallocatedBufferResponseParcel response{}; | 456 | IGBPSetPreallocatedBufferResponseParcel response{}; |
| 456 | response_buffer = response.Serialize(); | 457 | std::vector<u8> response_buffer = response.Serialize(); |
| 458 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | ||
| 457 | } else if (transaction == TransactionId::DequeueBuffer) { | 459 | } else if (transaction == TransactionId::DequeueBuffer) { |
| 458 | IGBPDequeueBufferRequestParcel request{input_data}; | 460 | IGBPDequeueBufferRequestParcel request{input_data}; |
| 459 | 461 | ||
| @@ -461,21 +463,24 @@ private: | |||
| 461 | request.data.height); | 463 | request.data.height); |
| 462 | 464 | ||
| 463 | IGBPDequeueBufferResponseParcel response{slot}; | 465 | IGBPDequeueBufferResponseParcel response{slot}; |
| 464 | response_buffer = response.Serialize(); | 466 | std::vector<u8> response_buffer = response.Serialize(); |
| 467 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | ||
| 465 | } else if (transaction == TransactionId::RequestBuffer) { | 468 | } else if (transaction == TransactionId::RequestBuffer) { |
| 466 | IGBPRequestBufferRequestParcel request{input_data}; | 469 | IGBPRequestBufferRequestParcel request{input_data}; |
| 467 | 470 | ||
| 468 | auto& buffer = buffer_queue->RequestBuffer(request.slot); | 471 | auto& buffer = buffer_queue->RequestBuffer(request.slot); |
| 469 | 472 | ||
| 470 | IGBPRequestBufferResponseParcel response{buffer}; | 473 | IGBPRequestBufferResponseParcel response{buffer}; |
| 471 | response_buffer = response.Serialize(); | 474 | std::vector<u8> response_buffer = response.Serialize(); |
| 475 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | ||
| 472 | } else if (transaction == TransactionId::QueueBuffer) { | 476 | } else if (transaction == TransactionId::QueueBuffer) { |
| 473 | IGBPQueueBufferRequestParcel request{input_data}; | 477 | IGBPQueueBufferRequestParcel request{input_data}; |
| 474 | 478 | ||
| 475 | buffer_queue->QueueBuffer(request.data.slot, request.data.transform); | 479 | buffer_queue->QueueBuffer(request.data.slot, request.data.transform); |
| 476 | 480 | ||
| 477 | IGBPQueueBufferResponseParcel response{1280, 720}; | 481 | IGBPQueueBufferResponseParcel response{1280, 720}; |
| 478 | response_buffer = response.Serialize(); | 482 | std::vector<u8> response_buffer = response.Serialize(); |
| 483 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | ||
| 479 | } else if (transaction == TransactionId::Query) { | 484 | } else if (transaction == TransactionId::Query) { |
| 480 | IGBPQueryRequestParcel request{input_data}; | 485 | IGBPQueryRequestParcel request{input_data}; |
| 481 | 486 | ||
| @@ -483,13 +488,11 @@ private: | |||
| 483 | buffer_queue->Query(static_cast<NVFlinger::BufferQueue::QueryType>(request.type)); | 488 | buffer_queue->Query(static_cast<NVFlinger::BufferQueue::QueryType>(request.type)); |
| 484 | 489 | ||
| 485 | IGBPQueryResponseParcel response{value}; | 490 | IGBPQueryResponseParcel response{value}; |
| 486 | response_buffer = response.Serialize(); | 491 | std::vector<u8> response_buffer = response.Serialize(); |
| 487 | 492 | Memory::WriteBlock(output_addr, response_buffer.data(), response_buffer.size()); | |
| 488 | } else { | 493 | } else { |
| 489 | ASSERT_MSG(false, "Unimplemented"); | 494 | ASSERT_MSG(false, "Unimplemented"); |
| 490 | } | 495 | } |
| 491 | |||
| 492 | Memory::WriteBlock(output_addr, response_buffer.data(), output_size); | ||
| 493 | } | 496 | } |
| 494 | 497 | ||
| 495 | void TransactParcel(Kernel::HLERequestContext& ctx) { | 498 | void TransactParcel(Kernel::HLERequestContext& ctx) { |