View Revisions: Issue #480

Summary 0000480: Assertion failure in dynamic lights code
Revision 2017-03-25 08:49 by _mental_
Description Trying to load Enjay's latest masterpiece Waterlab GZD using the latest commit I encountered the following assertion failure:
Assertion failed: (mBufferPointer != NULL), function UploadLights, file src/gl/dynlights/gl_lightbuffer.cpp, 
line 159.
Callstack:
FLightBuffer::UploadLights(this=0x00006000002741c0, data=0x00000001010604b8) + 932 at gl_lightbuffer.cpp:159

GLFlat::SetupSubsectorLights(this=0x00000001224bea00, pass=0, sub=0x0000000125040f20, dli=0x00007fff5fbfc83c) 
+ 577 at gl_flats.cpp:151
GLFlat::DrawSubsectors(this=0x00000001224bea00, pass=4, processlights=true, istrans=true) + 259 at gl_flats.cpp:269

GLFlat::Draw(this=0x00000001224bea00, pass=4, trans=true) + 1357 at gl_flats.cpp:427
GLDrawList::DoDraw(this=0x0000000120404788, pass=4, i=17, trans=true) + 192 at gl_drawinfo.cpp:733
GLDrawList::DoDrawSorted(this=0x0000000120404788, head=0x0000618000245640) + 349 at gl_drawinfo.cpp:792

GLDrawList::DrawSorted(this=0x0000000120404788) + 234 at gl_drawinfo.cpp:840
GLSceneDrawer::RenderTranslucent(this=0x00007fff5fbfcd00) + 207 at gl_scene.cpp:449
GLSceneDrawer::DrawScene(this=0x00007fff5fbfcd00, drawmode=1) + 485 at gl_scene.cpp:518
GLSceneDrawer::ProcessScene(this=0x00007fff5fbfcd00, toscreen=false) + 286 at gl_scene.cpp:722
GLSceneDrawer::RenderViewpoint(this=0x00007fff5fbfcd00, camera=0x0000000120f32a00, bounds=0x00007fff5fbfcd60, 
fov=105, ratio=1.5, fovratio=1.5, mainview=false, toscreen=false) + 1521 at gl_scene.cpp:838
FGLInterface::RenderTextureView(this=0x0000610000005690, tex=0x00006080001c2ee0, Viewpoint=0x0000000120f32a00, 
FOV=105) + 376 at gl_scene.cpp:1120
FCanvasTextureInfo::UpdateAll() + 161 at r_utility.cpp:997
FGLRenderer::RenderView(this=0x000000010269fb40, player=0x0000000100f5ab40) + 271 at gl_scene.cpp:897

FGLInterface::RenderView(this=0x0000610000005690, player=0x0000000100f5ab40) + 35 at gl_scene.cpp:1071

D_Display() + 1609 at d_main.cpp:782
D_DoomLoop() + 663 at d_main.cpp:1036
D_DoomMain() + 6840 at d_main.cpp:2705

The issue is related to deferred lighting as I'm using OpenGL 4.1 core profile on macOS.
Commenting that assert() "fixes" the problem as there is corresponding check after it.

Is this assertion a leftover from those times when there was no support for core profile below OpenGL 4.4?
Or is it designates some not yet implemented feature for deferred lighting render path?
Revision 2017-03-25 08:48 by _mental_
Description Trying to load Enjay's latest masterpiece Waterlab GZD using the latest commit I encountered the following assertion failure:
Assertion failed: (mBufferPointer != NULL), function UploadLights, file src/gl/dynlights/gl_lightbuffer.cpp, 
line 159.
Callstack:
FLightBuffer::UploadLights(this=0x00006000002741c0, data=0x00000001010604b8) + 932 at gl_lightbuffer.cpp:159

GLFlat::SetupSubsectorLights(this=0x00000001224bea00, pass=0, sub=0x0000000125040f20, dli=0x00007fff5fbfc83c) 
+ 577 at gl_flats.cpp:151
GLFlat::DrawSubsectors(this=0x00000001224bea00, pass=4, processlights=true, istrans=true) + 259 at gl_flats.cpp:269

GLFlat::Draw(this=0x00000001224bea00, pass=4, trans=true) + 1357 at gl_flats.cpp:427
GLDrawList::DoDraw(this=0x0000000120404788, pass=4, i=17, trans=true) + 192 at gl_drawinfo.cpp:733
GLDrawList::DoDrawSorted(this=0x0000000120404788, head=0x0000618000245640) + 349 at gl_drawinfo.cpp:792

