mirror of
https://github.com/SimoneN64/Kaizen.git
synced 2025-04-02 10:41:53 -04:00
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#pragma once
|
|
#include <backend/Core.hpp>
|
|
#include <wsi.hpp>
|
|
#include <rdp_device.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::InstanceFactory>&, const std::shared_ptr<Vulkan::WSIPlatform>&, const std::shared_ptr<WindowInfo>&, const u8*);
|
|
ParallelRDP() = default;
|
|
|
|
void UpdateScreen(n64::VI&, bool = false);
|
|
void EnqueueCommand(int, u32*);
|
|
void OnFullSync();
|
|
bool IsFramerateUnlocked();
|
|
void SetFramerateUnlocked(bool);
|
|
private:
|
|
void LoadWSIPlatform(const std::shared_ptr<Vulkan::InstanceFactory>&, const std::shared_ptr<Vulkan::WSIPlatform>&, const std::shared_ptr<WindowInfo>&);
|
|
void DrawFullscreenTexturedQuad(Util::IntrusivePtr<Vulkan::Image>, Util::IntrusivePtr<Vulkan::CommandBuffer>);
|
|
void UpdateScreen(Util::IntrusivePtr<Vulkan::Image>);
|
|
|
|
std::shared_ptr<Vulkan::WSI> wsi;
|
|
std::shared_ptr<RDP::CommandProcessor> command_processor;
|
|
std::shared_ptr<WindowInfo> windowInfo;
|
|
};
|