gles: Don't use vertex array objects
authorBenjamin Otte <otte@redhat.com>
Sat, 15 Apr 2023 15:50:18 +0000 (17:50 +0200)
committerBenjamin Otte <otte@redhat.com>
Sat, 15 Apr 2023 15:55:20 +0000 (17:55 +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 f186c79fb8c7974aea55f546104fd8d20efd23c9..2a4f2c2d4894bcd2bf5ffc9c2700902841dfe6bd 100644 (file)
@@ -1060,8 +1060,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);
 
@@ -1234,7 +1237,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);