[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