mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 16:08:20 +02:00
gl: Use GL_TRIANGLES instead of GL_QUADS
It seems to increase performance by 1-2% on average and up to 30% in some cases (on i965).
This commit is contained in:
parent
2b771da47a
commit
0bb11e8f5b
1 changed files with 11 additions and 5 deletions
|
|
@ -1158,19 +1158,19 @@ _cairo_gl_composite_draw (cairo_gl_context_t *ctx,
|
||||||
unsigned int count = setup->vb_offset / setup->vertex_size;
|
unsigned int count = setup->vb_offset / setup->vertex_size;
|
||||||
|
|
||||||
if (! setup->pre_shader) {
|
if (! setup->pre_shader) {
|
||||||
glDrawArrays (GL_QUADS, 0, count);
|
glDrawArrays (GL_TRIANGLES, 0, count);
|
||||||
} else {
|
} else {
|
||||||
_cairo_gl_use_program (ctx, setup->pre_shader);
|
_cairo_gl_use_program (ctx, setup->pre_shader);
|
||||||
_cairo_gl_set_operator (setup->dst, CAIRO_OPERATOR_DEST_OUT, TRUE);
|
_cairo_gl_set_operator (setup->dst, CAIRO_OPERATOR_DEST_OUT, TRUE);
|
||||||
_cairo_gl_set_src_alpha_operand (ctx, setup);
|
_cairo_gl_set_src_alpha_operand (ctx, setup);
|
||||||
_cairo_gl_set_component_alpha_mask_operand (ctx, setup);
|
_cairo_gl_set_component_alpha_mask_operand (ctx, setup);
|
||||||
glDrawArrays (GL_QUADS, 0, count);
|
glDrawArrays (GL_TRIANGLES, 0, count);
|
||||||
|
|
||||||
_cairo_gl_use_program (ctx, setup->shader);
|
_cairo_gl_use_program (ctx, setup->shader);
|
||||||
_cairo_gl_set_operator (setup->dst, setup->op, TRUE);
|
_cairo_gl_set_operator (setup->dst, setup->op, TRUE);
|
||||||
_cairo_gl_set_src_operand (ctx, setup);
|
_cairo_gl_set_src_operand (ctx, setup);
|
||||||
_cairo_gl_set_component_alpha_mask_operand (ctx, setup);
|
_cairo_gl_set_component_alpha_mask_operand (ctx, setup);
|
||||||
glDrawArrays (GL_QUADS, 0, count);
|
glDrawArrays (GL_TRIANGLES, 0, count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1284,9 +1284,12 @@ _cairo_gl_composite_emit_rect (cairo_gl_context_t *ctx,
|
||||||
GLfloat y2,
|
GLfloat y2,
|
||||||
uint32_t color)
|
uint32_t color)
|
||||||
{
|
{
|
||||||
_cairo_gl_composite_prepare_buffer (ctx, setup, 4);
|
_cairo_gl_composite_prepare_buffer (ctx, setup, 6);
|
||||||
|
|
||||||
_cairo_gl_composite_emit_vertex (ctx, setup, x1, y1, color);
|
_cairo_gl_composite_emit_vertex (ctx, setup, x1, y1, color);
|
||||||
|
_cairo_gl_composite_emit_vertex (ctx, setup, x2, y1, color);
|
||||||
|
_cairo_gl_composite_emit_vertex (ctx, setup, x1, y2, color);
|
||||||
|
|
||||||
_cairo_gl_composite_emit_vertex (ctx, setup, x2, y1, color);
|
_cairo_gl_composite_emit_vertex (ctx, setup, x2, y1, color);
|
||||||
_cairo_gl_composite_emit_vertex (ctx, setup, x2, y2, color);
|
_cairo_gl_composite_emit_vertex (ctx, setup, x2, y2, color);
|
||||||
_cairo_gl_composite_emit_vertex (ctx, setup, x1, y2, color);
|
_cairo_gl_composite_emit_vertex (ctx, setup, x1, y2, color);
|
||||||
|
|
@ -1325,9 +1328,12 @@ _cairo_gl_composite_emit_glyph (cairo_gl_context_t *ctx,
|
||||||
GLfloat glyph_x2,
|
GLfloat glyph_x2,
|
||||||
GLfloat glyph_y2)
|
GLfloat glyph_y2)
|
||||||
{
|
{
|
||||||
_cairo_gl_composite_prepare_buffer (ctx, setup, 4);
|
_cairo_gl_composite_prepare_buffer (ctx, setup, 6);
|
||||||
|
|
||||||
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x1, y1, glyph_x1, glyph_y1);
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x1, y1, glyph_x1, glyph_y1);
|
||||||
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x2, y1, glyph_x2, glyph_y1);
|
||||||
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x1, y2, glyph_x1, glyph_y2);
|
||||||
|
|
||||||
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x2, y1, glyph_x2, glyph_y1);
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x2, y1, glyph_x2, glyph_y1);
|
||||||
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x2, y2, glyph_x2, glyph_y2);
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x2, y2, glyph_x2, glyph_y2);
|
||||||
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x1, y2, glyph_x1, glyph_y2);
|
_cairo_gl_composite_emit_glyph_vertex (ctx, setup, x1, y2, glyph_x1, glyph_y2);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue