gles: Don't use vertex array objects
authorBenjamin Otte <otte@redhat.com>
Sat, 15 Apr 2023 15:50:18 +0000 (17:50 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 21 Apr 2023 07:21:10 +0000 (09:21 +0200)
They're not needed and GLES doesn't technically support them, even
though GTK had been using them via epoxy sneakily using the
GL_OES_vertex_array_object extension behind our back.

gsk/gl/gskglcommandqueue.c

index 8fee49fd15b4cb6659f03146d24d0233267b6384..a8624642f09a593f89f392e4362ce5d171ae4860 100644 (file)
@@ -1002,8 +1002,11 @@ gsk_gl_command_queue_execute (GskGLCommandQueue    *self,
   glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
   glBlendEquation (GL_FUNC_ADD);
 
-  glGenVertexArrays (1, &vao_id);
-  glBindVertexArray (vao_id);
+  if (!gdk_gl_context_get_use_es (self->context))
+    {
+      glGenVertexArrays (1, &vao_id);
+      glBindVertexArray (vao_id);
+    }
 
   vbo_id = gsk_gl_buffer_submit (&self->vertices);
 
@@ -1159,7 +1162,8 @@ gsk_gl_command_queue_execute (GskGLCommandQueue    *self,
     }
 
   glDeleteBuffers (1, &vbo_id);
-  glDeleteVertexArrays (1, &vao_id);
+  if (!gdk_gl_context_get_use_es (self->context))
+    glDeleteVertexArrays (1, &vao_id);
 
   gdk_profiler_set_int_counter (self->metrics.n_binds, n_binds);
   gdk_profiler_set_int_counter (self->metrics.n_uniforms, n_uniforms);