summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Wick <markus@selfnet.de>2014-06-06 21:20:58 +0200
committerAlex Deucher <alexander.deucher@amd.com>2014-06-09 13:52:58 -0400
commitb20c74ff2a78649b6d7a692658e14c6f421493a5 (patch)
treeebfa5f43e3ee48ef92cf5db09d5475b49fbc1cfe
parent883ae5886d1db26ba1ae270aa07219896f33c70f (diff)
glamor: don't reset the GLSL program
We don't use fixed function rendering, so there is no need to reset the program at all. This lets the driver avoid checking for state changes between draw calls when we rebind the same program. Improves xephyr x11perf -f8text performance by 6.03062% +/- 1.64928% (n=20) Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--src/glamor_copyarea.c1
-rw-r--r--src/glamor_core.c2
-rw-r--r--src/glamor_fill.c1
-rw-r--r--src/glamor_glyphblt.c2
-rw-r--r--src/glamor_gradient.c8
-rw-r--r--src/glamor_pixmap.c2
-rw-r--r--src/glamor_render.c1
-rw-r--r--src/glamor_tile.c2
-rw-r--r--src/glamor_trapezoid.c4
-rw-r--r--src/glamor_xv.c1
10 files changed, 0 insertions, 24 deletions
diff --git a/src/glamor_copyarea.c b/src/glamor_copyarea.c
index d52a74c..5ff8c1b 100644
--- a/src/glamor_copyarea.c
+++ b/src/glamor_copyarea.c
@@ -276,7 +276,6 @@ glamor_copy_n_to_n_textured(DrawablePtr src,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
/* The source texture is bound to a fbo, we have to flush it here. */
glamor_put_dispatch(glamor_priv);
glamor_priv->state = RENDER_STATE;
diff --git a/src/glamor_core.c b/src/glamor_core.c
index 3b68603..7866bee 100644
--- a/src/glamor_core.c
+++ b/src/glamor_core.c
@@ -293,7 +293,6 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
dispatch->glUniform1i(sampler_uniform_location, 0);
dispatch->glUniform1i(glamor_priv->finish_access_revert[0], 0);
dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[0], 0);
- dispatch->glUseProgram(0);
glamor_priv->finish_access_revert[1] =
dispatch->
@@ -311,7 +310,6 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
dispatch->glUniform1i(glamor_priv->finish_access_revert[1], 0);
dispatch->glUniform1i(sampler_uniform_location, 0);
dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[1], 0);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
}
diff --git a/src/glamor_fill.c b/src/glamor_fill.c
index e65c909..c54b6fd 100644
--- a/src/glamor_fill.c
+++ b/src/glamor_fill.c
@@ -259,7 +259,6 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
diff --git a/src/glamor_glyphblt.c b/src/glamor_glyphblt.c
index ca92100..6ddfa4b 100644
--- a/src/glamor_glyphblt.c
+++ b/src/glamor_glyphblt.c
@@ -158,7 +158,6 @@ glamor_poly_glyph_blt_pixels(DrawablePtr drawable, GCPtr gc,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
@@ -330,7 +329,6 @@ glamor_push_pixels_points(GCPtr gc, PixmapPtr bitmap,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
diff --git a/src/glamor_gradient.c b/src/glamor_gradient.c
index 4802745..25f2732 100644
--- a/src/glamor_gradient.c
+++ b/src/glamor_gradient.c
@@ -367,8 +367,6 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count, int dy
glamor_link_glsl_prog(dispatch, gradient_prog);
- dispatch->glUseProgram(0);
-
if (dyn_gen) {
index = 2;
glamor_priv->radial_max_nstops = stops_count;
@@ -558,8 +556,6 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, int dy
glamor_link_glsl_prog(dispatch, gradient_prog);
- dispatch->glUseProgram(0);
-
if (dyn_gen) {
index = 2;
glamor_priv->linear_max_nstops = stops_count;
@@ -1120,7 +1116,6 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return dst_picture;
@@ -1142,7 +1137,6 @@ GRADIENT_FAIL:
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return NULL;
}
@@ -1458,7 +1452,6 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return dst_picture;
@@ -1480,7 +1473,6 @@ GRADIENT_FAIL:
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return NULL;
}
diff --git a/src/glamor_pixmap.c b/src/glamor_pixmap.c
index 617ed26..d6bc2e3 100644
--- a/src/glamor_pixmap.c
+++ b/src/glamor_pixmap.c
@@ -878,7 +878,6 @@ ready_to_upload:
dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- dispatch->glUseProgram(0);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
dispatch->glDeleteTextures(1, &tex);
@@ -1218,7 +1217,6 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h, GLe
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return temp_fbo;
}
diff --git a/src/glamor_render.c b/src/glamor_render.c
index 4c31fea..9294cad 100644
--- a/src/glamor_render.c
+++ b/src/glamor_render.c
@@ -1421,7 +1421,6 @@ glamor_composite_with_shader(CARD8 op,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
dispatch->glDisable(GL_BLEND);
DEBUGF("finish rendering.\n");
- dispatch->glUseProgram(0);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
if (saved_source_format)
diff --git a/src/glamor_tile.c b/src/glamor_tile.c
index 3e3e553..3f42b24 100644
--- a/src/glamor_tile.c
+++ b/src/glamor_tile.c
@@ -86,7 +86,6 @@ glamor_init_tile_shader(ScreenPtr screen)
glamor_priv->tile_wh =
dispatch->glGetUniformLocation(glamor_priv->tile_prog,
"wh");
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
}
@@ -177,7 +176,6 @@ _glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
glamor_priv->state = RENDER_STATE;
diff --git a/src/glamor_trapezoid.c b/src/glamor_trapezoid.c
index cce7eb6..ca05cbf 100644
--- a/src/glamor_trapezoid.c
+++ b/src/glamor_trapezoid.c
@@ -930,7 +930,6 @@ TRAPEZOID_RESET_GL:
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
dispatch->glDisable(GL_BLEND);
- dispatch->glUseProgram(0);
TRAPEZOID_OUT:
if (box) {
@@ -1312,8 +1311,6 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
glamor_link_glsl_prog(dispatch, glamor_priv->trapezoid_prog);
- dispatch->glUseProgram(0);
-
glamor_put_dispatch(glamor_priv);
}
@@ -1524,7 +1521,6 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture,
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
- dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
return TRUE;
}
diff --git a/src/glamor_xv.c b/src/glamor_xv.c
index a89b4cd..6e62c3c 100644
--- a/src/glamor_xv.c
+++ b/src/glamor_xv.c
@@ -440,7 +440,6 @@ dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
-dispatch->glUseProgram(0);
glamor_put_dispatch(glamor_priv);
DamageDamageRegion(port_priv->pDraw, &port_priv->clip);
}