--- Begin Message ---
- Subject: [Linux-ia64] agpgart/drm Update
- From: christopher.j.ahna@intel.com (Chris Ahna)
- Date: 14 Aug 2001 23:38:23 -0600
- Message-id: <20010814220840.A4307@intel.com>
I was able to cook up some patches to get agpgart/drm/dri working within
the framework introduced with the release of 2.4.8. These patches use
the drm + drm-4.0 idea that Kieth mentioned on this list. I sent these
patches along to David offlist since they're rather large.
Anyway, I thought I'd give a general update on what's known to work.
I've tested the following combinations:
Video Card DRM XFree86
---------- --- -------
ATI Radeon New 4.1.0+
ATI Rage128 New 4.1.0+
ATI Rage128 Old 4.0.2+
Matrox G450 New 4.1.0+
Matrox G400 should work with the old DRM and XFree86 4.0.2+ and the ATI
Radeon should work with the old DRM and XFree86 4.0.3+, however I didn't
get a chance to test these combos.
The + after XFree86 version denotes the fact that small patches need to
be applied to X itself for the whole package to work. These are needed
to combat 'a page is 4KB' assumptions. A patch for older XFree86
sources (actually against a 010321 snapshot) can be found at
https://external-lists.valinux.com/archives/linux-ia64/2001-March/001326.html
A patch against the current DRI CVS, which should apply pretty well to any
recent copy of XFree86, is appended.
If anyone's real anxious to run 4.1.0 style drm on ia64, let me know and
I'll send along the patches directly. Once the patches get integrated into
David's tree, I'd love to hear bug reports or success stories from
anyone who tries it out. It works here, but that's just not completely
satisfying :-)
Chris
--- xc.old/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c Thu Jun 14 15:23:41 2001
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c Tue Aug 14 19:06:03 2001
@@ -58,13 +58,7 @@
# undef PCIGART_ENABLED
#endif
-/* ?? HACK - for now, put this here... */
-/* ?? Alpha - this may need to be a variable to handle UP1x00 vs TITAN */
-#if defined(__alpha__)
-# define DRM_PAGE_SIZE 8192
-#else
-# define DRM_PAGE_SIZE 4096
-#endif
+static size_t radeon_drm_page_size;
/* Initialize the visual configs that are supported by the hardware.
These are combined with the visual configs that the indirect
@@ -769,11 +763,11 @@
/* Initialize the CP ring buffer data */
info->ringStart = info->agpOffset;
- info->ringMapSize = info->ringSize*1024*1024 + DRM_PAGE_SIZE;
+ info->ringMapSize = info->ringSize*1024*1024 + radeon_drm_page_size;
info->ringSizeLog2QW = RADEONMinBits(info->ringSize*1024*1024/8)-1;
info->ringReadOffset = info->ringStart + info->ringMapSize;
- info->ringReadMapSize = DRM_PAGE_SIZE;
+ info->ringReadMapSize = radeon_drm_page_size;
/* Reserve space for vertex/indirect buffers */
info->bufStart = info->ringReadOffset + info->ringReadMapSize;
@@ -898,11 +892,11 @@
/* Initialize the CCE ring buffer data */
info->ringStart = info->agpOffset;
- info->ringMapSize = info->ringSize*1024*1024 + DRM_PAGE_SIZE;
+ info->ringMapSize = info->ringSize*1024*1024 + radeon_drm_page_size;
info->ringSizeLog2QW = RADEONMinBits(info->ringSize*1024*1024/8)-1;
info->ringReadOffset = info->ringStart + info->ringMapSize;
- info->ringReadMapSize = DRM_PAGE_SIZE;
+ info->ringReadMapSize = radeon_drm_page_size;
/* Reserve space for vertex/indirect buffers */
info->bufStart = info->ringReadOffset + info->ringReadMapSize;
@@ -1331,6 +1325,8 @@
case 32:
break;
}
+
+ radeon_drm_page_size = getpagesize();
/* Create the DRI data structure, and fill it in before calling the
DRIScreenInit(). */
--- xc.old/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c Tue Aug 7 11:15:08 2001
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c Tue Aug 14 19:02:35 2001
@@ -54,13 +54,7 @@
#include "GL/glxtokens.h"
#include "sarea.h"
-/* ?? HACK - for now, put this here... */
-/* ?? Alpha - this may need to be a variable to handle UP1x00 vs TITAN */
-#if defined(__alpha__)
-# define DRM_PAGE_SIZE 8192
-#else
-# define DRM_PAGE_SIZE 4096
-#endif
+static size_t r128_drm_page_size;
/* Initialize the visual configs that are supported by the hardware.
These are combined with the visual configs that the indirect
@@ -468,11 +462,11 @@
/* Initialize the CCE ring buffer data */
info->ringStart = info->agpOffset;
- info->ringMapSize = info->ringSize*1024*1024 + DRM_PAGE_SIZE;
+ info->ringMapSize = info->ringSize*1024*1024 + r128_drm_page_size;
info->ringSizeLog2QW = R128MinBits(info->ringSize*1024*1024/8) - 1;
info->ringReadOffset = info->ringStart + info->ringMapSize;
- info->ringReadMapSize = DRM_PAGE_SIZE;
+ info->ringReadMapSize = r128_drm_page_size;
/* Reserve space for vertex/indirect buffers */
info->bufStart = info->ringReadOffset + info->ringReadMapSize;
@@ -622,11 +616,11 @@
/* Initialize the CCE ring buffer data */
info->ringStart = info->agpOffset;
- info->ringMapSize = info->ringSize*1024*1024 + DRM_PAGE_SIZE;
+ info->ringMapSize = info->ringSize*1024*1024 + r128_drm_page_size;
info->ringSizeLog2QW = R128MinBits(info->ringSize*1024*1024/8) - 1;
info->ringReadOffset = info->ringStart + info->ringMapSize;
- info->ringReadMapSize = DRM_PAGE_SIZE;
+ info->ringReadMapSize = r128_drm_page_size;
/* Reserve space for vertex/indirect buffers */
info->bufStart = info->ringReadOffset + info->ringReadMapSize;
@@ -907,6 +901,8 @@
case 32:
break;
}
+
+ r128_drm_page_size = getpagesize();
/* Create the DRI data structure, and fill it in before calling the
DRIScreenInit(). */
_______________________________________________
Linux-IA64 mailing list
Linux-IA64@linuxia64.org
http://lists.linuxia64.org/lists/listinfo/linux-ia64
--- End Message ---