summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/vi/vi.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-02-12 01:03:31 +0100
committerbunnei <bunneidev@gmail.com>2018-02-12 03:00:41 +0100
commit6fce1414c3a899c3694fd05518101a82ff8060ce (patch)
treee8e58a4eeb778e8540be65dd1b09dcc1411ff797 /src/core/hle/service/vi/vi.cpp
parentvi: Fix OpenLayer and CreateStrayLayer. (diff)
downloadyuzu-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 '')
-rw-r--r--src/core/hle/service/vi/vi.cpp26
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();