[Mesa-dev] [PATCH 2/2] softpipe: honor predication for clear_render_target and clear_depth_stencil

Jose Fonseca jfonseca at vmware.com
Wed Jun 26 06:56:14 PDT 2013


Looks good to me.

Jose

----- Original Message -----
> From: Roland Scheidegger <sroland at vmware.com>
> 
> trivial, copied from llvmpipe
> ---
>  src/gallium/drivers/softpipe/sp_surface.c |   42
>  +++++++++++++++++++++++++++--
>  1 file changed, 40 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/softpipe/sp_surface.c
> b/src/gallium/drivers/softpipe/sp_surface.c
> index 52c85be..9e1523f 100644
> --- a/src/gallium/drivers/softpipe/sp_surface.c
> +++ b/src/gallium/drivers/softpipe/sp_surface.c
> @@ -29,6 +29,7 @@
>  #include "util/u_surface.h"
>  #include "sp_context.h"
>  #include "sp_surface.h"
> +#include "sp_query.h"
>  
>  static void sp_blit(struct pipe_context *pipe,
>                      const struct pipe_blit_info *info)
> @@ -82,11 +83,48 @@ static void sp_blit(struct pipe_context *pipe,
>     util_blitter_blit(sp->blitter, info);
>  }
>  
> +static void
> +softpipe_clear_render_target(struct pipe_context *pipe,
> +                             struct pipe_surface *dst,
> +                             const union pipe_color_union *color,
> +                             unsigned dstx, unsigned dsty,
> +                             unsigned width, unsigned height)
> +{
> +   struct softpipe_context *softpipe = softpipe_context(pipe);
> +
> +   if (!softpipe_check_render_cond(softpipe))
> +      return;
> +
> +   util_clear_render_target(pipe, dst, color,
> +                            dstx, dsty, width, height);
> +}
> +
> +
> +static void
> +softpipe_clear_depth_stencil(struct pipe_context *pipe,
> +                             struct pipe_surface *dst,
> +                             unsigned clear_flags,
> +                             double depth,
> +                             unsigned stencil,
> +                             unsigned dstx, unsigned dsty,
> +                             unsigned width, unsigned height)
> +{
> +   struct softpipe_context *softpipe = softpipe_context(pipe);
> +
> +   if (!softpipe_check_render_cond(softpipe))
> +      return;
> +
> +   util_clear_depth_stencil(pipe, dst, clear_flags,
> +                            depth, stencil,
> +                            dstx, dsty, width, height);
> +}
> +
> +
>  void
>  sp_init_surface_functions(struct softpipe_context *sp)
>  {
>     sp->pipe.resource_copy_region = util_resource_copy_region;
> -   sp->pipe.clear_render_target = util_clear_render_target;
> -   sp->pipe.clear_depth_stencil = util_clear_depth_stencil;
> +   sp->pipe.clear_render_target = softpipe_clear_render_target;
> +   sp->pipe.clear_depth_stencil = softpipe_clear_depth_stencil;
>     sp->pipe.blit = sp_blit;
>  }
> --
> 1.7.9.5
> 


More information about the mesa-dev mailing list