2023-01-30 23:54:23 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "IS9xDisplayOutput.h"
|
2024-08-10 23:03:55 +00:00
|
|
|
#include "common/video/vulkan/vulkan_context.hpp"
|
|
|
|
#include "common/video/vulkan/vulkan_shader_chain.hpp"
|
|
|
|
#include "common/video/vulkan/vulkan_simple_output.hpp"
|
2023-02-01 20:47:42 +00:00
|
|
|
#include <functional>
|
2023-01-30 23:54:23 +00:00
|
|
|
|
|
|
|
class CVulkan : public IS9xDisplayOutput
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
HWND hWnd;
|
|
|
|
std::unique_ptr<Vulkan::Context> context;
|
2023-01-31 23:18:07 +00:00
|
|
|
std::vector<uint16_t> filtered_image;
|
2023-01-31 23:38:02 +00:00
|
|
|
std::unique_ptr<Vulkan::ShaderChain> shaderchain;
|
2023-02-01 20:47:42 +00:00
|
|
|
std::string current_shadername;
|
2023-02-10 22:03:05 +00:00
|
|
|
std::unique_ptr<Vulkan::SimpleOutput> simple_output;
|
2023-01-30 23:54:23 +00:00
|
|
|
|
2023-05-04 22:36:36 +00:00
|
|
|
vk::UniqueDescriptorPool imgui_descriptor_pool;
|
|
|
|
|
2023-01-30 23:54:23 +00:00
|
|
|
int current_width;
|
|
|
|
int current_height;
|
|
|
|
|
|
|
|
public:
|
2023-05-04 22:36:36 +00:00
|
|
|
bool InitImGui();
|
|
|
|
bool Initialize(HWND hWnd) override;
|
2023-03-11 20:49:10 +00:00
|
|
|
void DeInitialize() override;
|
|
|
|
void Render(SSurface Src) override;
|
|
|
|
bool ChangeRenderSize(unsigned int newWidth, unsigned int newHeight) override;
|
|
|
|
bool ApplyDisplayChanges(void) override;
|
|
|
|
bool SetFullscreen(bool fullscreen) override;
|
|
|
|
void SetSnes9xColorFormat() override;
|
|
|
|
void EnumModes(std::vector<dMode>* modeVector) override;
|
|
|
|
std::vector<ShaderParam> *GetShaderParameters(void) override;
|
|
|
|
std::function<void(const char *)> GetShaderParametersSaveFunction() override;
|
2023-01-30 23:54:23 +00:00
|
|
|
};
|
|
|
|
|