mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 08:59:03 -06:00 
			
		
		
		
	frontend: qt: bootmanager: Vulkan: Restore support for VK backend.
This commit is contained in:
		@@ -106,8 +106,14 @@ RendererVulkan::~RendererVulkan() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RendererVulkan::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
 | 
			
		||||
    render_window.PollEvents();
 | 
			
		||||
 | 
			
		||||
    if (!framebuffer) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const auto& layout = render_window.GetFramebufferLayout();
 | 
			
		||||
    if (framebuffer && layout.width > 0 && layout.height > 0 && render_window.IsShown()) {
 | 
			
		||||
    if (layout.width > 0 && layout.height > 0 && render_window.IsShown()) {
 | 
			
		||||
        const VAddr framebuffer_addr = framebuffer->address + framebuffer->offset;
 | 
			
		||||
        const bool use_accelerated =
 | 
			
		||||
            rasterizer->AccelerateDisplay(*framebuffer, framebuffer_addr, framebuffer->stride);
 | 
			
		||||
@@ -128,13 +134,16 @@ void RendererVulkan::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
 | 
			
		||||
            blit_screen->Recreate();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        render_window.SwapBuffers();
 | 
			
		||||
        rasterizer->TickFrame();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render_window.PollEvents();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RendererVulkan::TryPresent(int /*timeout_ms*/) {
 | 
			
		||||
    // TODO (bunnei): ImplementMe
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RendererVulkan::Init() {
 | 
			
		||||
    PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr{};
 | 
			
		||||
    render_window.RetrieveVulkanHandlers(&vkGetInstanceProcAddr, &instance, &surface);
 | 
			
		||||
@@ -262,4 +271,4 @@ void RendererVulkan::Report() const {
 | 
			
		||||
    telemetry_session.AddField(field, "GPU_Vulkan_Extensions", extensions);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Vulkan
 | 
			
		||||
} // namespace Vulkan
 | 
			
		||||
 
 | 
			
		||||
@@ -36,14 +36,10 @@ public:
 | 
			
		||||
    explicit RendererVulkan(Core::Frontend::EmuWindow& window, Core::System& system);
 | 
			
		||||
    ~RendererVulkan() override;
 | 
			
		||||
 | 
			
		||||
    /// Swap buffers (render frame)
 | 
			
		||||
    void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override;
 | 
			
		||||
 | 
			
		||||
    /// Initialize the renderer
 | 
			
		||||
    bool Init() override;
 | 
			
		||||
 | 
			
		||||
    /// Shutdown the renderer
 | 
			
		||||
    void ShutDown() override;
 | 
			
		||||
    void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override;
 | 
			
		||||
    void TryPresent(int timeout_ms) override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    std::optional<vk::DebugUtilsMessengerEXT> CreateDebugCallback(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user