Fix the problem of VBO leak.
In some cases we allocate the VBO but have no vertex to emit, which cause the VBO fail to be released. Fix it. Signed-off-by: Junyan He <junyan.he@linux.intel.com>
This commit is contained in:
parent
9f78e22fa6
commit
5512c14e34
|
@ -826,9 +826,6 @@ glamor_flush_composite_rects(ScreenPtr screen)
|
|||
glamor_get_screen_private(screen);
|
||||
glamor_gl_dispatch *dispatch;
|
||||
|
||||
if (!glamor_priv->render_nr_verts)
|
||||
return;
|
||||
|
||||
dispatch = glamor_get_dispatch(glamor_priv);
|
||||
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
|
||||
dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
|
||||
|
@ -840,6 +837,9 @@ glamor_flush_composite_rects(ScreenPtr screen)
|
|||
glamor_priv->vb, GL_DYNAMIC_DRAW);
|
||||
}
|
||||
|
||||
if (!glamor_priv->render_nr_verts)
|
||||
return;
|
||||
|
||||
dispatch->glDrawElements(GL_TRIANGLES, (glamor_priv->render_nr_verts * 3) / 2,
|
||||
GL_UNSIGNED_SHORT, NULL);
|
||||
glamor_put_dispatch(glamor_priv);
|
||||
|
|
|
@ -199,9 +199,6 @@ glamor_flush_composite_triangles(ScreenPtr screen)
|
|||
glamor_get_screen_private(screen);
|
||||
glamor_gl_dispatch *dispatch;
|
||||
|
||||
if (!glamor_priv->render_nr_verts)
|
||||
return;
|
||||
|
||||
dispatch = glamor_get_dispatch(glamor_priv);
|
||||
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
|
||||
dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
|
||||
|
@ -213,6 +210,9 @@ glamor_flush_composite_triangles(ScreenPtr screen)
|
|||
glamor_priv->vb, GL_DYNAMIC_DRAW);
|
||||
}
|
||||
|
||||
if (!glamor_priv->render_nr_verts)
|
||||
return;
|
||||
|
||||
dispatch->glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts);
|
||||
glamor_put_dispatch(glamor_priv);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user