[Mesa-dev] Mesa (master): st/mesa: inline if(1) conditional

Jose Fonseca jfonseca at vmware.com
Wed Jan 25 05:50:57 PST 2012


It was easy. It's fixed now.

Jose

----- Original Message -----
> Marek,
> 
> I'm seeing the following assertion failure
> 
>    src/mesa/state_tracker/st_glsl_to_tgsi.cpp:4032:src_register:
>    Assertion `t->inputMapping[index] <
>    (sizeof(t->inputs)/sizeof(*(t->inputs)))' failed.
> 
> all over the place (conform, glean, piglit) since the commit below.
>  For example, doing
> 
>   /var/lib/hudson/tools/linux64/piglit/bin/pbo-drawpixels -auto
> 
> w/ llvmpipe.
> 
> Jose
> 
> ----- Original Message -----
> > Module: Mesa
> > Branch: master
> > Commit: 697b9945fb0f55428b06821f98fd8621372f81ad
> > URL:
> >    http://cgit.freedesktop.org/mesa/mesa/commit/?id=697b9945fb0f55428b06821f98fd8621372f81ad
> > 
> > Author: Marek Olšák <maraeo at gmail.com>
> > Date:   Mon Jan 23 13:28:07 2012 +0100
> > 
> > st/mesa: inline if(1) conditional
> > 
> > v2: fix typo
> > 
> > ---
> > 
> >  src/mesa/state_tracker/st_program.c |  434
> >  +++++++++++++++++------------------
> >  1 files changed, 215 insertions(+), 219 deletions(-)
> > 
> > diff --git a/src/mesa/state_tracker/st_program.c
> > b/src/mesa/state_tracker/st_program.c
> > index 978de88..cebe390 100644
> > --- a/src/mesa/state_tracker/st_program.c
> > +++ b/src/mesa/state_tracker/st_program.c
> > @@ -473,6 +473,23 @@ st_translate_fragment_program(struct
> > st_context
> > *st,
> >     struct st_fp_variant *variant = CALLOC_STRUCT(st_fp_variant);
> >     GLboolean deleteFP = GL_FALSE;
> >  
> > +   GLuint outputMapping[FRAG_RESULT_MAX];
> > +   GLuint inputMapping[FRAG_ATTRIB_MAX];
> > +   GLuint interpMode[PIPE_MAX_SHADER_INPUTS];  /* XXX size? */
> > +   GLuint attr;
> > +   const GLbitfield64 inputsRead = stfp->Base.Base.InputsRead;
> > +   struct ureg_program *ureg;
> > +
> > +   GLboolean write_all = GL_FALSE;
> > +
> > +   ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS];
> > +   ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS];
> > +   uint fs_num_inputs = 0;
> > +
> > +   ubyte fs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS];
> > +   ubyte fs_output_semantic_index[PIPE_MAX_SHADER_OUTPUTS];
> > +   uint fs_num_outputs = 0;
> > +
> >     if (!variant)
> >        return NULL;
> >  
> > @@ -508,243 +525,222 @@ st_translate_fragment_program(struct
> > st_context *st,
> >     }
> >  #endif
> >  
> > -   /* XXX this will be cleaned up in the following commit */
> > -   if (1) {
> > -      /* need to translate Mesa instructions to TGSI now */
> > -      GLuint outputMapping[FRAG_RESULT_MAX];
> > -      GLuint inputMapping[FRAG_ATTRIB_MAX];
> > -      GLuint interpMode[PIPE_MAX_SHADER_INPUTS];  /* XXX size? */
> > -      GLuint attr;
> > -      const GLbitfield64 inputsRead = stfp->Base.Base.InputsRead;
> > -      struct ureg_program *ureg;
> > -
> > -      GLboolean write_all = GL_FALSE;
> > -
> > -      ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS];
> > -      ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS];
> > -      uint fs_num_inputs = 0;
> > -
> > -      ubyte fs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS];
> > -      ubyte fs_output_semantic_index[PIPE_MAX_SHADER_OUTPUTS];
> > -      uint fs_num_outputs = 0;
> > -
> > -      if (!stfp->glsl_to_tgsi)
> > -         _mesa_remove_output_reads(&stfp->Base.Base,
> > PROGRAM_OUTPUT);
> > +   if (!stfp->glsl_to_tgsi)
> > +      _mesa_remove_output_reads(&stfp->Base.Base, PROGRAM_OUTPUT);
> >  
> > -      /*
> > -       * Convert Mesa program inputs to TGSI input register
> > semantics.
> > -       */
> > -      for (attr = 0; attr < FRAG_ATTRIB_MAX; attr++) {
> > -         if ((inputsRead & BITFIELD64_BIT(attr)) != 0) {
> > -            const GLuint slot = fs_num_inputs++;
> > +   /*
> > +    * Convert Mesa program inputs to TGSI input register
> > semantics.
> > +    */
> > +   for (attr = 0; attr < FRAG_ATTRIB_MAX; attr++) {
> > +      if ((inputsRead & BITFIELD64_BIT(attr)) != 0) {
> > +         const GLuint slot = fs_num_inputs++;
> >  
> > -            inputMapping[attr] = slot;
> > +         inputMapping[attr] = slot;
> >  
> > -            switch (attr) {
> > -            case FRAG_ATTRIB_WPOS:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_POSITION;
> > -               input_semantic_index[slot] = 0;
> > +         switch (attr) {
> > +         case FRAG_ATTRIB_WPOS:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_POSITION;
> > +            input_semantic_index[slot] = 0;
> > +            interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > +            break;
> > +         case FRAG_ATTRIB_COL0:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_COLOR;
> > +            input_semantic_index[slot] = 0;
> > +            interpMode[slot] =
> > st_translate_interp(stfp->Base.InterpQualifier[attr],
> > +                                                   TRUE);
> > +            break;
> > +         case FRAG_ATTRIB_COL1:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_COLOR;
> > +            input_semantic_index[slot] = 1;
> > +            interpMode[slot] =
> > st_translate_interp(stfp->Base.InterpQualifier[attr],
> > +                                                   TRUE);
> > +            break;
> > +         case FRAG_ATTRIB_FOGC:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_FOG;
> > +            input_semantic_index[slot] = 0;
> > +            interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
> > +            break;
> > +         case FRAG_ATTRIB_FACE:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_FACE;
> > +            input_semantic_index[slot] = 0;
> > +            interpMode[slot] = TGSI_INTERPOLATE_CONSTANT;
> > +            break;
> > +         case FRAG_ATTRIB_CLIP_DIST0:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST;
> > +            input_semantic_index[slot] = 0;
> > +            interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > +            break;
> > +         case FRAG_ATTRIB_CLIP_DIST1:
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST;
> > +            input_semantic_index[slot] = 1;
> > +            interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > +            break;
> > +            /* In most cases, there is nothing special about these
> > +             * inputs, so adopt a convention to use the generic
> > +             * semantic name and the mesa FRAG_ATTRIB_ number as
> > the
> > +             * index.
> > +             *
> > +             * All that is required is that the vertex shader
> > labels
> > +             * its own outputs similarly, and that the vertex
> > shader
> > +             * generates at least every output required by the
> > +             * fragment shader plus fixed-function hardware (such
> > as
> > +             * BFC).
> > +             *
> > +             * There is no requirement that semantic indexes start
> > at
> > +             * zero or be restricted to a particular range --
> > nobody
> > +             * should be building tables based on semantic index.
> > +             */
> > +         case FRAG_ATTRIB_PNTC:
> > +         case FRAG_ATTRIB_TEX0:
> > +         case FRAG_ATTRIB_TEX1:
> > +         case FRAG_ATTRIB_TEX2:
> > +         case FRAG_ATTRIB_TEX3:
> > +         case FRAG_ATTRIB_TEX4:
> > +         case FRAG_ATTRIB_TEX5:
> > +         case FRAG_ATTRIB_TEX6:
> > +         case FRAG_ATTRIB_TEX7:
> > +         case FRAG_ATTRIB_VAR0:
> > +         default:
> > +            /* Actually, let's try and zero-base this just for
> > +             * readability of the generated TGSI.
> > +             */
> > +            assert(attr >= FRAG_ATTRIB_TEX0);
> > +            input_semantic_index[slot] = (attr -
> > FRAG_ATTRIB_TEX0);
> > +            input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
> > +            if (attr == FRAG_ATTRIB_PNTC)
> >                 interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > -               break;
> > -            case FRAG_ATTRIB_COL0:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_COLOR;
> > -               input_semantic_index[slot] = 0;
> > -               interpMode[slot] =
> > st_translate_interp(stfp->Base.InterpQualifier[attr],
> > -                                                      TRUE);
> > -               break;
> > -            case FRAG_ATTRIB_COL1:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_COLOR;
> > -               input_semantic_index[slot] = 1;
> > +            else
> >                 interpMode[slot] =
> >                 st_translate_interp(stfp->Base.InterpQualifier[attr],
> > -                                                      TRUE);
> > -               break;
> > -            case FRAG_ATTRIB_FOGC:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_FOG;
> > -               input_semantic_index[slot] = 0;
> > -               interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
> > -               break;
> > -            case FRAG_ATTRIB_FACE:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_FACE;
> > -               input_semantic_index[slot] = 0;
> > -               interpMode[slot] = TGSI_INTERPOLATE_CONSTANT;
> > -               break;
> > -            case FRAG_ATTRIB_CLIP_DIST0:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST;
> > -               input_semantic_index[slot] = 0;
> > -               interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > -               break;
> > -            case FRAG_ATTRIB_CLIP_DIST1:
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST;
> > -               input_semantic_index[slot] = 1;
> > -               interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > -               break;
> > -               /* In most cases, there is nothing special about
> > these
> > -                * inputs, so adopt a convention to use the generic
> > -                * semantic name and the mesa FRAG_ATTRIB_ number
> > as
> > the
> > -                * index.
> > -                *
> > -                * All that is required is that the vertex shader
> > labels
> > -                * its own outputs similarly, and that the vertex
> > shader
> > -                * generates at least every output required by the
> > -                * fragment shader plus fixed-function hardware
> > (such
> > as
> > -                * BFC).
> > -                *
> > -                * There is no requirement that semantic indexes
> > start at
> > -                * zero or be restricted to a particular range --
> > nobody
> > -                * should be building tables based on semantic
> > index.
> > -                */
> > -            case FRAG_ATTRIB_PNTC:
> > -            case FRAG_ATTRIB_TEX0:
> > -            case FRAG_ATTRIB_TEX1:
> > -            case FRAG_ATTRIB_TEX2:
> > -            case FRAG_ATTRIB_TEX3:
> > -            case FRAG_ATTRIB_TEX4:
> > -            case FRAG_ATTRIB_TEX5:
> > -            case FRAG_ATTRIB_TEX6:
> > -            case FRAG_ATTRIB_TEX7:
> > -            case FRAG_ATTRIB_VAR0:
> > -            default:
> > -               /* Actually, let's try and zero-base this just for
> > -                * readability of the generated TGSI.
> > -                */
> > -               assert(attr >= FRAG_ATTRIB_TEX0);
> > -               input_semantic_index[slot] = (attr -
> > FRAG_ATTRIB_TEX0);
> > -               input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
> > -               if (attr == FRAG_ATTRIB_PNTC)
> > -                  interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
> > -               else
> > -                  interpMode[slot] =
> > st_translate_interp(stfp->Base.InterpQualifier[attr],
> > -                                                         FALSE);
> > -               break;
> > -            }
> > -         }
> > -         else {
> > -            inputMapping[attr] = -1;
> > +                                                      FALSE);
> > +            break;
> >           }
> >        }
> > -
> > -      /*
> > -       * Semantics and mapping for outputs
> > -       */
> > -      {
> > -         uint numColors = 0;
> > -         GLbitfield64 outputsWritten =
> > stfp->Base.Base.OutputsWritten;
> > -
> > -         /* if z is written, emit that first */
> > -         if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) {
> > -            fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_POSITION;
> > -            fs_output_semantic_index[fs_num_outputs] = 0;
> > -            outputMapping[FRAG_RESULT_DEPTH] = fs_num_outputs;
> > -            fs_num_outputs++;
> > -            outputsWritten &= ~(1 << FRAG_RESULT_DEPTH);
> > -         }
> > -
> > -         if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_STENCIL))
> > {
> > -            fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_STENCIL;
> > -            fs_output_semantic_index[fs_num_outputs] = 0;
> > -            outputMapping[FRAG_RESULT_STENCIL] = fs_num_outputs;
> > -            fs_num_outputs++;
> > -            outputsWritten &= ~(1 << FRAG_RESULT_STENCIL);
> > -         }
> > -
> > -         /* handle remaning outputs (color) */
> > -         for (attr = 0; attr < FRAG_RESULT_MAX; attr++) {
> > -            if (outputsWritten & BITFIELD64_BIT(attr)) {
> > -               switch (attr) {
> > -               case FRAG_RESULT_DEPTH:
> > -               case FRAG_RESULT_STENCIL:
> > -                  /* handled above */
> > -                  assert(0);
> > -                  break;
> > -               case FRAG_RESULT_COLOR:
> > -                  write_all = GL_TRUE; /* fallthrough */
> > -               default:
> > -                  assert(attr == FRAG_RESULT_COLOR ||
> > -                         (FRAG_RESULT_DATA0 <= attr && attr <
> > FRAG_RESULT_MAX));
> > -                  fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_COLOR;
> > -                  fs_output_semantic_index[fs_num_outputs] =
> > numColors;
> > -                  outputMapping[attr] = fs_num_outputs;
> > -                  numColors++;
> > -                  break;
> > -               }
> > -
> > -               fs_num_outputs++;
> > -            }
> > -         }
> > +      else {
> > +         inputMapping[attr] = -1;
> >        }
> > +   }
> >  
> > -      ureg = ureg_create( TGSI_PROCESSOR_FRAGMENT );
> > -      if (ureg == NULL) {
> > -         FREE(variant);
> > -         return NULL;
> > +   /*
> > +    * Semantics and mapping for outputs
> > +    */
> > +   {
> > +      uint numColors = 0;
> > +      GLbitfield64 outputsWritten =
> > stfp->Base.Base.OutputsWritten;
> > +
> > +      /* if z is written, emit that first */
> > +      if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) {
> > +         fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_POSITION;
> > +         fs_output_semantic_index[fs_num_outputs] = 0;
> > +         outputMapping[FRAG_RESULT_DEPTH] = fs_num_outputs;
> > +         fs_num_outputs++;
> > +         outputsWritten &= ~(1 << FRAG_RESULT_DEPTH);
> >        }
> >  
> > -      if (ST_DEBUG & DEBUG_MESA) {
> > -         _mesa_print_program(&stfp->Base.Base);
> > -         _mesa_print_program_parameters(st->ctx,
> > &stfp->Base.Base);
> > -         debug_printf("\n");
> > +      if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_STENCIL)) {
> > +         fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_STENCIL;
> > +         fs_output_semantic_index[fs_num_outputs] = 0;
> > +         outputMapping[FRAG_RESULT_STENCIL] = fs_num_outputs;
> > +         fs_num_outputs++;
> > +         outputsWritten &= ~(1 << FRAG_RESULT_STENCIL);
> >        }
> > -      if (write_all == GL_TRUE)
> > -         ureg_property_fs_color0_writes_all_cbufs(ureg, 1);
> >  
> > -      if (stfp->Base.FragDepthLayout != FRAG_DEPTH_LAYOUT_NONE) {
> > -         switch (stfp->Base.FragDepthLayout) {
> > -         case FRAG_DEPTH_LAYOUT_ANY:
> > -            ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_ANY);
> > -            break;
> > -         case FRAG_DEPTH_LAYOUT_GREATER:
> > -            ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_GREATER);
> > -            break;
> > -         case FRAG_DEPTH_LAYOUT_LESS:
> > -            ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_LESS);
> > -            break;
> > -         case FRAG_DEPTH_LAYOUT_UNCHANGED:
> > -            ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_UNCHANGED);
> > -            break;
> > -         default:
> > -            assert(0);
> > +      /* handle remaining outputs (color) */
> > +      for (attr = 0; attr < FRAG_RESULT_MAX; attr++) {
> > +         if (outputsWritten & BITFIELD64_BIT(attr)) {
> > +            switch (attr) {
> > +            case FRAG_RESULT_DEPTH:
> > +            case FRAG_RESULT_STENCIL:
> > +               /* handled above */
> > +               assert(0);
> > +               break;
> > +            case FRAG_RESULT_COLOR:
> > +               write_all = GL_TRUE; /* fallthrough */
> > +            default:
> > +               assert(attr == FRAG_RESULT_COLOR ||
> > +                      (FRAG_RESULT_DATA0 <= attr && attr <
> > FRAG_RESULT_MAX));
> > +               fs_output_semantic_name[fs_num_outputs] =
> > TGSI_SEMANTIC_COLOR;
> > +               fs_output_semantic_index[fs_num_outputs] =
> > numColors;
> > +               outputMapping[attr] = fs_num_outputs;
> > +               numColors++;
> > +               break;
> > +            }
> > +
> > +            fs_num_outputs++;
> >           }
> >        }
> > +   }
> >  
> > -      if (stfp->glsl_to_tgsi)
> > -         st_translate_program(st->ctx,
> > -                              TGSI_PROCESSOR_FRAGMENT,
> > -                              ureg,
> > -                              stfp->glsl_to_tgsi,
> > -                              &stfp->Base.Base,
> > -                              /* inputs */
> > -                              fs_num_inputs,
> > -                              inputMapping,
> > -                              input_semantic_name,
> > -                              input_semantic_index,
> > -                              interpMode,
> > -                              /* outputs */
> > -                              fs_num_outputs,
> > -                              outputMapping,
> > -                              fs_output_semantic_name,
> > -                              fs_output_semantic_index, FALSE,
> > -                              key->clamp_color );
> > -      else
> > -         st_translate_mesa_program(st->ctx,
> > -                                   TGSI_PROCESSOR_FRAGMENT,
> > -                                   ureg,
> > -                                   &stfp->Base.Base,
> > -                                   /* inputs */
> > -                                   fs_num_inputs,
> > -                                   inputMapping,
> > -                                   input_semantic_name,
> > -                                   input_semantic_index,
> > -                                   interpMode,
> > -                                   /* outputs */
> > -                                   fs_num_outputs,
> > -                                   outputMapping,
> > -                                   fs_output_semantic_name,
> > -                                   fs_output_semantic_index,
> > FALSE,
> > -                                   key->clamp_color);
> > +   ureg = ureg_create( TGSI_PROCESSOR_FRAGMENT );
> > +   if (ureg == NULL) {
> > +      FREE(variant);
> > +      return NULL;
> > +   }
> >  
> > -      variant->tgsi.tokens = ureg_get_tokens( ureg, NULL );
> > -      ureg_destroy( ureg );
> > +   if (ST_DEBUG & DEBUG_MESA) {
> > +      _mesa_print_program(&stfp->Base.Base);
> > +      _mesa_print_program_parameters(st->ctx, &stfp->Base.Base);
> > +      debug_printf("\n");
> >     }
> > +   if (write_all == GL_TRUE)
> > +      ureg_property_fs_color0_writes_all_cbufs(ureg, 1);
> > +
> > +   if (stfp->Base.FragDepthLayout != FRAG_DEPTH_LAYOUT_NONE) {
> > +      switch (stfp->Base.FragDepthLayout) {
> > +      case FRAG_DEPTH_LAYOUT_ANY:
> > +         ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_ANY);
> > +         break;
> > +      case FRAG_DEPTH_LAYOUT_GREATER:
> > +         ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_GREATER);
> > +         break;
> > +      case FRAG_DEPTH_LAYOUT_LESS:
> > +         ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_LESS);
> > +         break;
> > +      case FRAG_DEPTH_LAYOUT_UNCHANGED:
> > +         ureg_property_fs_depth_layout(ureg,
> > TGSI_FS_DEPTH_LAYOUT_UNCHANGED);
> > +         break;
> > +      default:
> > +         assert(0);
> > +      }
> > +   }
> > +
> > +   if (stfp->glsl_to_tgsi)
> > +      st_translate_program(st->ctx,
> > +                           TGSI_PROCESSOR_FRAGMENT,
> > +                           ureg,
> > +                           stfp->glsl_to_tgsi,
> > +                           &stfp->Base.Base,
> > +                           /* inputs */
> > +                           fs_num_inputs,
> > +                           inputMapping,
> > +                           input_semantic_name,
> > +                           input_semantic_index,
> > +                           interpMode,
> > +                           /* outputs */
> > +                           fs_num_outputs,
> > +                           outputMapping,
> > +                           fs_output_semantic_name,
> > +                           fs_output_semantic_index, FALSE,
> > +                           key->clamp_color );
> > +   else
> > +      st_translate_mesa_program(st->ctx,
> > +                                TGSI_PROCESSOR_FRAGMENT,
> > +                                ureg,
> > +                                &stfp->Base.Base,
> > +                                /* inputs */
> > +                                fs_num_inputs,
> > +                                inputMapping,
> > +                                input_semantic_name,
> > +                                input_semantic_index,
> > +                                interpMode,
> > +                                /* outputs */
> > +                                fs_num_outputs,
> > +                                outputMapping,
> > +                                fs_output_semantic_name,
> > +                                fs_output_semantic_index, FALSE,
> > +                                key->clamp_color);
> > +
> > +   variant->tgsi.tokens = ureg_get_tokens( ureg, NULL );
> > +   ureg_destroy( ureg );
> >  
> >     /* fill in variant */
> >     variant->driver_shader = pipe->create_fs_state(pipe,
> >     &variant->tgsi);
> > 
> > _______________________________________________
> > mesa-commit mailing list
> > mesa-commit at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-commit
> > 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list