Files
kaizen/external/parallel-rdp/ParallelRDPWrapper.hpp
T
2026-06-10 10:53:49 +02:00

37 lines
1.2 KiB
C++

#pragma once
#include <rdp_device.hpp>
#include <wsi.hpp>
#include <common.hpp>
class ParallelRDP {
public:
class WindowInfo {
public:
struct CoordinatePair {
float x;
float y;
};
virtual CoordinatePair get_window_size() = 0;
virtual ~WindowInfo() = default;
};
void Init(const std::shared_ptr<Vulkan::WSIPlatform> &, const std::shared_ptr<WindowInfo> &,
Vulkan::InstanceFactory *, const u8 *);
void UpdateScreen() const;
void EnqueueCommand(int, const u32 *) const;
void OnFullSync() const;
[[nodiscard]] bool IsFramerateUnlocked() const;
void SetFramerateUnlocked(bool) const;
std::shared_ptr<Vulkan::WSI> wsi;
std::shared_ptr<RDP::CommandProcessor> command_processor;
std::shared_ptr<WindowInfo> windowInfo;
private:
void LoadWSIPlatform(const std::shared_ptr<Vulkan::WSIPlatform> &, const std::shared_ptr<WindowInfo> &,
Vulkan::InstanceFactory *);
void DrawFullscreenTexturedQuad(Util::IntrusivePtr<Vulkan::Image>, Util::IntrusivePtr<Vulkan::CommandBuffer>) const;
void UpdateScreen(Util::IntrusivePtr<Vulkan::Image>) const;
};