cogl-pango-display-list: Don't use VBOs if the texture can't handle it

If the texture can't be hardware repeated (ie, if it is sliced or it
has waste) then Cogl will reject the layer when rendering with a
VBO. In this case we should always fall back to rendering with
cogl_rectangle.

This commit is only needed temporarily because Cogl will end up
putting atlas textures in the display list. A later commit in the
series will make it so that the display list always has primitive
textures in it so this commit can be reverted.
This commit is contained in:
Neil Roberts 2010-02-18 15:04:06 +00:00 committed by Robert Bragg
parent 12b751a8e1
commit a2d9ad21ef

View File

@ -27,6 +27,7 @@
#include <glib.h>
#include <cogl/cogl.h>
#include <cogl/cogl-texture-private.h>
#include <string.h>
#include "cogl-pango-display-list.h"
@ -325,7 +326,10 @@ _cogl_pango_display_list_render_texture (CoglMaterial *material,
* with other geometry. */
/* FIXME: 100 is a number I plucked out of thin air; it would be good
* to determine this empirically! */
if (node->d.texture.verts->len < 100)
if (node->d.texture.verts->len < 100 ||
/* We can't use a VBO if the texture can't be hardware repeated
because Cogl will reject it */
!_cogl_texture_can_hardware_repeat (node->d.texture.texture))
emit_rectangles_through_journal (node);
else
emit_vertex_buffer_geometry (node);