From 833a33bf6e085a79ec74c5f296a8e55ebec9f9b5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 7 Feb 2012 16:18:05 +0000 Subject: [PATCH] st/mesa: avoid vertex texture and sampler updates for 0 case If we had no vertex textures or samplers previously and we have none now, don't bother doing the enables dance. I was profiling nexuiz on noop and noticed these two functions in the profile, this drops their usage from 0.86% to 0.03% and 0.23% to 0.03% for texture and samplers. Signed-off-by: Dave Airlie --- src/mesa/state_tracker/st_atom_sampler.c | 2 ++ src/mesa/state_tracker/st_atom_texture.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index ad159c64dc1..8845fed512f 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -201,6 +201,8 @@ update_vertex_samplers(struct st_context *st) struct gl_vertex_program *vprog = ctx->VertexProgram._Current; GLuint su; + if (st->state.num_vertex_samplers == 0 && vprog->Base.SamplersUsed == 0) + return; st->state.num_vertex_samplers = 0; /* loop over sampler units (aka tex image units) */ diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index 88e6128c8f7..d241527cc6a 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -260,6 +260,9 @@ update_vertex_textures(struct st_context *st) struct gl_vertex_program *vprog = ctx->VertexProgram._Current; GLuint su; + if (!vprog->Base.SamplersUsed && st->state.num_vertex_textures == 0) + return; + st->state.num_vertex_textures = 0; /* loop over sampler units (aka tex image units) */ -- 2.30.2