GLDrawList::DrawSorted(this=0x0000000120404788) + 234 at gl_drawinfo.cpp:840
GLSceneDrawer::RenderTranslucent(this=0x00007fff5fbfcd00) + 207 at gl_scene.cpp:449
GLSceneDrawer::DrawScene(this=0x00007fff5fbfcd00, drawmode=1) + 485 at gl_scene.cpp:518
GLSceneDrawer::ProcessScene(this=0x00007fff5fbfcd00, toscreen=false) + 286 at gl_scene.cpp:722
GLSceneDrawer::RenderViewpoint(this=0x00007fff5fbfcd00, camera=0x0000000120f32a00, bounds=0x00007fff5fbfcd60, 
fov=105, ratio=1.5, fovratio=1.5, mainview=false, toscreen=false) + 1521 at gl_scene.cpp:838
FGLInterface::RenderTextureView(this=0x0000610000005690, tex=0x00006080001c2ee0, Viewpoint=0x0000000120f32a00, 
FOV=105) + 376 at gl_scene.cpp:1120
FCanvasTextureInfo::UpdateAll() + 161 at r_utility.cpp:997
FGLRenderer::RenderView(this=0x000000010269fb40, player=0x0000000100f5ab40) + 271 at gl_scene.cpp:897

FGLInterface::RenderView(this=0x0000610000005690, player=0x0000000100f5ab40) + 35 at gl_scene.cpp:1071

D_Display() + 1609 at d_main.cpp:782
D_DoomLoop() + 663 at d_main.cpp:1036
D_DoomMain() + 6840 at d_main.cpp:2705

The issue is related to deferred lighting as I'm using OpenGL 4.1 core profile on macOS.
Commenting that assert() "fixes" the problem as there is corresponding check after it.

Is this assertion a leftover from those times when there was no support for core profile below OpenGL 4.4?
Or is it designates some unimplemented feature when deferred lighting is active?
Revision 2017-03-25 08:47 by _mental_
Description Trying to load Enjay's latest masterpiece Waterlab GZD using the latest commit I encountered the following assertion failure:
Assertion failed: (mBufferPointer != NULL), function UploadLights, file src/gl/dynlights/gl_lightbuffer.cpp, 
line 159.
Callstack:
FLightBuffer::UploadLights(this=0x00006000002741c0, data=0x00000001010604b8) + 932 at gl_lightbuffer.cpp:159

GLFlat::SetupSubsectorLights(this=0x00000001224bea00, pass=0, sub=0x0000000125040f20, dli=0x00007fff5fbfc83c) 
+ 577 at gl_flats.cpp:151
GLFlat::DrawSubsectors(this=0x00000001224bea00, pass=4, processlights=true, istrans=true) + 259 at gl_flats.cpp:269

GLFlat::Draw(this=0x00000001224bea00, pass=4, trans=true) + 1357 at gl_flats.cpp:427
GLDrawList::DoDraw(this=0x0000000120404788, pass=4, i=17, trans=true) + 192 at gl_drawinfo.cpp:733
GLDrawList::DoDrawSorted(this=0x0000000120404788, head=0x0000618000245640) + 349 at gl_drawinfo.cpp:792

gzdoom`GLDrawList::DrawSorted(this=0x0000000120404788) + 234 at gl_drawinfo.cpp:840
gzdoom`GLSceneDrawer::RenderTranslucent(this=0x00007fff5fbfcd00) + 207 at gl_scene.cpp:449
gzdoom`GLSceneDrawer::DrawScene(this=0x00007fff5fbfcd00, drawmode=1) + 485 at gl_scene.cpp:518
gzdoom`GLSceneDrawer::ProcessScene(this=0x00007fff5fbfcd00, toscreen=false) + 286 at gl_scene.cpp:722

gzdoom`GLSceneDrawer::RenderViewpoint(this=0x00007fff5fbfcd00, camera=0x0000000120f32a00, bounds=0x00007fff5fbfcd60, 
fov=105, ratio=1.5, fovratio=1.5, mainview=false, toscreen=false) + 1521 at gl_scene.cpp:838
gzdoom`FGLInterface::RenderTextureView(this=0x0000610000005690, tex=0x00006080001c2ee0, Viewpoint=0x0000000120f32a00, 
FOV=105) + 376 at gl_scene.cpp:1120
gzdoom`FCanvasTextureInfo::UpdateAll() + 161 at r_utility.cpp:997
gzdoom`FGLRenderer::RenderView(this=0x000000010269fb40, player=0x0000000100f5ab40) + 271 at gl_scene.cpp:897

gzdoom`FGLInterface::RenderView(this=0x0000610000005690, player=0x0000000100f5ab40) + 35 at gl_scene.cpp:1071

gzdoom`D_Display() + 1609 at d_main.cpp:782
gzdoom`D_DoomLoop() + 663 at d_main.cpp:1036
gzdoom`D_DoomMain() + 6840 at d_main.cpp:2705

The issue is related to deferred lighting as I'm using OpenGL 4.1 core profile on macOS.
Commenting that assert() "fixes" the problem as there is corresponding check after it.

Is this assertion a leftover from those times when there was no support for core profile below OpenGL 4.4?
Or is it designates some unimplemented feature when deferred lighting is active?