anv: leave the top 4Gb of the high heap VMA unused
In628c9ca908
I forgot to apply the same -4Gb of the high address of the high heap VMA. This was previously computed in the HIGH_HEAP_MAX_ADDRESS. Many thanks to James for pointing this out. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reported-by: Xiong, James <james.xiong@intel.com> Fixes:628c9ca908
("anv: store heap address bounds when initializing physical device") Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
dc402be73e
commit
9e7b0988d6
|
@ -171,7 +171,11 @@ anv_physical_device_init_heaps(struct anv_physical_device *device, int fd)
|
||||||
device->memory.heap_count = 2;
|
device->memory.heap_count = 2;
|
||||||
device->memory.heaps[0] = (struct anv_memory_heap) {
|
device->memory.heaps[0] = (struct anv_memory_heap) {
|
||||||
.vma_start = HIGH_HEAP_MIN_ADDRESS,
|
.vma_start = HIGH_HEAP_MIN_ADDRESS,
|
||||||
.vma_size = gtt_size - HIGH_HEAP_MIN_ADDRESS,
|
/* Leave the last 4GiB out of the high vma range, so that no state
|
||||||
|
* base address + size can overflow 48 bits. For more information see
|
||||||
|
* the comment about Wa32bitGeneralStateOffset in anv_allocator.c
|
||||||
|
*/
|
||||||
|
.vma_size = gtt_size - (1ull << 32) - HIGH_HEAP_MIN_ADDRESS,
|
||||||
.size = heap_size_48bit,
|
.size = heap_size_48bit,
|
||||||
.flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
|
.flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
|
||||||
.supports_48bit_addresses = true,
|
.supports_48bit_addresses = true,
|
||||||
|
@ -1988,10 +1992,6 @@ VkResult anv_CreateDevice(
|
||||||
util_vma_heap_init(&device->vma_lo, low_heap->vma_start, low_heap->vma_size);
|
util_vma_heap_init(&device->vma_lo, low_heap->vma_start, low_heap->vma_size);
|
||||||
device->vma_lo_available = low_heap->size;
|
device->vma_lo_available = low_heap->size;
|
||||||
|
|
||||||
/* Leave the last 4GiB out of the high vma range, so that no state base
|
|
||||||
* address + size can overflow 48 bits. For more information see the
|
|
||||||
* comment about Wa32bitGeneralStateOffset in anv_allocator.c
|
|
||||||
*/
|
|
||||||
struct anv_memory_heap *high_heap =
|
struct anv_memory_heap *high_heap =
|
||||||
&physical_device->memory.heaps[0];
|
&physical_device->memory.heaps[0];
|
||||||
util_vma_heap_init(&device->vma_hi, high_heap->vma_start, high_heap->vma_size);
|
util_vma_heap_init(&device->vma_hi, high_heap->vma_start, high_heap->vma_size);
|
||||||
|
|
Loading…
Reference in New Issue