diff options
author | bunnei <bunneidev@gmail.com> | 2018-02-12 01:03:31 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-02-12 03:00:41 +0100 |
commit | 6fce1414c3a899c3694fd05518101a82ff8060ce (patch) | |
tree | e8e58a4eeb778e8540be65dd1b09dcc1411ff797 /src/core/hle/service/vi/vi.cpp | |
parent | vi: Fix OpenLayer and CreateStrayLayer. (diff) | |
download | yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar.gz yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar.bz2 yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar.lz yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar.xz yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.tar.zst yuzu-6fce1414c3a899c3694fd05518101a82ff8060ce.zip |
Diffstat (limited to 'src/core/hle/service/vi/vi.cpp')
-rw-r--r-- | src/core/hle/service/vi/vi.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 0262e830b..dd4d3e517 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -3,7 +3,7 @@ // Refer to the license.txt file included. #include <algorithm> - +#include <array> #include "common/alignment.h" #include "common/scope_exit.h" #include "core/core_timing.h" @@ -325,13 +325,29 @@ public: data = Read<Data>(); } + struct Fence { + u32_le id; + u32_le value; + }; + static_assert(sizeof(Fence) == 8, "Fence has wrong size"); + struct Data { u32_le slot; - INSERT_PADDING_WORDS(2); + INSERT_PADDING_WORDS(3); u32_le timestamp; - INSERT_PADDING_WORDS(20); + s32_le is_auto_timestamp; + s32_le crop_left; + s32_le crop_top; + s32_le crop_right; + s32_le crop_bottom; + s32_le scaling_mode; + NVFlinger::BufferQueue::BufferTransformFlags transform; + u32_le sticky_transform; + INSERT_PADDING_WORDS(2); + u32_le fence_is_valid; + std::array<Fence, 2> fences; }; - static_assert(sizeof(Data) == 96, "ParcelData has wrong size"); + static_assert(sizeof(Data) == 80, "ParcelData has wrong size"); Data data; }; @@ -456,7 +472,7 @@ private: } else if (transaction == TransactionId::QueueBuffer) { IGBPQueueBufferRequestParcel request{input_data}; - buffer_queue->QueueBuffer(request.data.slot); + buffer_queue->QueueBuffer(request.data.slot, request.data.transform); IGBPQueueBufferResponseParcel response{1280, 720}; response_buffer = response.Serialize(); |