[Mesa-dev] [PATCH] st/mesa: only flip stipple pattern for winsys fbo's
Marek Olšák
maraeo at gmail.com
Wed Oct 12 20:37:29 UTC 2016
On Wed, Oct 12, 2016 at 8:52 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Wed, Oct 12, 2016 at 2:46 PM, Brian Paul <brianp at vmware.com> wrote:
>> 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>
>
> Thanks. Somehow in my testing I thought llvmpipe was previously
> working as well. But that's not the case - it failed same as nouveau,
> and this does indeed fix llvmpipe.
>
> Nicolai/Marek - I sorta assume this will break radeonsi. Do you guys
> want to sort that out before I push?
No, the test is failing on radeonsi too.
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
More information about the mesa-dev
mailing list