Browse Source

glgsg: work around driver bug extracting buffer texture data

Some drivers would report the wrong internal format.  But it's silly that we query the internal format anyway, since buffer textures have a fixed sized internal format.
rdb 7 years ago
parent
commit
799f0b4f78
1 changed files with 8 additions and 1 deletions
  1. 8 1
      panda/src/glstuff/glGraphicsStateGuardian_src.cxx

+ 8 - 1
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -13442,7 +13442,14 @@ do_extract_texture_data(CLP(TextureContext) *gtc) {
 
 
   GLint internal_format = GL_RGBA;
   GLint internal_format = GL_RGBA;
 #ifndef OPENGLES
 #ifndef OPENGLES
-  glGetTexLevelParameteriv(page_target, 0, GL_TEXTURE_INTERNAL_FORMAT, &internal_format);
+  if (target != GL_TEXTURE_BUFFER) {
+    glGetTexLevelParameteriv(page_target, 0, GL_TEXTURE_INTERNAL_FORMAT, &internal_format);
+  } else {
+    // Some drivers give the wrong result for the above call.  No problem; we
+    // already know the internal format of a buffer texture since glTexBuffer
+    // required passing the exact sized format.
+    internal_format = gtc->_internal_format;
+  }
 #endif  // OPENGLES
 #endif  // OPENGLES
 
 
   // Make sure we were able to query those parameters properly.
   // Make sure we were able to query those parameters properly.