dbg_gfx 4
you get like 4 MiB of validation warnings, mostly about us not freeing everything I guessdbg_gfx 4
you get like 4 MiB of validation warnings, mostly about us not freeing everything I guess shell_execute
always starts the process like that. It's a bug anyway that the client is not in the foreground after restarting, but weird that Vulkan can't create a swap chain if the window is started minimizedshell_execute
to either start the process in the foreground or background on Windows. Previously, all processes were started in the background, because this is desired when starting the server from the client. However, this causes the graphics initialization to fail when restarting the client after updating or with the restart
command when using Vulkan with windowed and windowed fullscreen mode.
Closes #6578.
shell_execute
always starts the process like that. It's a bug anyway that the client is not in the foreground after restarting, but weird that Vulkan can't create a swap chain if the window is started minimized shell_execute
always starts the process like that. It's a bug anyway that the client is not in the foreground after restarting, but weird that Vulkan can't create a swap chain if the window is started minimized GetSwapImageSize
can u try to add
if (RetSize.width == 0 || RetSize.height == 0) {
RetSize.width = 800;
RetSize.height = 800;
}
i wonder what will happenVkExtent2D AutoViewportExtent = RetSize;
GetSwapImageSize
can u try to add
if (RetSize.width == 0 || RetSize.height == 0) {
RetSize.width = 800;
RetSize.height = 800;
}
i wonder what will happen VKCapabilities
0?RecreateSwapChain
after vkDeviceWaitIdle(m_VKDevice);
VkSurfaceCapabilitiesKHR VKSurfCap;
if(!GetSurfaceProperties(VKSurfCap))
return -1;
auto Caps = GetSwapImageSize(VKSurfCap);
if (Caps.m_SwapImageViewport.width == 0 || Caps.m_SwapImageViewport.height == 0) {
m_RenderingPaused = true;
}
and in PrepareFrame()
replace RecreateSwapChain()
with
if (RecreateSwapChain() != 0) {
return PureMemoryFrame();
}
i am not sure about the last one, but maybe worth a try.
It will probably only work if SDL at some point sends a SDL_WINDOWEVENT_RESTORED
eventm_RecreateSwapChain = true;
in Cmd_WindowCreateNtf
needs to be moved out of the android-macro
else it probably has no idea that the surface is now readySDL_WINDOWEVENT event=7 d1=0 d2=0
SDL_WINDOWEVENT event=1 d1=0 d2=0
SDL_WINDOWEVENT event=10 d1=0 d2=0
SDL_WINDOWEVENT event=12 d1=0 d2=0
SDL_WINDOWEVENT event=3 d1=0 d2=0
SDL_WINDOWEVENT event=14 d1=0 d2=0
RecreateSwapChain
after vkDeviceWaitIdle(m_VKDevice);
VkSurfaceCapabilitiesKHR VKSurfCap;
if(!GetSurfaceProperties(VKSurfCap))
return -1;
auto Caps = GetSwapImageSize(VKSurfCap);
if (Caps.m_SwapImageViewport.width == 0 || Caps.m_SwapImageViewport.height == 0) {
m_RenderingPaused = true;
}
and in PrepareFrame()
replace RecreateSwapChain()
with
if (RecreateSwapChain() != 0) {
return PureMemoryFrame();
}
i am not sure about the last one, but maybe worth a try.
It will probably only work if SDL at some point sends a SDL_WINDOWEVENT_RESTORED
event return -1;
if(m_VKSwapImgAndViewportExtent.m_SwapImageViewport.width == 0 || m_VKSwapImgAndViewportExtent.m_SwapImageViewport.height == 0)
return false;
after m_VKSwapImgAndViewportExtent = GetSwapImageSize(VKSurfCap);
and this seems to work