start working towards imgui + sdl + vulkan init

This commit is contained in:
SimoZ64
2025-05-06 14:12:13 +02:00
parent b4c5c7a3e4
commit dcdf961988
7 changed files with 10 additions and 25 deletions

View File

@@ -81,9 +81,9 @@ void ParallelRDP::LoadWSIPlatform(const std::shared_ptr<InstanceFactory> &instan
windowInfo = newWindowInfo; windowInfo = newWindowInfo;
} }
void ParallelRDP::Init(const std::shared_ptr<InstanceFactory> &factory, const std::shared_ptr<WSIPlatform> &wsiPlatform, void ParallelRDP::Init(const std::shared_ptr<WSIPlatform> &wsiPlatform,
const std::shared_ptr<WindowInfo> &newWindowInfo, const u8 *rdram) { const std::shared_ptr<WindowInfo> &newWindowInfo, const u8 *rdram) {
LoadWSIPlatform(factory, wsiPlatform, newWindowInfo); LoadWSIPlatform(nullptr, wsiPlatform, newWindowInfo);
ResourceLayout vertLayout; ResourceLayout vertLayout;
ResourceLayout fragLayout; ResourceLayout fragLayout;

View File

@@ -19,7 +19,7 @@ public:
virtual ~WindowInfo() = default; virtual ~WindowInfo() = default;
}; };
void Init(const std::shared_ptr<Vulkan::InstanceFactory> &, const std::shared_ptr<Vulkan::WSIPlatform> &, void Init(const std::shared_ptr<Vulkan::WSIPlatform> &,
const std::shared_ptr<WindowInfo> &, const u8 *); const std::shared_ptr<WindowInfo> &, const u8 *);
ParallelRDP() = default; ParallelRDP() = default;

View File

@@ -8,7 +8,7 @@ EmuThread::EmuThread(const std::shared_ptr<n64::Core> &core, double &fps, Render
void EmuThread::start() noexcept { void EmuThread::start() noexcept {
thread = std::thread([this]() { thread = std::thread([this]() {
isRunning = true; isRunning = true;
core->parallel.Init(renderWidget.imGuiVkInstanceFactory, renderWidget.wsiPlatform, renderWidget.windowInfo, core->parallel.Init(renderWidget.wsiPlatform, renderWidget.windowInfo,
core->cpu->GetMem().GetRDRAMPtr()); core->cpu->GetMem().GetRDRAMPtr());
auto lastSample = std::chrono::high_resolution_clock::now(); auto lastSample = std::chrono::high_resolution_clock::now();

View File

@@ -3,7 +3,7 @@
#include <backend/Core.hpp> #include <backend/Core.hpp>
#include <ImGuiImpl/StatusBar.hpp> #include <ImGuiImpl/StatusBar.hpp>
KaizenGui::KaizenGui() noexcept : core(std::make_shared<n64::Core>()), vulkanWidget(core), emuThread(core, fpsCounter, vulkanWidget, settingsWindow) { KaizenGui::KaizenGui() noexcept : window(SDL_CreateWindow("Kaizen", 1280, 720, SDL_WINDOW_HIGH_PIXEL_DENSITY | SDL_WINDOW_RESIZABLE | SDL_WINDOW_VULKAN)), core(std::make_shared<n64::Core>()), vulkanWidget(core, window), emuThread(core, fpsCounter, vulkanWidget, settingsWindow) {
emuExitFunc = [&]() { emuExitFunc = [&]() {
quit = true; quit = true;
if (emuThread.isRunning) { if (emuThread.isRunning) {

View File

@@ -6,6 +6,7 @@
#include <Discord.hpp> #include <Discord.hpp>
class KaizenGui final { class KaizenGui final {
std::shared_ptr<SDL_Window> window;
public: public:
explicit KaizenGui() noexcept; explicit KaizenGui() noexcept;
double fpsCounter; double fpsCounter;

View File

@@ -3,17 +3,10 @@
#include <RenderWidget.hpp> #include <RenderWidget.hpp>
#include <SDL3/SDL_events.h> #include <SDL3/SDL_events.h>
RenderWidget::RenderWidget(const std::shared_ptr<n64::Core> &core) { RenderWidget::RenderWidget(const std::shared_ptr<n64::Core> &core, const std::shared_ptr<SDL_Window>& window) {
if (!Vulkan::Context::init_loader(nullptr)) { if (!Vulkan::Context::init_loader(nullptr)) {
Util::panic("Could not initialize Vulkan ICD"); Util::panic("Could not initialize Vulkan ICD");
} }
imGuiVkInstanceFactory = std::make_shared<ImGuiInstanceFactory>();
//windowHandle()->setVulkanInstance(&imGuiVkInstanceFactory->create_instance());
//windowHandle()->create();
//wsiPlatform = std::make_shared<ImGuiWSIPlatform>(core, windowHandle());
// windowInfo = std::make_shared<ImGuiParallelRdpWindowInfo>(windowHandle());
} }
void ImGuiWSIPlatform::poll_input() { void ImGuiWSIPlatform::poll_input() {

View File

@@ -7,16 +7,9 @@ namespace n64 {
struct Core; struct Core;
} }
struct ImGuiInstanceFactory final : Vulkan::InstanceFactory {
VkInstance create_instance(const VkInstanceCreateInfo *info) override {
}
VkInstance instance;
};
class ImGuiParallelRdpWindowInfo final : public ParallelRDP::WindowInfo { class ImGuiParallelRdpWindowInfo final : public ParallelRDP::WindowInfo {
public: public:
explicit ImGuiParallelRdpWindowInfo(SDL_Window *window) : window(window) {} explicit ImGuiParallelRdpWindowInfo(const std::shared_ptr<SDL_Window> window) : window(window) {}
CoordinatePair get_window_size() override { CoordinatePair get_window_size() override {
int w,h; int w,h;
SDL_GetWindowSizeInPixels(window.get(), &w, &h); SDL_GetWindowSizeInPixels(window.get(), &w, &h);
@@ -29,7 +22,7 @@ private:
class ImGuiWSIPlatform final : public Vulkan::WSIPlatform { class ImGuiWSIPlatform final : public Vulkan::WSIPlatform {
public: public:
explicit ImGuiWSIPlatform(const std::shared_ptr<n64::Core> &core, SDL_Window *window) : window(window), core(core) {} explicit ImGuiWSIPlatform(const std::shared_ptr<n64::Core> &core, const std::shared_ptr<SDL_Window> &window) : window(window), core(core) {}
std::vector<const char *> get_instance_extensions() override { std::vector<const char *> get_instance_extensions() override {
auto vec = std::vector<const char *>(); auto vec = std::vector<const char *>();
@@ -80,10 +73,8 @@ private:
class RenderWidget final { class RenderWidget final {
public: public:
[[nodiscard]] VkInstance instance() const { return imGuiVkInstanceFactory->instance; } explicit RenderWidget(const std::shared_ptr<n64::Core> &, const std::shared_ptr<SDL_Window>&);
explicit RenderWidget(const std::shared_ptr<n64::Core> &);
std::shared_ptr<ParallelRDP::WindowInfo> windowInfo; std::shared_ptr<ParallelRDP::WindowInfo> windowInfo;
std::shared_ptr<ImGuiWSIPlatform> wsiPlatform; std::shared_ptr<ImGuiWSIPlatform> wsiPlatform;
std::shared_ptr<ImGuiInstanceFactory> imGuiVkInstanceFactory;
}; };