xf86-video-intel: src/i810_reg.h src/i830_driver.c
Alan Hourihane
alanh at fairlite.demon.co.uk
Thu May 29 01:44:07 PDT 2008
On Wed, 2008-05-28 at 15:49 -0700, Jesse Barnes wrote:
> src/i810_reg.h | 2 ++
> src/i830_driver.c | 11 ++++++++++-
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> New commits:
> commit bd137a19dc29dd466eac030e040f729ed0807e3f
> Author: Jesse Barnes <jbarnes at hobbes.lan>
> Date: Wed May 28 15:47:47 2008 -0700
>
> Fixup DSPARB for 855 & 945
>
> It turns out 855 has a different DSPARB layout than 915+. And 945+ have more
> FIFO entries, so we have to allocate things differently. So on 855 split the
> FIFO evenly again between A & B planes, and do the same on 945, where we have a
> larger FIFO. Fixes an issue reported by Daniel Stone with the previous default
> value.
>
> diff --git a/src/i810_reg.h b/src/i810_reg.h
> index d97780f..9da258a 100644
> --- a/src/i810_reg.h
> +++ b/src/i810_reg.h
> @@ -2105,6 +2105,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> #define DSPARB 0x70030
> #define DSPARB_CSTART_SHIFT 7
> #define DSPARB_BSTART_SHIFT 0
> +#define DSPARB_BEND_SHIFT 9 /* on 855 */
> +#define DSPARB_AEND_SHIFT 0
> #define DSPFW1 0x70034
> #define DSPFW2 0x70038
> #define DSPFW3 0x7003c
> diff --git a/src/i830_driver.c b/src/i830_driver.c
> index 1b07064..1041fe3 100644
> --- a/src/i830_driver.c
> +++ b/src/i830_driver.c
> @@ -1963,7 +1963,16 @@ SetHWOperatingState(ScrnInfoPtr pScrn)
> * we don't use plane C at all so we can allocate all but one of the 96
> * FIFO RAM entries equally between planes A and B.
> */
> - OUTREG(DSPARB, (95 << DSPARB_CSTART_SHIFT) | (48 << DSPARB_BSTART_SHIFT));
> + if (IS_I9XX(pI830)) {
> + if (IS_I915GM(pI830) || IS_I915G(pI830))
> + OUTREG(DSPARB, (95 << DSPARB_CSTART_SHIFT) |
> + (48 << DSPARB_BSTART_SHIFT));
> + else
> + OUTREG(DSPARB, (127 << DSPARB_CSTART_SHIFT) |
> + (64 << DSPARB_BSTART_SHIFT));
> + } else {
> + OUTREG(DSPARB, 254 << DSPARB_BEND_SHIFT | 128 << DSPARB_AEND_SHIFT);
> + }
> }
Jesse,
>From what I understand of the DSPARB register, these values shouldn't be
hardcoded values but based on the HDISPLAY value that's configured for
each pipe to ensure correct FIFO splits.
Just a heads up.
Alan.
More information about the xorg
mailing list