--- glamor/glamor_vbo.c.orig 2020-11-13 21:49:54.846669000 -0600 +++ glamor/glamor_vbo.c 2020-11-13 21:49:58.689173000 -0600 @@ -52,6 +52,15 @@ glamor_get_vbo_space(ScreenPtr screen, unsigned size, glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + /* To ensure we don't get out of alignment on the next allocation, + * round size up if necessary so the next object will start on + * a natural alignment boundary. + * + * This is needed to prevent alignment traps when writing to + * cache-inibited memory on some systems. + */ + size = ALIGN(size, __alignof__(void*)); + if (glamor_priv->has_buffer_storage) { if (glamor_priv->vbo_size < glamor_priv->vbo_offset + size) { if (glamor_priv->vbo_size)