diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/i830.h | 1 | ||||
-rw-r--r-- | src/i830_memory.c | 7 |
2 files changed, 7 insertions, 1 deletions
@@ -902,6 +902,7 @@ extern const int I830CopyROP[16]; #define NEED_NON_STOLEN 0x00000004 #define NEED_LIFETIME_FIXED 0x00000008 #define ALLOW_SHARING 0x00000010 +#define DISABLE_REUSE 0x00000020 /* Chipset registers for VIDEO BIOS memory RW access */ #define _855_DRAM_RW_CONTROL 0x58 diff --git a/src/i830_memory.c b/src/i830_memory.c index 892c26e9..2a697a7d 100644 --- a/src/i830_memory.c +++ b/src/i830_memory.c @@ -799,6 +799,9 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name, } } + if (flags & DISABLE_REUSE) + drm_intel_bo_disable_reuse(mem->bo); + /* Insert new allocation into the list */ mem->prev = NULL; mem->next = pI830->bo_list; @@ -1076,7 +1079,7 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn) i830_memory *front_buffer = NULL; enum tile_format tile_format = TILE_NONE; - flags = ALLOW_SHARING; + flags = ALLOW_SHARING|DISABLE_REUSE; /* We'll allocate the fb such that the root window will fit regardless of * rotation. @@ -1142,6 +1145,8 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn) flags = pI830->CursorNeedsPhysical ? NEED_PHYSICAL_ADDR : 0; + flags |= DISABLE_REUSE; + /* Try to allocate one big blob for our cursor memory. This works * around a limitation in the FreeBSD AGP driver that allows only one * physical allocation larger than a page, and could allow us |