diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-06-18 17:00:58 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-06-18 17:00:58 +0000 |
commit | e8f9fb0f869223edb2cb3d67c142434cab663043 (patch) | |
tree | da0f1ccdc358e06fd1df5d28c05b7b394c1de0f0 | |
parent | 634bd2de48fb19f98686b39189c5f9299ef6020b (diff) | |
parent | f58fc6b22e143e43b45f297795959f217a26d95f (diff) | |
download | gtk+-e8f9fb0f869223edb2cb3d67c142434cab663043.tar.gz |
Merge branch 'gsk-big-batches' into 'master'
ci: Build Broadway on MacOS
See merge request GNOME/gtk!3686
-rw-r--r-- | gsk/ngl/gsknglcommandqueue.c | 6 | ||||
-rw-r--r-- | gsk/ngl/gsknglcommandqueueprivate.h | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gsk/ngl/gsknglcommandqueue.c b/gsk/ngl/gsknglcommandqueue.c index 6d61dbaad6..25eb37f53b 100644 --- a/gsk/ngl/gsknglcommandqueue.c +++ b/gsk/ngl/gsknglcommandqueue.c @@ -444,9 +444,12 @@ gsk_ngl_command_queue_new (GdkGLContext *context, else self->uniforms = gsk_ngl_uniform_state_new (); - /* Determine max texture size immediately and restore context */ + /* Determine max texture size and other limitations immediately + * and restore context + */ gdk_gl_context_make_current (context); glGetIntegerv (GL_MAX_TEXTURE_SIZE, &self->max_texture_size); + glGetIntegerv (GL_MAX_ELEMENTS_VERTICES, &self->max_elements_vertices); return g_steal_pointer (&self); } @@ -617,6 +620,7 @@ gsk_ngl_command_queue_end_draw (GskNglCommandQueue *self) last_batch->any.viewport.height == batch->any.viewport.height && last_batch->draw.framebuffer == batch->draw.framebuffer && last_batch->draw.vbo_offset + last_batch->draw.vbo_count == batch->draw.vbo_offset && + last_batch->draw.vbo_count + batch->draw.vbo_count <= self->max_elements_vertices && snapshots_equal (self, last_batch, batch)) { last_batch->draw.vbo_count += batch->draw.vbo_count; diff --git a/gsk/ngl/gsknglcommandqueueprivate.h b/gsk/ngl/gsknglcommandqueueprivate.h index a2f50c485d..3ed52021bc 100644 --- a/gsk/ngl/gsknglcommandqueueprivate.h +++ b/gsk/ngl/gsknglcommandqueueprivate.h @@ -231,6 +231,12 @@ struct _GskNglCommandQueue */ int max_texture_size; + /* Discovered max element count. We must not create batches that contain + * more vertices than this number. + */ + + int max_elements_vertices; + /* The index of the last batch in @batches, which may not be the element * at the end of the array, as batches can be reordered. This is used to * update the "next" index when adding a new batch. |