[Mesa-dev] [PATCH] i965: Fix border color on Sandybridge and Ivybridge.

Liu Aleaxander aleaxander at gmail.com
Fri Jan 20 09:35:19 PST 2012


Thanks for the patch.

Reviewed-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
On Jan 20, 2012 9:40 PM, "Kenneth Graunke" <kenneth at whitecape.org> wrote:

> While reading through the simulator, I found some interesting code that
> looks like it checks the sampler default color pointer against the bound
> set in STATE_BASE_ADDRESS.  On failure, it appears to program it to the
> base address itself.
>
> So I decided to try programming a legitimate bound, and lo and behold,
> border color worked.  Unfortunately, it's not entirely reliable: piglit
> tests (such as tex-border-1) will still fail if you run them in a loop.
>
> +92 piglits on Sandybridge.  Also fixes Lightsmark on Ivybridge.
>
> NOTE: This is a candidate for stable release branches.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28924
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38868
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_misc_state.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
>
> v2: OUT_RELOC is your friend.  Thanks to ickle for pointing out my silly
>    mistake.  Now regression free and fixing lots of tests.  And demos!
>
> diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c
> b/src/mesa/drivers/dri/i965/brw_misc_state.c
> index 8e59a47..1a7d328 100644
> --- a/src/mesa/drivers/dri/i965/brw_misc_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c
> @@ -769,7 +769,13 @@ static void upload_state_base_address( struct
> brw_context *brw )
>                 1); /* Instruction base address: shader kernels (incl.
> SIP) */
>
>        OUT_BATCH(1); /* General state upper bound */
> -       OUT_BATCH(1); /* Dynamic state upper bound */
> +       /* Dynamic state upper bound.  Although the documentation says that
> +       * programming it to zero will cause it to be ignored, that is a
> lie.
> +       * If this isn't programmed to a real bound, the sampler border
> color
> +       * pointer is rejected, causing border color to mysteriously fail.
> +       */
> +       OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
> +                intel->batch.bo->size | 1);
>        OUT_BATCH(1); /* Indirect object upper bound */
>        OUT_BATCH(1); /* Instruction access upper bound */
>        ADVANCE_BATCH();
> --
> 1.7.7.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120121/c771097e/attachment.htm>


More information about the mesa-dev mailing list