r6xx-r7xx drm patch and stuff
Robert C. Noland III
rnoland at 2hip.net
Sun Feb 22 22:46:11 PST 2009
On Sun, 2009-02-22 at 17:18 -0800, vehemens wrote:
> Have drm running with my R630, but there is some type of performance problem
> (i.e. slow windows).
>
> Given that I don't have the time to work the issue right now, here is my
> summary for those that want to give it a try.
>
> If you start with drm git master 1) incorporate the local freebsd updates, 2)
> incorporate the radeon updates from drm git r6xx-r7xx-support, and 3) add the
> attached patch, you will have what I have.
>
> For the video drivers, I have only tried the xf86-video-ati r6xx-r7xx-support
> branch and not the xf86-video-radeonhd r6xx-r7xx-support branch.
>
> There was a comment on radeonhd irc about backing out drm git
> r6xx-r7xx-support commit for "R6xx/R7xx: pad VB age submission to 8 dwords",
> for the performance problem but that didn't help me with xf86-video-ati.
Ok, this is more or less correct... I'll pull together a patch for
-CURRENT and -STABLE either later tonight or tomorrow... BTW, this
patch does not include the changes to the build system needed to compile
the r600 code.
robert.
> --- r600_cp.c.orig 2009-02-19 23:07:23.000000000 -0800
> +++ r600_cp.c 2009-02-21 23:57:49.000000000 -0800
> @@ -429,13 +429,15 @@
>
> static void r600_page_table_cleanup(struct drm_device *dev, struct
> drm_ati_pcigart_info *gart_info)
> {
> +#ifdef __linux__
> struct drm_sg_mem *entry = dev->sg;
> int max_pages;
> int pages;
> int i;
> +#endif
>
> if (gart_info->bus_addr) {
> -
> +#ifdef __linux__
> max_pages = (gart_info->table_size / sizeof(u32));
> pages = (entry->pages <= max_pages)
> ? entry->pages : max_pages;
> @@ -446,7 +448,7 @@
> pci_unmap_single(dev->pdev, entry->busaddr[i],
> PAGE_SIZE, PCI_DMA_TODEVICE);
> }
> -
> +#endif
> if (gart_info->gart_table_location == DRM_ATI_GART_MAIN)
> gart_info->bus_addr = 0;
> }
> @@ -475,6 +477,7 @@
> memset(pci_gart, 0, max_pages * sizeof(u64));
>
> for (i = 0; i < pages; i++) {
> +#ifdef __linux__
> entry->busaddr[i] = pci_map_single(dev->pdev,
> page_address(entry->
> pagelist[i]),
> @@ -485,7 +488,7 @@
> ret = -EINVAL;
> goto done;
> }
> -
> +#endif
> entry_addr = entry->busaddr[i];
> for (j = 0; j < (PAGE_SIZE / ATI_PCIGART_PAGE_SIZE); j++) {
> page_base = (u64) entry_addr & ATI_PCIGART_PAGE_MASK;
> @@ -495,13 +498,15 @@
> *pci_gart = page_base;
>
> if ((i % 128) == 0)
> - DRM_DEBUG("page entry %d: 0x%016llx\n", i, page_base);
> + DRM_DEBUG("page entry %d: 0x%016lx\n", i, page_base);
> pci_gart++;
> entry_addr += ATI_PCIGART_PAGE_SIZE;
> }
> }
>
> +#ifdef __linux__
> done:
> +#endif
> return ret;
> }
>
>
>
> _______________________________________________
> freebsd-x11 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-x11
> To unsubscribe, send any mail to "freebsd-x11-unsubscribe at freebsd.org"
--
Robert C. Noland III <rnoland at 2hip.net>
2 Hip Networks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-x11/attachments/20090223/93387bea/attachment.pgp
More information about the freebsd-x11
mailing list