Hi Alexandre,
Alexandre Ratchov wrote:
Acceleration is not needed on "modern" machines to get fast 2D
display. The CPU speed and memory bandwidth are largely sufficient
to make desktop very responsive and watch full-screen movies.
Probably what you observe is that the video memory is setup in a
very restricted mode, making it extreamly slow.
For instance on my system, I measured 70MB/s with BIOS settings
(i.e. memory was slower than a hard disk, ridiculous), and 7500MB/s
when properly initialized. This is for intel chipset, but I
remember similar stories about nvidia chips.
well, yes, I expect any 64bit machine to get above the 4GB/s barrier,
but 70MB/s are values I used to see with 25Mhz 68K CPUs
If you manage to get the address of the video frame buffer, you
could try to use the memconfig(8) utility to see if write-combining
is enabled for the frame buffer, and possibly enable it. This might
make things less worse. I'm not sure if setting mtrrs with
memconfig is still enough nowadays, maybe someone would have a
better insight.
shouldn't the driver take care of something like that?
"if you manage to get the address"... how do I do that? Perhaps in the X
log?
I see this:
[ 359.722] (II) NV(0): Creating default Display subsection in Screen
section
"Default Screen Section" for depth/fbbpp 24/32
[ 359.722] (==) NV(0): Depth 24, (--) framebuffer bpp 32
[ 359.722] (==) NV(0): RGB weight 888
[ 359.722] (==) NV(0): Default visual is TrueColor
[ 359.722] (**) NV(0): Option "AccelMethod" "EXA"
[ 359.722] (==) NV(0): Using hardware cursor
[ 359.722] (==) NV(0): Using gamma correction (1.0, 1.0, 1.0)
[ 359.722] (II) NV(0): MMIO registers mapped at 0x6f917826000
[ 359.722] (--) NV(0): Total video RAM: 128.0 MB
[ 359.722] (--) NV(0): BAR1 size: 256.0 MB
[ 359.722] (--) NV(0): Mapped memory: 127.0 MB
[ 359.723] (II) NV(0): Linear framebuffer mapped at 0x6f9760e1000
Could the framebuffer be the start of the memory I need?
I thought something like:
$ sudo memconfig set -b 0x6f9760e1000 -l 0x7f00000 write-combine
(127MB*1024*1024 = 3121152 = 0x7F00000 as length)
memconfig: can't set range: Invalid argument
The man page says it needs a power of 2, it already is, but I tried
128MB, thus 0x8000000, as a length, but it I still get an invalid range.
where am I erring? memconfig usage or base address?
Riccardo