[Mesa-dev] [PATCH] st/mesa: only flip stipple pattern for winsys fbo's

Brian Paul brianp at vmware.com
Wed Oct 12 18:46:27 UTC 2016


On 10/12/2016 12:06 PM, Ilia Mirkin wrote:
> Gallium is completely oblivious to whether the fbo is flipped or not.
> Only flip the stipple pattern when the fbo is flipped as well. Otherwise
> the driver has no idea when to unflip the pattern.
>
> Fixes bin/gl-2.1-polygon-stipple-fs -fbo on nv50 and nvc0.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>
> This keeps working on llvmpipe. I assume this is because the emulation
> uses fragcoord to determine the effect, which will be fixed up by the
> state tracker's wpos logic.
>
>   src/mesa/state_tracker/st_atom_stipple.c | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_atom_stipple.c b/src/mesa/state_tracker/st_atom_stipple.c
> index a30215f..5f7bf82 100644
> --- a/src/mesa/state_tracker/st_atom_stipple.c
> +++ b/src/mesa/state_tracker/st_atom_stipple.c
> @@ -61,7 +61,7 @@ invert_stipple(GLuint dest[32], const GLuint src[32], GLuint winHeight)
>
>
>
> -static void
> +static void
>   update_stipple( struct st_context *st )
>   {
>      const struct gl_context *ctx = st->ctx;
> @@ -74,8 +74,12 @@ update_stipple( struct st_context *st )
>
>         memcpy(st->state.poly_stipple, ctx->PolygonStipple, sz);
>
> -      invert_stipple(newStipple.stipple, ctx->PolygonStipple,
> -                     ctx->DrawBuffer->Height);
> +      if (_mesa_is_user_fbo(ctx->DrawBuffer)) {
> +         memcpy(newStipple.stipple, ctx->PolygonStipple, sizeof(newStipple.stipple));
> +      } else {
> +         invert_stipple(newStipple.stipple, ctx->PolygonStipple,
> +                        ctx->DrawBuffer->Height);
> +      }
>
>         st->pipe->set_polygon_stipple(st->pipe, &newStipple);
>      }
>

Fixes the test on llvmpipe too.

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



More information about the mesa-dev mailing list