mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
If the DDX driver didn't reserve any video RAM for textures, fall back to
using only GART memory for textures instead of segfaulting in the texture management code. (Bug 5115)
This commit is contained in:
parent
58f45fa44d
commit
9790e641ef
2 changed files with 25 additions and 10 deletions
|
|
@ -198,11 +198,19 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
|
|||
r128Screen->depthPitch = r128DRIPriv->depthPitch;
|
||||
r128Screen->spanOffset = r128DRIPriv->spanOffset;
|
||||
|
||||
r128Screen->texOffset[R128_LOCAL_TEX_HEAP] = r128DRIPriv->textureOffset;
|
||||
r128Screen->texSize[R128_LOCAL_TEX_HEAP] = r128DRIPriv->textureSize;
|
||||
r128Screen->logTexGranularity[R128_LOCAL_TEX_HEAP] = r128DRIPriv->log2TexGran;
|
||||
if ( r128DRIPriv->textureSize == 0 ) {
|
||||
r128Screen->texOffset[R128_LOCAL_TEX_HEAP] =
|
||||
r128DRIPriv->agpTexOffset + R128_AGP_TEX_OFFSET;
|
||||
r128Screen->texSize[R128_LOCAL_TEX_HEAP] = r128DRIPriv->agpTexMapSize;
|
||||
r128Screen->logTexGranularity[R128_LOCAL_TEX_HEAP] =
|
||||
r128DRIPriv->log2AGPTexGran;
|
||||
} else {
|
||||
r128Screen->texOffset[R128_LOCAL_TEX_HEAP] = r128DRIPriv->textureOffset;
|
||||
r128Screen->texSize[R128_LOCAL_TEX_HEAP] = r128DRIPriv->textureSize;
|
||||
r128Screen->logTexGranularity[R128_LOCAL_TEX_HEAP] = r128DRIPriv->log2TexGran;
|
||||
}
|
||||
|
||||
if ( r128Screen->IsPCI ) {
|
||||
if ( !r128Screen->agpTextures.map || r128DRIPriv->textureSize == 0 ) {
|
||||
r128Screen->numTexHeaps = R128_NR_TEX_HEAPS - 1;
|
||||
r128Screen->texOffset[R128_AGP_TEX_HEAP] = 0;
|
||||
r128Screen->texSize[R128_AGP_TEX_HEAP] = 0;
|
||||
|
|
|
|||
|
|
@ -617,13 +617,20 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||
screen->depthHasSurface = ((sPriv->ddxMajor > 4) &&
|
||||
(screen->chip_flags & RADEON_CHIPSET_TCL));
|
||||
|
||||
screen->texOffset[RADEON_LOCAL_TEX_HEAP] = dri_priv->textureOffset
|
||||
+ screen->fbLocation;
|
||||
screen->texSize[RADEON_LOCAL_TEX_HEAP] = dri_priv->textureSize;
|
||||
screen->logTexGranularity[RADEON_LOCAL_TEX_HEAP] =
|
||||
dri_priv->log2TexGran;
|
||||
if ( dri_priv->textureSize == 0 ) {
|
||||
screen->texOffset[RADEON_LOCAL_TEX_HEAP] = screen->gart_texture_offset;
|
||||
screen->texSize[RADEON_LOCAL_TEX_HEAP] = dri_priv->gartTexMapSize;
|
||||
screen->logTexGranularity[RADEON_LOCAL_TEX_HEAP] =
|
||||
dri_priv->log2GARTTexGran;
|
||||
} else {
|
||||
screen->texOffset[RADEON_LOCAL_TEX_HEAP] = dri_priv->textureOffset
|
||||
+ screen->fbLocation;
|
||||
screen->texSize[RADEON_LOCAL_TEX_HEAP] = dri_priv->textureSize;
|
||||
screen->logTexGranularity[RADEON_LOCAL_TEX_HEAP] =
|
||||
dri_priv->log2TexGran;
|
||||
}
|
||||
|
||||
if ( !screen->gartTextures.map
|
||||
if ( !screen->gartTextures.map || dri_priv->textureSize == 0
|
||||
|| getenv( "RADEON_GARTTEXTURING_FORCE_DISABLE" ) ) {
|
||||
screen->numTexHeaps = RADEON_NR_TEX_HEAPS - 1;
|
||||
screen->texOffset[RADEON_GART_TEX_HEAP] = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue