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/nvdrv | |
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 '')
-rw-r--r-- | src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp | 6 | ||||
-rw-r--r-- | src/core/hle/service/nvdrv/devices/nvdisp_disp0.h | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp index 4d0ab844c..7674d332d 100644 --- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp +++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp @@ -20,15 +20,17 @@ u32 nvdisp_disp0::ioctl(Ioctl command, const std::vector<u8>& input, std::vector } void nvdisp_disp0::flip(u32 buffer_handle, u32 offset, u32 format, u32 width, u32 height, - u32 stride) { + u32 stride, NVFlinger::BufferQueue::BufferTransformFlags transform) { VAddr addr = nvmap_dev->GetObjectAddress(buffer_handle); LOG_WARNING(Service, "Drawing from address %llx offset %08X Width %u Height %u Stride %u Format %u", addr, offset, width, height, stride, format); using PixelFormat = RendererBase::FramebufferInfo::PixelFormat; + using Flags = NVFlinger::BufferQueue::BufferTransformFlags; + const bool flip_vertical = static_cast<u32>(transform) & static_cast<u32>(Flags::FlipV); const RendererBase::FramebufferInfo framebuffer_info{ - addr, offset, width, height, stride, static_cast<PixelFormat>(format)}; + addr, offset, width, height, stride, static_cast<PixelFormat>(format), flip_vertical}; Core::System::GetInstance().perf_stats.EndGameFrame(); VideoCore::g_renderer->SwapBuffers(framebuffer_info); diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h index f3cfc9925..66f56f23d 100644 --- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h +++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h @@ -8,6 +8,7 @@ #include <vector> #include "common/common_types.h" #include "core/hle/service/nvdrv/devices/nvdevice.h" +#include "core/hle/service/nvflinger/buffer_queue.h" namespace Service { namespace Nvidia { @@ -23,7 +24,8 @@ public: u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; /// Performs a screen flip, drawing the buffer pointed to by the handle. - void flip(u32 buffer_handle, u32 offset, u32 format, u32 width, u32 height, u32 stride); + void flip(u32 buffer_handle, u32 offset, u32 format, u32 width, u32 height, u32 stride, + NVFlinger::BufferQueue::BufferTransformFlags transform); private: std::shared_ptr<nvmap> nvmap_dev; |