GLES crash on very old Intel Hardware

Moderator: GZDoom Developers

Forum rules
Please construct and post a simple demo whenever possible for all bug reports. Please provide links to everything.

If you can include a wad demonstrating the problem, please do so. Bug reports that include fully-constructed demos have a much better chance of being investigated in a timely manner than those that don't.

Please make a new topic for every bug. Don't combine multiple bugs into a single topic. Thanks!
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3121
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain

GLES crash on very old Intel Hardware

Post by drfrag »

Intel GL 2.1 and some GL 3.1 hardware. I'm putting it here in case someone else brings some light. I own an old laptop with GMA 4500M graphics.
It's a recent GZDoom master "GLES: Fix texture MapBuffer and AllocateBuffer create client side memory."
Crashes here:

Code: Select all

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Here's the stack trace and the autos tab for the last step.

Code: Select all

    0000000000000000()   Desconocido
>   gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::InitializeState() Línea 150   C++
    gzdoom.exe!IVideo::SetResolution() Línea 325   C++
    gzdoom.exe!V_Init2() Línea 392   C++
    gzdoom.exe!D_DoomMain_Internal() Línea 3497   C++
    gzdoom.exe!GameMain() Línea 3603   C++
    gzdoom.exe!DoMain(HINSTANCE__ * hInstance) Línea 981   C++
    gzdoom.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * nothing, wchar_t * cmdline, int nCmdShow) Línea 1270   C++

