mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-26 13:20:37 +02:00
iris: Fix 4GB memory zone heap sizes.
The STATE_BASE_ADDRESS "Size" fields can only hold 0xfffff in pages, and 0xfffff * 4096 = 4294963200, which is 1 page shy of 4GB. So we can't use the top page.
This commit is contained in:
parent
8cd71f399e
commit
21062e21d9
1 changed files with 6 additions and 3 deletions
|
|
@ -1670,14 +1670,17 @@ iris_bufmgr_init(struct gen_device_info *devinfo, int fd)
|
|||
STATIC_ASSERT(IRIS_MEMZONE_SHADER_START == 0ull);
|
||||
const uint64_t _4GB = 1ull << 32;
|
||||
|
||||
/* The STATE_BASE_ADDRESS size field can only hold 1 page shy of 4GB */
|
||||
const uint64_t _4GB_minus_1 = _4GB - PAGE_SIZE;
|
||||
|
||||
util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_SHADER],
|
||||
PAGE_SIZE, _4GB - PAGE_SIZE);
|
||||
PAGE_SIZE, _4GB_minus_1 - PAGE_SIZE);
|
||||
util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_SURFACE],
|
||||
IRIS_MEMZONE_SURFACE_START,
|
||||
_4GB - IRIS_MAX_BINDERS * IRIS_BINDER_SIZE);
|
||||
_4GB_minus_1 - IRIS_MAX_BINDERS * IRIS_BINDER_SIZE);
|
||||
util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_DYNAMIC],
|
||||
IRIS_MEMZONE_DYNAMIC_START + IRIS_BORDER_COLOR_POOL_SIZE,
|
||||
_4GB - IRIS_BORDER_COLOR_POOL_SIZE);
|
||||
_4GB_minus_1 - IRIS_BORDER_COLOR_POOL_SIZE);
|
||||
util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_OTHER],
|
||||
IRIS_MEMZONE_OTHER_START,
|
||||
gtt_size - IRIS_MEMZONE_OTHER_START);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue