1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
/*
* Copyright (C) 2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include <cstdint>
namespace NEO {
enum class HeapAddressModel : uint32_t {
/*
* Private heaps - command list can use any addressing.
* Heaps are allocated and owned by each command list.
* Command lists will require to reload SBA command before execution.
*/
privateHeaps = 0,
/*
* Global stateless - command list can use only stateless addressing.
* Surface state heap is allocated per context for driver's allocations only (debug and scratch)
* Command lists do not require SBA command reload. SBA is dispatched only once for heap addresses.
*/
globalStateless = 1,
/*
* Global bindless - command list can use stateless or bindless addressing.
* Surface and dynamic heaps are allocated in global, 4GB allocator for all allocations and samplers used.
* Command lists do not require SBA command reload. SBA is dispatched only once for heap addresses.
*/
globalBindless = 2,
/*
* Global bindful - command list can use any addressing.
* Surface and dynamic heaps are allocated in global, 4GB allocator for all allocations and samplers used.
* Binding table base address is programed by special heap manager that provides and reuses space for bti
* Command lists might require dynamic binding table base address command reload when binding table heap manager requires to reload base address.
*/
globalBindful = 3
};
} // namespace NEO
|