X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fdrivers%2Fsoftpipe%2Fsp_fs_exec.c;h=3188dd14b0663bc8f05f4d588c269b3b1dc471f4;hb=877128505431adaf817dc8069172ebe4a1cdf5d8;hp=779b8c4995c98e1a9a3a18af5f08dab025718879;hpb=f8e6d19f3f40931be741b44d3edf210c38e13f0f;p=mesa.git diff --git a/src/gallium/drivers/softpipe/sp_fs_exec.c b/src/gallium/drivers/softpipe/sp_fs_exec.c index 779b8c4995c..3188dd14b06 100644 --- a/src/gallium/drivers/softpipe/sp_fs_exec.c +++ b/src/gallium/drivers/softpipe/sp_fs_exec.c @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * Copyright 2007 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +18,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -61,19 +61,15 @@ sp_exec_fragment_shader(const struct sp_fragment_shader_variant *var) static void exec_prepare( const struct sp_fragment_shader_variant *var, - struct tgsi_exec_machine *machine, - struct tgsi_sampler **samplers ) + struct tgsi_exec_machine *machine, + struct tgsi_sampler *sampler ) { /* * Bind tokens/shader to the interpreter's machine state. - * Avoid redundant binding. */ - if (machine->Tokens != var->tokens) { - tgsi_exec_machine_bind_shader( machine, - var->tokens, - PIPE_MAX_SAMPLERS, - samplers ); - } + tgsi_exec_machine_bind_shader(machine, + var->tokens, + sampler); } @@ -180,8 +176,13 @@ exec_run( const struct sp_fragment_shader_variant *var, static void -exec_delete( struct sp_fragment_shader_variant *var ) +exec_delete(struct sp_fragment_shader_variant *var, + struct tgsi_exec_machine *machine) { + if (machine->Tokens == var->tokens) { + tgsi_exec_machine_bind_shader(machine, NULL, NULL); + } + FREE( (void *) var->tokens ); FREE(var); }