Open sqmh666 opened 1 month ago
You'll need to debug it, and figure out what is waiting on render thread?
I can't figure out because when I click next step,the screen stuck and tdr makes it black screen,I tried a few times to locate this error.I think it's graphics driver error because it's opengl driver for intel graphics accelerator is quite different from older graphics.I have tried all suitable driver and win10,11before,nothing helps.The output in vs2019 shows bgfx running in multi-threaded mode.Then I debug from bgfx::init(init); into WAIT_OBJECT_0 == WaitForSingleObject(si->m_handle, millisecond); by step,next step video tdr failure.Windbg shows useless message.
I debug from bgfx::init(init); into WAIT_OBJECT_0 == WaitForSingleObject(si->m_handle, millisecond); by step,next step video tdr failure.Windbg shows useless message.
Yes, this is API thread waiting for render thread to finish. You need to switch to render thread, and see where is GL renderer.
I can't figure out because when I click next step,the screen stuck and tdr makes it black screen,I tried a few times to locate this error.I think it's graphics driver error because it's opengl driver for intel graphics accelerator is quite different from older graphics.
I don't have hardware or driver you're using, so it's impossible for me to reproduce this locally and figure out, that's why I'm saying you have to debug and see what's going on. I don't even have guess what it might be other than faulty drivers since I never seen anything like that elsewhere.
I have already been on render thread when I goto return WAIT_OBJECT_0 == WaitForSingleObject(si->m_handle, milliseconds); call stack on the main thread: example-18-iblDebug.exe!bgfx::gl::RendererContextGL::RendererContextGL() line 2225 C++
example-18-iblDebug.exe!bgfx::gl::rendererCreate(const bgfx::Init & _init) line 4834 C++ example-18-iblDebug.exe!bgfx::rendererCreate(const bgfx::Init & _init) line 2776 C++ example-18-iblDebug.exe!bgfx::Context::rendererExecCommands(bgfx::CommandBuffer & _cmdbuf) line 2827 C++ example-18-iblDebug.exe!bgfx::Context::renderFrame(int _msecs) line 2457 C++ example-18-iblDebug.exe!bgfx::renderFrame(int _msecs) line 1480 C++ example-18-iblDebug.exe!entry::Context::run(int _argc, const char const _argv) line 521 C++ example-18-iblDebug.exe!main(int _argc, const char const _argv) line 1191 C++ I try to freeze all thread but the main thread,it's the same problem It's all message I can get from project
That call stack doesn't make sense based on latest version: https://github.com/bkaradzic/bgfx/blob/0de1f036d8996f0ec15a8243ebf60ed8d402f9c1/src/renderer_gl.cpp#L2225
You're in constructor. You should link code where you are.
I have found the where the problem is. Call Stack
> example-18-iblDebug.exe!bgfx::gl::TimerQueryGL::update() line 1636 C++
example-18-iblDebug.exe!bgfx::gl::TimerQueryGL::end(unsigned int _idx) line 1619 C++
example-18-iblDebug.exe!bgfx::gl::RendererContextGL::submit(bgfx::Frame * _render, bgfx::ClearQuad & _clearQuad, bgfx::TextVideoMemBlitter & _textVideoMemBlitter) line 8602 C++
example-18-iblDebug.exe!bgfx::Context::renderFrame(int _msecs) line 2461 C++
example-18-iblDebug.exe!bgfx::renderFrame(int _msecs) line 1480 C++
example-18-iblDebug.exe!entry::Context::run(int _argc, const char * const * _argv) line 521 C++
example-18-iblDebug.exe!main(int _argc, const char * const * _argv) line 1191 C++
In renderer_gl.h
GL_CHECK(glGetQueryObjectiv(query.m_end
, GL_QUERY_RESULT_AVAILABLE
, &available
) );
This line of code calls glGetQueryObjectiv = igxelpgicd32.dll while on the older thinkpad mentioned above,it calls glGetQueryObjectiv = igxelpicd32.dll There are only igxelpgicd32.dll and igxelpgicd64.dll on my new thinkpad while the older thinkpad includes both of igxelpicd32.dll and igxelpicd64.dll extra.These dlls are OpenGL driver for Intel graphics accelerator. So in this function I can't goto next step,it just stuck there. Is there any solution to this Tough issue?Deeply appreciate your support and guidance!
Set m_timerQuerySupport
to false.
But this is definitely driver issue.
Hello, I was wondering if this is related:
I am trying to run the examples provided (meatballs specifically) in my lap that has an Nvidia RTX 3050.
I forced to use opengl by setting up:
init.type = bgfx::RendererType::OpenGL
When I run the app the following error message pops up:
I know is not a TDR but it seems to be caused by the same thing, OpenGL rendering. Could it be something related to the drivers or is more related to the way bfgx is dealing with opengl calls?
Win11 23H2 thinkpad, CPU:Intel Ultra7 155H,Graphics:Intel Arc(Core graphics) 18-ibl.cpp
line419: init.type = args.m_type; I change it into init.type = bgfx::RendererType::OpenGL; in Visual Studio and execute single-step debugging about bgfx::init(init); Call Stack:
return WAIT_OBJECT_0 == WaitForSingleObject(si->m_handle, milliseconds); I get stuck at this,however,on an older version of thinkpad it's all fine,older version of thinkpad:i7-1260p,Intel iris xe and nvidia mx550 I have update driver for graphic(Arc graphic) tried everything I could do but nothing helped