[Mesa-dev] [PATCH] i965: disable blorp's linear filtering on SNB
Ian Romanick
idr at freedesktop.org
Mon Mar 31 13:40:06 PDT 2014
On 03/28/2014 01:04 PM, Anuj Phogat wrote:
> On Thu, Mar 27, 2014 at 1:29 AM, Samuel Iglesias Gonsalvez
> <siglesias at igalia.com> wrote:
>> Commit 079bdba05f870807d3ed77fa3093cdb7727aa2fd enabled the use of BLORP
>> engine for single sample scaled blit with bilinear filter.
>>
>> However piglit fails when running fbo-blit-stretch test on SandyBridge.
>> This patch makes the code to fallback to other blit paths for SandyBridge.
> My thoughts:
>
> - Yes, fbo-blit-stretch test passes on SNB with fallback blit paths. But similar
> piglit tests fbo-blit-scaled-linear and fbo-attachments-blit-scaled-linear
> continues to fail with small color differences with meta fallback. So, the
> fallback helped one out of three linear scaled blit tests.
> Note: Use git-89ccd11 to run other two tests. A later patch causes the tests
> to assert fail on SNB.
Other work is progressing towards removing blorp completely. If there
are cases that fail with the meta paths, those should get fixed. I
think I'd want the meta paths fixed first, then disable the blorp path.
> - The meta fallback will possibly have some performance penalty and It will just
> hide the linear filtering bug in blorp engine.
Theoretically, I think that's true. I don't know how true it is in
practice. I think there are a couple cases in Synmark that test this,
and Kerbal Space Program also uses a lot of scaled blits. We should
check before and after performance of those.
> - Current output from blorp on SNB is little off from expected but still looks
> visually correct. I would prefer a patch which fixes the issue in blorp.
>
> Let's wait for more opinions on this.
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68365
>>
>> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
>> ---
>> src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
>> index 9e80935..a0a9a7b 100644
>> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
>> @@ -251,6 +251,15 @@ try_blorp_blit(struct brw_context *brw,
>> fixup_mirroring(mirror_y, srcY0, srcY1);
>> fixup_mirroring(mirror_y, dstY0, dstY1);
>>
>> + /* Linear filtering using blorp engine is failing on Sandybridge. So, fallback
>> + * to other blit paths.
>> + * See https://bugs.freedesktop.org/show_bug.cgi?id=68365
>> + */
>> + if ((brw->gen == 6) && (srcX1 - srcX0 != dstX1 - dstX0 ||
>> + srcY1 - srcY0 != dstY1 - dstY0) &&
>> + filter == GL_LINEAR)
>> + return false;
>> +
>> /* If the destination rectangle needs to be clipped or scissored, do so.
>> */
>> if (!(clip_or_scissor(mirror_x, srcX0, srcX1, dstX0, dstX1,
>> --
>> 1.9.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list