mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 12:23:05 +08:00
Related-To: NEO-13715 Implements basic functionality for zeCommandListAppendMemoryAdvise for system allocator Signed-off-by: Chandio, Bibrak Qamar <bibrak.qamar.chandio@intel.com>
56 lines
2.9 KiB
C++
56 lines
2.9 KiB
C++
/*
|
|
* Copyright (C) 2021-2025 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
namespace NEO {
|
|
|
|
struct MemAdviseFlags {
|
|
union {
|
|
uint8_t allFlags; /* all memAdvise flags */
|
|
struct
|
|
{
|
|
uint8_t readOnly : 1; /* ZE_MEMORY_ADVICE_SET_READ_MOSTLY or ZE_MEMORY_ADVICE_CLEAR_READ_MOSTLY */
|
|
uint8_t devicePreferredLocation : 1; /* ZE_MEMORY_ADVICE_SET_PREFERRED_LOCATION or ZE_MEMORY_ADVICE_CLEAR_PREFERRED_LOCATION */
|
|
uint8_t nonAtomic : 1; /* ZE_MEMORY_ADVICE_SET_NON_ATOMIC_MOSTLY or ZE_MEMORY_ADVICE_CLEAR_NON_ATOMIC_MOSTLY */
|
|
uint8_t cachedMemory : 1; /* ZE_MEMORY_ADVICE_BIAS_CACHED or ZE_MEMORY_ADVICE_BIAS_UNCACHED */
|
|
uint8_t cpuMigrationBlocked : 1; /* ZE_MEMORY_ADVICE_SET_READ_MOSTLY and ZE_MEMORY_ADVICE_SET_PREFERRED_LOCATION */
|
|
uint8_t systemPreferredLocation : 1; /* ZE_MEMORY_ADVICE_SET_SYSTEM_MEMORY_PREFERRED_LOCATION or ZE_MEMORY_ADVICE_CLEAR_SYSTEM_MEMORY_PREFERRED_LOCATION */
|
|
uint8_t reserved1 : 1;
|
|
uint8_t reserved0 : 1;
|
|
};
|
|
};
|
|
MemAdviseFlags() {
|
|
allFlags = 0;
|
|
cachedMemory = 1;
|
|
}
|
|
};
|
|
static_assert(sizeof(MemAdviseFlags) == sizeof(uint8_t), "");
|
|
|
|
enum class MemAdvise : uint8_t {
|
|
setReadMostly = 0, /* hint that memory will be read from frequently and written to rarely */
|
|
clearReadMostly, /* removes the effect of SetReadMostly */
|
|
setPreferredLocation, /* hint that the preferred memory location is the specified device */
|
|
clearPreferredLocation, /* removes the effect of SetPreferredLocation */
|
|
setNonAtomicMostly, /* hints that memory will mostly be accessed non-atomically */
|
|
clearNonAtomicMostly, /* removes the effect of SetNonAtomicMostly */
|
|
biasCached, /* hints that memory should be cached */
|
|
biasUncached, /* hints that memory should not be cached */
|
|
setSystemMemoryPreferredLocation, /* hint that the preferred memory location is host memory */
|
|
clearSystemMemoryPreferredLocation, /* removes the effect of SetSystemMemoryPreferredLocation */
|
|
setAtomicDevice, /* hint that memory will be accessed atomically by the specified device */
|
|
clearAtomicDevice, /* removes the effect of SetAtomicDevice */
|
|
setAtomicGlobal, /* hint that memory will be accessed atomically by device on system memory */
|
|
clearAtomicGlobal, /* removes the effect of SetAtomicGlobal */
|
|
setAtomicCpu, /* hint that memory will be accessed atomically by CPU */
|
|
clearAtomicCpu, /* removes the effect of SetAtomicCpu */
|
|
invalidAdvise /* invalid advise */
|
|
};
|
|
} // namespace NEO
|