Skip to content

Commit 58c2400

Browse files
committed
Make window resize work with Vulkan. Seems more stable now.
1 parent 4c83d30 commit 58c2400

File tree

3 files changed

+4
-7
lines changed

3 files changed

+4
-7
lines changed

SDL/SDLMain.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ int main(int argc, char *argv[]) {
621621
#if !defined(MOBILE_DEVICE)
622622
case SDL_WINDOWEVENT:
623623
switch (event.window.event) {
624-
case SDL_WINDOWEVENT_RESIZED:
624+
case SDL_WINDOWEVENT_SIZE_CHANGED: // better than RESIZED, more general
625625
{
626626
Uint32 window_flags = SDL_GetWindowFlags(window);
627627
bool fullscreen = (window_flags & SDL_WINDOW_FULLSCREEN);

SDL/SDLVulkanGraphicsContext.h

+1-6
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,11 @@ class SDLVulkanGraphicsContext : public GraphicsContext {
2525
}
2626

2727
void Resize() override {
28-
/*
2928
draw_->HandleEvent(Draw::Event::LOST_BACKBUFFER, vulkan_->GetBackbufferWidth(), vulkan_->GetBackbufferHeight());
3029
vulkan_->DestroyObjects();
31-
// TODO: Take from real window dimensions
32-
int width = 1024;
33-
int height = 768;
34-
vulkan_->ReinitSurface(width, height);
30+
vulkan_->ReinitSurface();
3531
vulkan_->InitObjects();
3632
draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, vulkan_->GetBackbufferWidth(), vulkan_->GetBackbufferHeight());
37-
*/
3833
}
3934

4035
void SwapInterval(int interval) override {

ext/native/thin3d/VulkanRenderManager.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,9 @@ void VulkanRenderManager::BeginSubmitFrame(int frame) {
865865
VkResult res = vkAcquireNextImageKHR(vulkan_->GetDevice(), vulkan_->GetSwapchain(), UINT64_MAX, acquireSemaphore_, (VkFence)VK_NULL_HANDLE, &frameData.curSwapchainImage);
866866
if (res == VK_SUBOPTIMAL_KHR) {
867867
// Hopefully the resize will happen shortly. Ignore - one frame might look bad or something.
868+
WLOG("VK_SUBOPTIMAL_KHR returned - ignoring");
868869
} else if (res == VK_ERROR_OUT_OF_DATE_KHR) {
870+
WLOG("VK_ERROR_OUT_OF_DATE_KHR returned - not presenting");
869871
frameData.skipSwap = true;
870872
} else {
871873
_assert_msg_(G3D, res == VK_SUCCESS, "vkAcquireNextImageKHR failed! result=%s", VulkanResultToString(res));

0 commit comments

Comments
 (0)