Looking for API to possibly implement "mastered image transfer" for xf86-video-savage
Alex Deucher
alexdeucher at gmail.com
Tue Nov 11 06:25:25 PST 2008
On Mon, Nov 10, 2008 at 1:37 PM, Alex Villacís Lasso
<a_villacis at palosanto.com> wrote:
> In the reference documents for the savage video card, there is an
> operation called a "mastered image transfer", which looks like an
> accelerated pixmap upload into the framebuffer. This operation
> references registers with bit flags to select between "framebuffer
> memory" and "system memory". However, there are restrictions on the kind
> of "system memory" that is suitable for the transfer. The chipset can
> only use either:
>
> 1) PCI memory ("physically contiguous and page-locked")
> 2) AGP memory
>
> I understand "PCI memory" to mean the garden-variety userspace memory,
> which is paginated, and might be swapped out to disk (therefore the
> restrictions).
>
> The question is: is there any xserver support that might enable a driver
> to get pixmap data into either kind of situation? Either get the pixmap
> into physically contiguous pages and obtain the physical address of the
> start of data, or pre-copy the pixmap data into AGP memory (allocated by
> the driver on startup, if necessary) so that the driver does not need to
> copy it into AGP memory every single time. If either one exists, this
> might be useful to get a better implementation of EXAUploadToScreen, as
> well as a faster XVideo (which can also use system memory, according to
> the docs).
As Michel mentioned, this need drm support since since you'll need to
know physical addresses tom implement this. Some of this may already
be implemented for vertex or texture uploads in the savage drm and
mesa driver, but I don't recall off hand. If so you could probably do
something similar for EXA/Xv.
For UploadToScreen() the savage driver already implements this using a
hostdata blit. I'm not sure how much advantage you'll gain by using
the DMA engine, but no one has benchmarked it so perhaps there is an
advantage. For DownloadFromScreen(), it may be more useful.
Alex
More information about the xorg
mailing list