summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/kgem.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index ca7eafae..0b2e1d66 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -692,13 +692,14 @@ void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, int gen)
if (kgem->max_gpu_size > kgem->max_cpu_size)
kgem->max_gpu_size = kgem->max_cpu_size;
- kgem->max_tile_size = kgem->aperture_total / 4;
+ kgem->max_tile_size = MAX_CACHE_SIZE;
if (kgem->max_tile_size > kgem->max_gpu_size / 2)
kgem->max_tile_size = kgem->max_gpu_size / 2;
totalram = total_ram_size();
if (totalram == 0) {
- DBG(("%s: total ram size unknown, assuming maximum of total aperture\n"));
+ DBG(("%s: total ram size unknown, assuming maximum of total aperture\n",
+ __FUNCTION__));
totalram = kgem->aperture_total;
}
if (kgem->max_object_size > totalram / 2)
@@ -3193,7 +3194,9 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
#if !DBG_NO_MAP_UPLOAD
/* Be a little more generous and hope to hold fewer mmappings */
alloc = ALIGN(2*size, kgem->partial_buffer_size);
- if (alloc > kgem->max_gpu_size)
+ if (alloc > kgem->max_tile_size)
+ alloc = ALIGN(size, kgem->partial_buffer_size);
+ if (alloc > kgem->max_tile_size)
alloc = PAGE_ALIGN(size);
alloc /= PAGE_SIZE;
if (kgem->has_cpu_bo) {