[Mesa-dev] [PATCH 1/4] mesa: Add UsesDFdy to struct gl_fragment_program.

Brian Paul brianp at vmware.com
Wed Jul 18 14:16:25 PDT 2012


On 07/18/2012 01:16 PM, Paul Berry wrote:
> The i965 back-end needs to compile dFdy() differently for FBOs and
> window system framebuffers, because Y coordinates are flipped between
> the two (see commit 82d2596: i965: Compute dFdy() correctly for FBOs).
> This boolean will allow it to avoid unnecessarily recompiling shaders
> that don't use dFdy().
> ---
>   src/mesa/main/mtypes.h     |    1 +
>   src/mesa/program/program.c |    2 ++
>   2 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 1f74e6a..4769e10 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -2011,6 +2011,7 @@ struct gl_fragment_program
>   {
>      struct gl_program Base;   /**<  base class */
>      GLboolean UsesKill;          /**<  shader uses KIL instruction */
> +   GLboolean UsesDFdy;          /**<  shader uses DDY instruction */
>      GLboolean OriginUpperLeft;
>      GLboolean PixelCenterInteger;
>      enum gl_frag_depth_layout FragDepthLayout;
> diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
> index 582cbcc..3ad8377 100644
> --- a/src/mesa/program/program.c
> +++ b/src/mesa/program/program.c
> @@ -551,6 +551,7 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
>               = (const struct gl_fragment_program *) prog;
>            struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone;
>            fpc->UsesKill = fp->UsesKill;
> +         fpc->UsesDFdy = fp->UsesDFdy;
>            fpc->OriginUpperLeft = fp->OriginUpperLeft;
>            fpc->PixelCenterInteger = fp->PixelCenterInteger;
>         }
> @@ -772,6 +773,7 @@ _mesa_combine_programs(struct gl_context *ctx,
>         newFprog = (struct gl_fragment_program *) newProg;
>
>         newFprog->UsesKill = fprogA->UsesKill || fprogB->UsesKill;
> +      newFprog->UsesDFdy = fprogA->UsesDFdy || fprogB->UsesDFdy;
>
>         /* We'll do a search and replace for instances
>          * of progB_colorFile/progB_colorIndex below...

Reviewed-by: Brian Paul <brianp at vmware.com>


More information about the mesa-dev mailing list