[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