From: Ville S. <sy...@sc...> - 2009-06-20 21:25:34
|
On Wed, Jun 17, 2009 at 05:05:31PM -0400, Mikulas Patocka wrote: > On Wed, 17 Jun 2009, Ville Syrjälä wrote: > > > I was under the impression that 64 byte aligned offset and pitch are only > > required if block writes are used. But perhaps it is always required > > with SGRAM/WRAM, or perhaps you have auto block writes enabled. Can you > > check the memory type and the the value of the HW_DEBUG register? > > Memory is SGRAM M32L1632512A-8Q. See this: > http://www.digchip.com/datasheets/parts/datasheet/581/M32L1632512A.php > > The status line is: > atyfb: 3D RAGE PRO (Mach64 GP, PQFP, PCI) [0x4750 rev 0x7c] > atyfb: 4M SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 100 Mhz MCLK, 100 > MHz XCLK > > The debug register is zero (printed with printk("ATI INIT ENGINE, DEBUG > %08X", aty_ld_le32(HW_DEBUG, par)); at the end of aty_init_engine). OK then it has auto block writes enabled. > > > This patch disables accelerator if scanline is not multiple of 64 bytes. > > > > A better option would be to round the pitch up in check_var(). Also it > > would be more proper to use fix.line_length as the pitch value instead > > of var.xres_virtual. That way check_var() could leave var.xres_virtual > > alone and just round fix.line_length to whatever is required. > > > > Actually now that I think about it I would prefer to round to 64 bytes > > always when SGRAM/WRAM is found. The reason is that the mach64 DirectFB > > driver always enables auto block writes on SGRAM boards and if atyfb > > uses less alignment things will not work correctly. Perhaps atyfb should > > enable auto block writes too. > > So patch it to align line length (I don't know fb well to pick the right > place) and send me the patch and I'll test it. I cooked up a patch and briefly tested it on my Dell Inspiron 7000 which has an LT Pro /w SGRAM. I will send it as part of a series now. -- Ville Syrjälä sy...@sc... http://www.sci.fi/~syrjala/ |