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 состояние.
Обсуждение
Если
state
MTLPurgeableStateKeepCurrent
, текущее purgeable состояние запрашивается и не изменяется.Если
state
MTLPurgeableStateNonVolatile
, ресурс отмечен, чтобы сообщить вызывающей стороне, что не должны быть отброшены данные.Если
state
MTLPurgeableStateEmpty
, ресурс отмечен как данные, которые могут быть отброшены, потому что вызывающей стороне больше не нужно содержание ресурса.Если
state
MTLPurgeableStateVolatile
, ресурс отмечен как данные, которые могут быть отброшены, даже если вызывающей стороне, возможно, понадобится ресурс.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;
Константы
-
KeepCurrent
MTLPurgeableStateKeepCurrent
Состояние, позволяющее ресурсу быть запрошенным, не изменяя purgeable состояние.
Доступный в iOS 8.0 и позже.
-
NonVolatile
MTLPurgeableStateNonVolatile
Состояние, не позволяющее содержанию ресурса быть отброшенным.
Доступный в iOS 8.0 и позже.
-
Volatile
MTLPurgeableStateVolatile
Состояние, позволяющее содержанию ресурса быть отброшенным. Вызывающей стороне, возможно, понадобится содержание, но реализация может отбросить данные в случае необходимости.
Доступный в iOS 8.0 и позже.
-
Empty
MTLPurgeableStateEmpty
Состояние, указывающее, что должно быть отброшено содержание этого ресурса. Вызывающей стороне не нужно содержание.
Доступный в 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;
Константы
-
DefaultCache
MTLCPUCacheModeDefaultCache
Режим кэширования CPU по умолчанию.
Доступный в iOS 8.0 и позже.
-
WriteCombined
MTLCPUCacheModeWriteCombined
Объединенный с записью режим кэширования 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;
Константы
-
OptionCPUCacheModeDefault
MTLResourceOptionCPUCacheModeDefault
Режим кэширования CPU по умолчанию для доступа общего назначения к выделению ресурсов хранения ресурса, гарантирующего, что операции чтения и операции записи выполняются в ожидаемом порядке.
Доступный в iOS 8.0 и позже.
-
OptionCPUCacheModeWriteCombined
MTLResourceOptionCPUCacheModeWriteCombined
Набор режима кэширования CPU для использования объединенной с записью памяти для выделения ресурсов хранения ресурса.
Доступный в iOS 8.0 и позже.
Оператор импорта
Objective C
@import Metal;
Swift
import Metal
Доступность
Доступный в iOS 8.0 и позже.
-