-      this   0x000000000ba26270 {HWGammaActive=false mDebug=empty camtexcount=0 }   OpenGLESRenderer::OpenGLFrameBuffer *
-      SystemGLFrameBuffer   {SwapInterval=1 }   SystemGLFrameBuffer
-      SystemBaseFrameBuffer   {m_Gamma=-431602080. m_Brightness=-431602080. m_Contrast=-431602080. ...}   SystemBaseFrameBuffer
-      DFrameBuffer   {Width=1008 Height=602 hwcaps=32 ...}   DFrameBuffer
-      __vfptr   0x00000001403d7100 {gzdoom.exe!void(* OpenGLESRenderer::OpenGLFrameBuffer::`vftable'[46])()} {0x000000013f389a0f {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::`vector deleting destructor'(unsigned int)}, ...}   void * *
      [0]   0x000000013f389a0f {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::`vector deleting destructor'(unsigned int)}   void *
      [1]   0x000000013f369840 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::InitializeState(void)}   void *
      [2]   0x000000013f372b16 {gzdoom.exe!DFrameBuffer::IsVulkan(void)}   void *
      [3]   0x000000013f3835ec {gzdoom.exe!DFrameBuffer::IsPoly(void)}   void *
      [4]   0x000000013f373a20 {gzdoom.exe!DFrameBuffer::GetCanvas(void)}   void *
      [5]   0x000000013f38cdcc {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::Update(void)}   void *
      [6]   0x000000013f374f3d {gzdoom.exe!DFrameBuffer::UpdatePalette(void)}   void *
      [7]   0x000000013f37e6b9 {gzdoom.exe!SystemBaseFrameBuffer::IsFullscreen(void)}   void *
      [8]   0x000000013f38cd0e {gzdoom.exe!SystemBaseFrameBuffer::ToggleFullscreen(bool)}   void *
      [9]   0x000000013f37d967 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::SetVSync(bool)}   void *
      [10]   0x000000013f38243a {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::SetTextureFilterMode(void)}   void *
      [11]   0x000000013f3803e2 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::CreateHardwareTexture(int)}   void *
      [12]   0x000000013f37cdd2 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::PrecacheMaterial(class FMaterial *,int)}   void *
      [13]   0x000000013f37a22b {gzdoom.exe!DFrameBuffer::CreateMaterial(class FGameTexture *,int)}   void *
      [14]   0x000000013f375073 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::BeginFrame(void)}   void *
      [15]   0x000000013f37ded0 {gzdoom.exe!SystemBaseFrameBuffer::SetWindowSize(int,int)}   void *
      [16]   0x000000013f38b20b {gzdoom.exe!DFrameBuffer::StartPrecaching(void)}   void *
      [17]   0x000000013f38ad7e {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::RenderState(void)}   void *
      [18]   0x000000013f366aa5 {gzdoom.exe!SystemBaseFrameBuffer::GetClientWidth(void)}   void *
      [19]   0x000000013f375b1d {gzdoom.exe!SystemBaseFrameBuffer::GetClientHeight(void)}   void *
      [20]   0x000000013f38a53b {gzdoom.exe!DFrameBuffer::BlurScene(float)}   void *
      [21]   0x000000013f386cc9 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::CreateVertexBuffer(void)}   void *
      [22]   0x000000013f383c54 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::CreateIndexBuffer(void)}   void *
      [23]   0x000000013f381503 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::CreateDataBuffer(int,bool,bool)}   void *
      [24]   0x000000013f3668c0 {gzdoom.exe!DFrameBuffer::RenderTextureIsFlipped(void)const }   void *
      [25]   0x000000013f37e35d {gzdoom.exe!DFrameBuffer::Backend(void)}   void *
      [26]   0x000000013f36c5e5 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::DeviceName(void)const }   void *
      [27]   0x000000013f372afd {gzdoom.exe!DFrameBuffer::AmbientOccludeScene(float)}   void *
      [28]   0x000000013f36ead9 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::FirstEye(void)}   void *
      [29]   0x000000013f377e0e {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::NextEye(int)}   void *
      [30]   0x000000013f366a19 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::SetSceneRenderTarget(bool)}   void *
      [31]   0x000000013f3639bd {gzdoom.exe!DFrameBuffer::UpdateShadowMap(void)}   void *
      [32]   0x000000013f371a09 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::WaitForCommands(bool)}   void *
      [33]   0x000000013f376d47 {gzdoom.exe!DFrameBuffer::SetSaveBuffers(bool)}   void *
      [34]   0x000000013f361d66 {gzdoom.exe!DFrameBuffer::ImageTransitionScene(bool)}   void *
      [35]   0x000000013f364836 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::CopyScreenToBuffer(int,int,unsigned char *)}   void *
      [36]   0x000000013f3834d9 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::FlipSavePic(void)const }   void *
      [37]   0x000000013f361d8e {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::RenderTextureView(class FCanvasTexture *,class std::function<void >)}   void *
      [38]   0x000000013f36b500 {gzdoom.exe!DFrameBuffer::SetActiveRenderTarget(void)}   void *
      [39]   0x000000013f371c7f {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::WipeStartScreen(void)}   void *
      [40]   0x000000013f364bf1 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::WipeEndScreen(void)}   void *
      [41]   0x000000013f386e72 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::PostProcessScene(bool,int,float,class std::function<void > const &)}   void *
      [42]   0x000000013f36b60e {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::Draw2D(void)}   void *
      [43]   0x000000013f3818f0 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::SetViewportRects(struct IntRect *)}   void *
      [44]   0x000000013f36be74 {gzdoom.exe!OpenGLESRenderer::OpenGLFrameBuffer::GetScreenshotBuffer(int &,enum ESSType &,float &)}   void *
      Width   1008   int
      Height   602   int
      hwcaps   32   int
      glslversion   0.000000000   float
+      instack   0x000000000ba26288 {0, 0}   int[2]
      stencilValue   0   int
      uniformblockalignment   256   unsigned int
      maxuniformblock   65536   unsigned int
+      vendorstring   0x0000000180b7d920 "Intel"   const char *
+      mSkyData   0x0000000000000000 <NULL>   FSkyVertexBuffer *
+      mVertexData   0x0000000000000000 <NULL>   FFlatVertexBuffer *
+      mViewpoints   0x0000000000000000 <NULL>   HWViewpointBuffer *
+      mLights   0x0000000000000000 <NULL>   FLightBuffer *
-      mShadowMap   {mLights=Size = 0 mAABBTree=0x0000000000000000 <NULL> mNewTree=false ...}   IShadowMap
-      __vfptr   0x00000001405100e8 {gzdoom.exe!void(* IShadowMap::`vftable'[2])()} {0x000000013f387755 {gzdoom.exe!IShadowMap::`vector deleting destructor'(unsigned int)}}   void * *
      [0]   0x000000013f387755 {gzdoom.exe!IShadowMap::`vector deleting destructor'(unsigned int)}   void *
-      mLights   Size = 0   TArray<float,float>
      Size   0   unsigned int
      Capacity   0   unsigned int
+      [Vista sin formato]   {Array=0x0000000000000000 {???} Count=0 Most=0 }   TArray<float,float>
+      mAABBTree   0x0000000000000000 <NULL>   hwrenderer::LevelAABBTree *
      mNewTree   false   bool
+      mLightList   0x0000000000000000 <NULL>   IDataBuffer *
+      mNodesBuffer   0x0000000000000000 <NULL>   IDataBuffer *
+      mLinesBuffer   0x0000000000000000 <NULL>   IDataBuffer *
+      CollectLights   empty   std::function<void __cdecl(void)>
-      mScreenViewport   {left=-842150451 top=-842150451 width=-842150451 ...}   IntRect
      left   -842150451   int
      top   -842150451   int
      width   -842150451   int
      height   -842150451   int
-      mSceneViewport   {left=-842150451 top=-842150451 width=-842150451 ...}   IntRect
      left   -842150451   int
      top   -842150451   int
      width   -842150451   int
      height   -842150451   int
-      mOutputLetterbox   {left=-842150451 top=-842150451 width=-842150451 ...}   IntRect
      left   -842150451   int
      top   -842150451   int
      width   -842150451   int
      height   -842150451   int
-      mSceneClearColor   0x000000000ba26378 {0.000000000, 0.000000000, 0.000000000, 255.000000}   float[4]
      [0]   0.000000000   float
      [1]   0.000000000   float
      [2]   0.000000000   float
      [3]   255.000000   float
      mPipelineNbr   2   int
      mPipelineType   1   int
      FrameTime   0   unsigned __int64
      fpsLimitTime   0   unsigned __int64
      isIn2D   false   bool
      m_Gamma   -431602080.   float
      m_Brightness   -431602080.   float
      m_Contrast   -431602080.   float
+      m_origGamma   0x000000000ba263b4 {52685, 52685, 52685, 52685, 52685, 52685, 52685, 52685, 52685, 52685, 52685, 52685, ...}   unsigned short[768]
      m_Fullscreen   false   bool
-      m_displayDeviceNameBuffer   0x000000000ba269b5 "\\\\.\\DISPLAY1"   char[32]
      [0]   92 '\\'   char
      [1]   92 '\\'   char
      [2]   46 '.'   char
      [3]   92 '\\'   char
      [4]   68 'D'   char
      [5]   73 'I'   char
      [6]   83 'S'   char
      [7]   80 'P'   char
      [8]   76 'L'   char
      [9]   65 'A'   char
      [10]   89 'Y'   char
      [11]   49 '1'   char
      [12]   0 '\0'   char
      [13]   -51 'Í'   char
      [14]   -51 'Í'   char
      [15]   -51 'Í'   char
      [16]   -51 'Í'   char
      [17]   -51 'Í'   char
      [18]   -51 'Í'   char
      [19]   -51 'Í'   char
      [20]   -51 'Í'   char
      [21]   -51 'Í'   char
      [22]   -51 'Í'   char
      [23]   -51 'Í'   char
      [24]   -51 'Í'   char
      [25]   -51 'Í'   char
      [26]   -51 'Í'   char
      [27]   -51 'Í'   char
      [28]   -51 'Í'   char
      [29]   -51 'Í'   char
      [30]   -51 'Í'   char
      [31]   -51 'Í'   char
-      m_displayDeviceName   0x000000000ba269b5 "\\\\.\\DISPLAY1"   char *
         92 '\\'   char
      m_Monitor   0x0000000000010001   void *
      SwapInterval   1   int
      HWGammaActive   false   bool
-      mDebug   empty   std::shared_ptr<OpenGLESRenderer::FGLDebug>
-      [Vista sin formato]   {...}   std::shared_ptr<OpenGLESRenderer::FGLDebug>
+      std::_Ptr_base<OpenGLESRenderer::FGLDebug>   {_Ptr=0x0000000000000000 <NULL> _Rep=0x0000000000000000 <NULL> }   std::_Ptr_base<OpenGLESRenderer::FGLDebug>
      camtexcount   0   int

Return to “OpenGLES Renderer Bugs”