diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-01-28 07:18:06 +0100 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-01-28 07:32:24 +0100 |
commit | 008afa5d5951b5390fccdd9c677718bc4335cc35 (patch) | |
tree | 6d39403c7cf7357af2efb7815cacc9c2a4964663 /src/core/hle/kernel | |
parent | Merge pull request #5786 from ReinUsesLisp/glsl-cbuf (diff) | |
download | yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar.gz yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar.bz2 yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar.lz yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar.xz yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.tar.zst yuzu-008afa5d5951b5390fccdd9c677718bc4335cc35.zip |
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 22 | ||||
-rw-r--r-- | src/core/hle/kernel/hle_ipc.h | 6 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 83decf6cf..a419f9602 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -338,6 +338,28 @@ std::size_t HLERequestContext::GetWriteBufferSize(std::size_t buffer_index) cons return 0; } +bool HLERequestContext::CanReadBuffer(std::size_t buffer_index) const { + const bool is_buffer_a{BufferDescriptorA().size() > buffer_index && + BufferDescriptorA()[buffer_index].Size()}; + + if (is_buffer_a) { + return BufferDescriptorA().size() > buffer_index; + } else { + return BufferDescriptorX().size() > buffer_index; + } +} + +bool HLERequestContext::CanWriteBuffer(std::size_t buffer_index) const { + const bool is_buffer_b{BufferDescriptorB().size() > buffer_index && + BufferDescriptorB()[buffer_index].Size()}; + + if (is_buffer_b) { + return BufferDescriptorB().size() > buffer_index; + } else { + return BufferDescriptorC().size() > buffer_index; + } +} + std::string HLERequestContext::Description() const { if (!command_header) { return "No command header available"; diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h index b112e1ebd..698f607e6 100644 --- a/src/core/hle/kernel/hle_ipc.h +++ b/src/core/hle/kernel/hle_ipc.h @@ -207,6 +207,12 @@ public: /// Helper function to get the size of the output buffer std::size_t GetWriteBufferSize(std::size_t buffer_index = 0) const; + /// Helper function to test whether the input buffer at buffer_index can be read + bool CanReadBuffer(std::size_t buffer_index = 0) const; + + /// Helper function to test whether the output buffer at buffer_index can be written + bool CanWriteBuffer(std::size_t buffer_index = 0) const; + template <typename T> std::shared_ptr<T> GetCopyObject(std::size_t index) { return DynamicObjectCast<T>(copy_objects.at(index)); |