I got this assertion failure when starting up gzdoom with vid_enablevulkan turned on and the GPU doesn't support Vulkan:
Code: Select all
gzdoom: /home/edward-san/zdoom/gzdoom/trunk/src/posix/sdl/sdlglvideo.cpp:120: void Priv::CreateWindow(uint32_t): Assertion `Priv::window == nullptr' failed.
My GPU is Intel Sandybridge Mobile Graphics (2nd Generation era). I'm not sure it's due to Vulkan backend. It seems as if the backend tries to rebuild the SDL_Window instance, when it was already done during the I_InitGraphics call in v_video.cpp line 686, while the crash happens in a subfunction of Video->SetResolution() in v_video.cpp line 688, two lines after I_InitGraphics. Backtrace is below:
Spoiler: BacktraceCode: Select all
gzdoom: /home/edward-san/zdoom/gzdoom/trunk/src/posix/sdl/sdlglvideo.cpp:120: void Priv::CreateWindow(uint32_t): Assertion `Priv::window == nullptr' failed.
#4 0x0000555555e93794 in Priv::CreateWindow (extraFlags=2) at /home/edward-san/zdoom/gzdoom/trunk/src/posix/sdl/sdlglvideo.cpp:120
__PRETTY_FUNCTION__ = "void Priv::CreateWindow(uint32_t)"
bounds = {x = -15200, y = 32767, w = -1505367552, h = 1}
caption = {Chars = 0x0, static NullString = {Len = 0, AllocLen = 2, RefCount = 124802, Nothing = "\000"}}
windowFlags = 21845
#5 0x0000555555e94f56 in SystemGLFrameBuffer::SystemGLFrameBuffer (this=0x6140039b0640, hMonitor=0x0, fullscreen=false) at /home/edward-san/zdoom/gzdoom/trunk/src/posix/sdl/sdlglvideo.cpp:421
glveridx = 0
i = <optimized out>
version = 0x0
glvers = {{4, 6}, {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0}, {3, 3}, {3, 2}, {2, 0}, {0, 0}}
glveridx = <optimized out>
i = <optimized out>
version = <optimized out>
gl_version = <optimized out>
vermaj = <optimized out>
vermin = <optimized out>
#6 0x000055555746cb17 in OpenGLRenderer::OpenGLFrameBuffer::OpenGLFrameBuffer (this=0x6140039b0640, hMonitor=0x0, fullscreen=false) at /home/edward-san/zdoom/gzdoom/trunk/src/rendering/gl/system/gl_framebuffer.cpp:74
No locals.
#7 0x0000555555e94297 in SDLVideo::CreateFrameBuffer (this=0x602000194070) at /home/edward-san/zdoom/gzdoom/trunk/src/posix/sdl/sdlglvideo.cpp:286
fb = 0x0
__PRETTY_FUNCTION__ = "virtual DFrameBuffer* SDLVideo::CreateFrameBuffer()"
#8 0x0000555557244ded in IVideo::SetResolution (this=0x602000194070) at /home/edward-san/zdoom/gzdoom/trunk/src/v_video.cpp:599
buff = 0x7fffffffc630
#9 0x0000555557245389 in V_Init2 () at /home/edward-san/zdoom/gzdoom/trunk/src/v_video.cpp:688
gamma = -0.372548997
val = {Bool = false, Int = 1461704960, Float = 1.75754357e+14, String = 0x5555571fd900 <S_RestartSound(FSoundChan*)+3414> "\330[A\\A]A^A_]\303UH\211\345AUATSH\203\354x\211\275|\377\377\377\211\265x\377\377\377\363\017\021\205t\377\377\377\363\017\021\215p\377\377\377H\215]\200I\211݃=]([\002", pGUID = 0x5555571fd900 <S_RestartSound(FSoundChan*)+3414>}
#10 0x0000555556e7e06a in D_DoomMain () at /home/edward-san/zdoom/gzdoom/trunk/src/d_main.cpp:2617
[Edit] If the assertions are disabled (Release mode), two windows are created. The first one is empty, the second one shows the actual game.