diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_depth_test.c | 38 | 
1 files changed, 24 insertions, 14 deletions
| diff --git a/src/gallium/drivers/softpipe/sp_quad_depth_test.c b/src/gallium/drivers/softpipe/sp_quad_depth_test.c index 5854cee1be..17cd5b8207 100644 --- a/src/gallium/drivers/softpipe/sp_quad_depth_test.c +++ b/src/gallium/drivers/softpipe/sp_quad_depth_test.c @@ -1,6 +1,7 @@  /**************************************************************************   *    * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * Copyright 2010 VMware, Inc.   * All Rights Reserved.   *    * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +19,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 THE AUTHORS 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. @@ -26,7 +27,7 @@   **************************************************************************/  /** - * \brief  Quad depth testing + * \brief  Quad depth / stencil testing   */  #include "pipe/p_defines.h" @@ -96,7 +97,9 @@ get_depth_stencil_values( struct depth_data *data,     }  } -/* If the shader has not been run, interpolate the depth values + +/** + * If the shader has not been run, interpolate the depth values   * ourselves.   */  static void @@ -115,6 +118,9 @@ interpolate_quad_depth( struct quad_header *quad )  } +/** + * Compute the depth_data::qzzzz[] values from the float fragment Z values. + */  static void  convert_quad_depth( struct depth_data *data,                       const struct quad_header *quad ) @@ -173,6 +179,9 @@ convert_quad_depth( struct depth_data *data, +/** + * Write data->bzzzz[] values and data->stencilVals into the Z/stencil buffer. + */  static void  write_depth_stencil_values( struct depth_data *data,                              struct quad_header *quad ) @@ -225,7 +234,6 @@ write_depth_stencil_values( struct depth_data *data, -  /** Only 8-bit stencil supported */  #define STENCIL_MAX 0xff @@ -408,12 +416,11 @@ apply_stencil_op(struct depth_data *data, -/* +/**   * To increase efficiency, we should probably have multiple versions   * of this function that are specifically for Z16, Z32 and FP Z buffers.   * Try to effectively do that with codegen...   */ -  static boolean  depth_test_quad(struct quad_stage *qs,                   struct depth_data *data, @@ -523,7 +530,6 @@ depth_stencil_test_quad(struct quad_stage *qs,     wrtMask = softpipe->depth_stencil->stencil[face].writemask;     valMask = softpipe->depth_stencil->stencil[face].valuemask; -     /* do the stencil test first */     {        unsigned passMask, failMask; @@ -563,7 +569,7 @@ depth_stencil_test_quad(struct quad_stage *qs,  #define ALPHATEST( FUNC, COMP )                                         \ -   static int                                                          \ +   static int                                                           \     alpha_test_quads_##FUNC( struct quad_stage *qs,                      \                             struct quad_header *quads[],                 \                             unsigned nr )                                \ @@ -629,6 +635,7 @@ alpha_test_quads(struct quad_stage *qs,     }  } +  static unsigned mask_count[16] =   {     0,                           /* 0x0 */ @@ -665,6 +672,9 @@ get_depth_bits(struct quad_stage *qs) +/** + * General depth/stencil test function.  Used when there's no fast-path. + */  static void  depth_test_quads_fallback(struct quad_stage *qs,                             struct quad_header *quads[], @@ -712,7 +722,6 @@ depth_test_quads_fallback(struct quad_stage *qs,                 write_depth_stencil_values(&data, quads[i]);           } -           quads[pass++] = quads[i];        } @@ -848,22 +857,23 @@ choose_depth_test(struct quad_stage *qs, - - -static void depth_test_begin(struct quad_stage *qs) +static void +depth_test_begin(struct quad_stage *qs)  {     qs->run = choose_depth_test;     qs->next->begin(qs->next);  } -static void depth_test_destroy(struct quad_stage *qs) +static void +depth_test_destroy(struct quad_stage *qs)  {     FREE( qs );  } -struct quad_stage *sp_quad_depth_test_stage( struct softpipe_context *softpipe ) +struct quad_stage * +sp_quad_depth_test_stage(struct softpipe_context *softpipe)  {     struct quad_stage *stage = CALLOC_STRUCT(quad_stage); | 
