summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2007-03-14 11:41:50 +0100
committerMichel Dänzer <michel@tungstengraphics.com>2007-03-14 11:41:50 +0100
commit555b801a75cafa082808bc9bb683e700fc97d79a (patch)
treee99eb682fca82edd00373c1f379ea341bde2f426
parent66fdb08c83d353fbe4e917900c54b555c869eb80 (diff)
Make sure the legacy texture area is there when needed.
This currently only matters when the DRM memory manager is not available and Option "Legacy3D" "off" is specified, but that hasn't always been the case and might change again in the future.
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_dri.c10
-rw-r--r--src/i830_memory.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/src/i830.h b/src/i830.h
index dc8041c5..d4be4034 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -591,6 +591,7 @@ void i830_free_3d_memory(ScrnInfoPtr pScrn);
void i830_free_memory(ScrnInfoPtr pScrn, i830_memory *mem);
extern long I830CheckAvailableMemory(ScrnInfoPtr pScrn);
Bool i830_allocate_2d_memory(ScrnInfoPtr pScrn);
+Bool i830_allocate_texture_memory(ScrnInfoPtr pScrn);
Bool i830_allocate_3d_memory(ScrnInfoPtr pScrn);
extern Bool I830IsPrimary(ScrnInfoPtr pScrn);
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 8fae4b7e..b24c8391 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -702,6 +702,16 @@ I830DRIScreenInit(ScreenPtr pScreen)
i830_free_memory(pScrn, pI830->memory_manager);
pI830->memory_manager = NULL;
+
+ if (!(pI830->mmModeFlags & I830_KERNEL_TEX)) {
+ pI830->mmModeFlags |= I830_KERNEL_TEX;
+
+ if (!i830_allocate_texture_memory(pScrn)) {
+ I830DRICloseScreen(pScreen);
+ drmFreeVersion(version);
+ return FALSE;
+ }
+ }
}
}
#ifdef DAMAGE
diff --git a/src/i830_memory.c b/src/i830_memory.c
index 0742d8c0..a20e7432 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -1156,7 +1156,7 @@ i830_allocate_depthbuffer(ScrnInfoPtr pScrn)
return TRUE;
}
-static Bool
+Bool
i830_allocate_texture_memory(ScrnInfoPtr pScrn)
{
I830Ptr pI830 = I830PTR(pScrn);