mirror of
https://github.com/X11Libre/xf86-video-ati.git
synced 2026-03-24 01:24:43 +00:00
Bugzilla #849: Fix DRI pagesize assumptions in radeon and r128 drivers.
from mharris@, reviewed and applied to DRI by airlied@.
This commit is contained in:
@@ -56,15 +56,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
|
||||
#elif defined(__ia64__)
|
||||
# define DRM_PAGE_SIZE getpagesize()
|
||||
#else
|
||||
# define DRM_PAGE_SIZE 4096
|
||||
#endif
|
||||
static size_t r128_drm_page_size;
|
||||
|
||||
static void R128DRITransitionTo2d(ScreenPtr pScreen);
|
||||
static void R128DRITransitionTo3d(ScreenPtr pScreen);
|
||||
@@ -502,11 +494,11 @@ static Bool R128DRIAgpInit(R128InfoPtr info, ScreenPtr pScreen)
|
||||
|
||||
/* 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;
|
||||
@@ -655,11 +647,11 @@ static Bool R128DRIPciInit(R128InfoPtr info, ScreenPtr pScreen)
|
||||
|
||||
/* 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;
|
||||
@@ -1016,6 +1008,8 @@ Bool R128DRIScreenInit(ScreenPtr pScreen)
|
||||
break;
|
||||
}
|
||||
|
||||
r128_drm_page_size = getpagesize();
|
||||
|
||||
/* Create the DRI data structure, and fill it in before calling the
|
||||
DRIScreenInit(). */
|
||||
if (!(pDRIInfo = DRICreateInfoRec())) return FALSE;
|
||||
|
||||
@@ -56,15 +56,7 @@
|
||||
#include "sarea.h"
|
||||
#include "radeon_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
|
||||
#elif defined(__ia64__)
|
||||
# define DRM_PAGE_SIZE getpagesize()
|
||||
#else
|
||||
# define DRM_PAGE_SIZE 4096
|
||||
#endif
|
||||
static size_t radeon_drm_page_size;
|
||||
|
||||
|
||||
static Bool RADEONDRICloseFullScreen(ScreenPtr pScreen);
|
||||
@@ -701,11 +693,11 @@ static void RADEONDRIInitGARTValues(RADEONInfoPtr info)
|
||||
|
||||
/* Initialize the CP ring buffer data */
|
||||
info->ringStart = info->gartOffset;
|
||||
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;
|
||||
@@ -1234,6 +1226,8 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen)
|
||||
break;
|
||||
}
|
||||
|
||||
radeon_drm_page_size = getpagesize();
|
||||
|
||||
/* Create the DRI data structure, and fill it in before calling the
|
||||
* DRIScreenInit().
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user