st/mesa: only memset sampler when about to use it.

This function was taking a lot more CPU than required due to it memsetting
a bunch of memory that didn't require it from what I can see.

We should only memset here when we are about to fill out the sampler,
otherwise we end up doing a bunch of memsets for everytime this function
is called, basically setting 0 memory to 0.

Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie 2011-05-16 09:44:10 +10:00
parent ecc051d65b
commit 6bd8647b54
1 changed files with 2 additions and 3 deletions

View File

@ -133,6 +133,8 @@ static void convert_sampler(struct st_context *st,
}
msamp = _mesa_get_samplerobj(st->ctx, texUnit);
memset(sampler, 0, sizeof(*sampler));
sampler->wrap_s = gl_wrap_xlate(msamp->WrapS);
sampler->wrap_t = gl_wrap_xlate(msamp->WrapT);
sampler->wrap_r = gl_wrap_xlate(msamp->WrapR);
@ -201,8 +203,6 @@ update_vertex_samplers(struct st_context *st)
for (su = 0; su < st->ctx->Const.MaxVertexTextureImageUnits; su++) {
struct pipe_sampler_state *sampler = st->state.vertex_samplers + su;
memset(sampler, 0, sizeof(*sampler));
if (vprog->Base.SamplersUsed & (1 << su)) {
GLuint texUnit;
@ -232,7 +232,6 @@ update_fragment_samplers(struct st_context *st)
for (su = 0; su < st->ctx->Const.MaxTextureImageUnits; su++) {
struct pipe_sampler_state *sampler = st->state.samplers + su;
memset(sampler, 0, sizeof(*sampler));
if (fprog->Base.SamplersUsed & (1 << su)) {
GLuint texUnit;