MTLResource
Наследование
Не применимый
Оператор импорта
Swift
import Metal
Objective C
@import Metal;
Доступность
Доступный в iOS 8.0 и позже.
MTLResource протокол определяет интерфейс для любого объекта ресурса, представляющего выделение памяти GPU.
Ваше приложение не определяет классы, реализующие этот протокол. Вместо этого Ваше приложение выделяет буферные объекты (MTLBuffer) или объекты текстуры (MTLTexture) это соответствует этому протоколу.
-
cpuCacheModeСвойствоРежим кэширования CPU, использующийся для отображения CPU объекта ресурса (т.е. буфер или текстура). (требуемый) (только для чтения)
Объявление
Swift
var cpuCacheMode: MTLCPUCacheMode { get }Objective C
@property(readonly) MTLCPUCacheMode cpuCacheModeОбсуждение
Когда Вы сначала создаете ресурс и не можете быть изменены впоследствии, режим кэширования установлен.
Объединенная с записью память может иметь удивительные ловушки производительности. Рассмотрите использование объединенного с записью режима кэширования, только если запись в обычно кэшируемые буферы, как известно, вызывает проблемы производительности вследствие загрязнения кэша. Для получения дополнительной информации посмотрите
CPU Cache Modesраздел констант.Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
deviceСвойствоУстройство, создавшее этот ресурс. (требуемый) (только для чтения)
Объявление
Swift
var device: MTLDevice { get }Objective C
@property(readonly) id< MTLDevice > deviceОбсуждение
Ресурс всегда связывается с
MTLDeviceэто создало его и может использоваться только с тем устройством.Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
setPurgeableState (_:) - setPurgeableState:ТребуемыйНаборы, может ли ресурс быть очищен синхронно. (требуемый)
Объявление
Swift
func setPurgeableState(_state: MTLPurgeableState) -> MTLPurgeableStateObjective C
- (MTLPurgeableState)setPurgeableState:(MTLPurgeableState)stateПараметры
stateЖелаемое purgeable состояние ресурса.
Возвращаемое значение
Возвращает предшествующий ресурс purgeable состояние.
Обсуждение
Если
stateMTLPurgeableStateKeepCurrent, текущее purgeable состояние запрашивается и не изменяется.Если
stateMTLPurgeableStateNonVolatile, ресурс отмечен, чтобы сообщить вызывающей стороне, что не должны быть отброшены данные.Если
stateMTLPurgeableStateEmpty, ресурс отмечен как данные, которые могут быть отброшены, потому что вызывающей стороне больше не нужно содержание ресурса.Если
stateMTLPurgeableStateVolatile, ресурс отмечен как данные, которые могут быть отброшены, даже если вызывающей стороне, возможно, понадобится ресурс.MTLResourceобъекты могут быть сделаны purgeable, даже если вызывающей стороне, возможно, понадобится ресурс, где реализация может предъявить претензии в отношении базовой системы хранения в любое время, не сообщая приложению. Ресурсы Purgeable могут позволить приложению сохранить большие кэши неактивной памяти, которая может быть полезной снова в будущем без риска предотвращения выделения более важной памяти.При использовании purgeable памяти удостоверьтесь, что блок памяти заблокирован перед доступом к нему. Этот механизм блокировки необходим, чтобы гарантировать, чтобы политики автоудаления не отбрасывали данные при доступе к нему. Точно так же механизм блокировки гарантирует, что система виртуальной памяти уже не отбросила данные.
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
Типы данных
-
purgeable состояние ресурса.
Объявление
Swift
enum MTLPurgeableState : UInt { case KeepCurrent case NonVolatile case Volatile case Empty }Objective C
typedef enum : NSUInteger { MTLPurgeableStateKeepCurrent = 1, MTLPurgeableStateNonVolatile = 2, MTLPurgeableStateVolatile = 3, MTLPurgeableStateEmpty = 4 } MTLPurgeableState;Константы
-
KeepCurrentMTLPurgeableStateKeepCurrentСостояние, позволяющее ресурсу быть запрошенным, не изменяя purgeable состояние.
Доступный в iOS 8.0 и позже.
-
NonVolatileMTLPurgeableStateNonVolatileСостояние, не позволяющее содержанию ресурса быть отброшенным.
Доступный в iOS 8.0 и позже.
-
VolatileMTLPurgeableStateVolatileСостояние, позволяющее содержанию ресурса быть отброшенным. Вызывающей стороне, возможно, понадобится содержание, но реализация может отбросить данные в случае необходимости.
Доступный в iOS 8.0 и позже.
-
EmptyMTLPurgeableStateEmptyСостояние, указывающее, что должно быть отброшено содержание этого ресурса. Вызывающей стороне не нужно содержание.
Доступный в iOS 8.0 и позже.
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
-
Режим кэширования CPU используется для отображения CPU ресурса.
Объявление
Swift
enum MTLCPUCacheMode : UInt { case DefaultCache case WriteCombined }Objective C
typedef enum : NSUInteger { MTLCPUCacheModeDefaultCache = 0, MTLCPUCacheModeWriteCombined = 1 } MTLCPUCacheMode;Константы
-
DefaultCacheMTLCPUCacheModeDefaultCacheРежим кэширования CPU по умолчанию.
Доступный в iOS 8.0 и позже.
-
WriteCombinedMTLCPUCacheModeWriteCombinedОбъединенный с записью режим кэширования CPU.
Доступный в iOS 8.0 и позже.
Обсуждение
Объединенная с записью память оптимизирована для ресурсов, в которые CPU вписывает, но никогда не читает. На некоторых реализациях записи могут обойти кэши, который избегает загрязнения кэша. Читайте действия могут выполнить очень плохо.
Приложения должны только исследовать изменение режима кэширования, если запись в обычно кэшируемые буферы, как известно, вызывает проблемы производительности вследствие загрязнения кэша, поскольку объединенная с записью память может иметь удивительные ловушки производительности. Другой подход должен использовать невременные записи для обычно кэшируемой памяти (STNP на ARMv8).
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
-
Дополнительные аргументы раньше создавали и влияли на поведение объектов текстуры и буфера.
Объявление
Swift
struct MTLResourceOptions : RawOptionSetType { init(_rawValue: UInt) init(rawValuerawValue: UInt) static var OptionCPUCacheModeDefault: MTLResourceOptions { get } static var OptionCPUCacheModeWriteCombined: MTLResourceOptions { get } }Objective C
typedef enum : NSUInteger { MTLResourceOptionCPUCacheModeDefault = MTLCPUCacheModeDefaultCache, MTLResourceOptionCPUCacheModeWriteCombined = MTLCPUCacheModeWriteCombined } MTLResourceOptions;Константы
-
OptionCPUCacheModeDefaultMTLResourceOptionCPUCacheModeDefaultРежим кэширования CPU по умолчанию для доступа общего назначения к выделению ресурсов хранения ресурса, гарантирующего, что операции чтения и операции записи выполняются в ожидаемом порядке.
Доступный в iOS 8.0 и позже.
-
OptionCPUCacheModeWriteCombinedMTLResourceOptionCPUCacheModeWriteCombinedНабор режима кэширования CPU для использования объединенной с записью памяти для выделения ресурсов хранения ресурса.
Доступный в iOS 8.0 и позже.
Оператор импорта
Objective C
@import Metal;Swift
import MetalДоступность
Доступный в iOS 8.0 и позже.
-
