Поделиться через


перечисление D3D11_RESOURCE_MISC_FLAG (d3d11.h)

Определяет параметры для ресурсов.

Синтаксис

typedef enum D3D11_RESOURCE_MISC_FLAG {
  D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1L,
  D3D11_RESOURCE_MISC_SHARED = 0x2L,
  D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4L,
  D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10L,
  D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20L,
  D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40L,
  D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80L,
  D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100L,
  D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200L,
  D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800L,
  D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000L,
  D3D11_RESOURCE_MISC_GUARDED = 0x8000L,
  D3D11_RESOURCE_MISC_TILE_POOL = 0x20000L,
  D3D11_RESOURCE_MISC_TILED = 0x40000L,
  D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000L,
  D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE,
  D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER,
  D3D11_RESOURCE_MISC_NO_SHADER_ACCESS
} ;

Константы

 
D3D11_RESOURCE_MISC_GENERATE_MIPS
Значение: 0x1L
Включает создание карты MIP с помощью ID3D11DeviceContext::GenerateMips в ресурсе текстуры. Ресурс должен быть создан с флагами привязки , которые указывают, что ресурс является целевым объектом отрисовки и ресурсом шейдера.
D3D11_RESOURCE_MISC_SHARED
Значение: 0x2L
Обеспечивает общий доступ к данным ресурсов между двумя или более устройствами Direct3D. Единственными ресурсами, которые можно совместно использовать, являются двухd-текстуры без mipmapped.


D3D11_RESOURCE_MISC_SHARED и D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX являются взаимоисключающими.


Устройства WARP и REF не поддерживают общие ресурсы.
При попытке создать ресурс с этим флагом на устройстве WARP или REF метод create вернет код ошибки E_OUTOFMEMORY .


Примечание Начиная с Windows 8 устройства WARP полностью поддерживают общие ресурсы.

 

Примечание Начиная с Windows 8 мы рекомендуем включить общий доступ к данным ресурсов между двумя или более устройствами Direct3D с помощью сочетания флагов D3D11_RESOURCE_MISC_SHARED_NTHANDLE и D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX.

 
D3D11_RESOURCE_MISC_TEXTURECUBE
Значение: 0x4L
Задает ресурс в виде текстуры куба, созданной на основе Texture2DArray , содержащей 6 текстур.
D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS
Значение: 0x10L
Включает в себя создание содержимого, созданного GPU.
D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS
Значение: 0x20L
Включает ресурс в качестве буфера байтов.
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED
Значение: 0x40L
Включает ресурс в качестве структурированного буфера.
D3D11_RESOURCE_MISC_RESOURCE_CLAMP
Значение: 0x80L
Включает ресурс с зажимом карты MIP для использования с ID3D11DeviceContext::SetResourceMinLOD.
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX
Значение: 0x100L
Позволяет синхронизировать ресурс с помощью IDXGIKeyedMutex::AcquireSync и
IDXGIKeyedMutex::ReleaseSync Api.
Следующие API создания ресурсов Direct3D 11, которые принимают D3D11_RESOURCE_MISC_FLAG параметры, были расширены для поддержки нового флага.


При вызове любого из этих методов с установленным флагом D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX возвращенный интерфейс будет поддерживать интерфейс IDXGIKeyedMutex . Указатель на интерфейс IDXGIKeyedMutex можно получить из ресурса с помощью IUnknown::QueryInterface. Интерфейс IDXGIKeyedMutex реализует API IDXGIKeyedMutex::AcquireSync и IDXGIKeyedMutex::ReleaseSync для синхронизации доступа к поверхности. Устройство, создающее поверхность, и любое другое устройство, открывающее поверхность с помощью OpenSharedResource, должно вызвать IDXGIKeyedMutex::AcquireSync , прежде чем выполнять какие-либо команды отрисовки на поверхность. Когда эти устройства завершат отрисовку, они должны вызвать IDXGIKeyedMutex::ReleaseSync.


D3D11_RESOURCE_MISC_SHARED и D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX являются взаимоисключающими.


Устройства WARP и REF не поддерживают общие ресурсы.
При попытке создать ресурс с этим флагом на устройстве WARP или REF метод create вернет код ошибки E_OUTOFMEMORY .


Примечание Начиная с Windows 8 устройства WARP полностью поддерживают общие ресурсы.

 
D3D11_RESOURCE_MISC_GDI_COMPATIBLE
Значение: 0x200L
Включает ресурс, совместимый с GDI. Необходимо установить флаг D3D11_RESOURCE_MISC_GDI_COMPATIBLE на поверхностях, используемых с GDI. Установка флага D3D11_RESOURCE_MISC_GDI_COMPATIBLE позволяет выполнять отрисовку GDI на поверхности с помощью IDXGISurface1::GetDC.


Рассмотрите следующие советы по программированию для использования D3D11_RESOURCE_MISC_GDI_COMPATIBLE при создании текстуры или использовании этой текстуры в цепочке буферов:


  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX и D3D11_RESOURCE_MISC_GDI_COMPATIBLE являются взаимоисключающими. Поэтому не используйте их вместе.

  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP и D3D11_RESOURCE_MISC_GDI_COMPATIBLE являются взаимоисключающими. Поэтому не используйте их вместе.

  • Необходимо привязать текстуру в качестве целевого объекта отрисовки для этапа слияния вывода. Например, задайте флаг D3D11_BIND_RENDER_TARGET в элементе BindFlags структуры D3D11_TEXTURE2D_DESC .

  • Необходимо задать максимальное число уровней карты MIP равным 1. Например, задайте для элемента MipLevels структуры D3D11_TEXTURE2D_DESC значение 1.

  • Необходимо указать, что текстуре требуется доступ gpu для чтения и записи. Например, задайте для элемента Usage структуры D3D11_TEXTURE2D_DESC значение D3D11_USAGE_DEFAULT.


  • Необходимо задать для формата текстуры один из следующих типов.


    • DXGI_FORMAT_B8G8R8A8_UNORM

    • DXGI_FORMAT_B8G8R8A8_TYPELESS

    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

    Например, присвойте элементу Format структуры D3D11_TEXTURE2D_DESC один из этих типов.

  • Нельзя использовать D3D11_RESOURCE_MISC_GDI_COMPATIBLE с несколькими выборками. Поэтому задайте для элемента Count структуры DXGI_SAMPLE_DESC значение 1. Затем задайте для элемента SampleDesc структуры D3D11_TEXTURE2D_DESC эту DXGI_SAMPLE_DESC структуру.

D3D11_RESOURCE_MISC_SHARED_NTHANDLE
Значение: 0x800L
Установите этот флаг, чтобы включить использование значений NT HANDLE при создании общего ресурса. Включив этот флаг, вы не рекомендуете использовать существующие значения HANDLE.

Значение указывает новый тип общего ресурса, который направляет среду выполнения на использование значений NT HANDLE для общего ресурса. Затем среда выполнения должна убедиться, что общий ресурс работает на всем оборудовании на указанном уровне функций.


Без этого флага среда выполнения не будет строго проверять параметры общих ресурсов (то есть форматы, флаги, использование и т. д.). Если среда выполнения не проверяет параметры общих ресурсов, поведение большей части API Direct3D может быть неопределенным и может отличаться в зависимости от драйвера.

Direct3D 11 и более ранние версии: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICTED_CONTENT
Значение: 0x1000L
Установите этот флаг, чтобы указать, что ресурс может содержать защищенное содержимое; Поэтому операционная система должна использовать ресурс только в том случае, если драйвер и оборудование поддерживают защиту содержимого. Если драйвер и оборудование не поддерживают защиту содержимого и вы пытаетесь создать ресурс с этим флагом, создание ресурса завершится ошибкой.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE
Значение: 0x2000L
Установите этот флаг, чтобы указать, что операционная система ограничивает доступ к общей поверхности. Этот флаг можно использовать вместе с флагом D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER и только при создании общей поверхности. Процесс, создающий общий ресурс, всегда может открыть его.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER
Значение: 0x4000L
Установите этот флаг, чтобы указать, что драйвер ограничивает доступ к общей поверхности. Этот флаг можно использовать вместе с флагом D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE и только при создании общей поверхности. Процесс, создающий общий ресурс, всегда может открыть его.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_RESOURCE_MISC_GUARDED
Значение: 0x8000L
Установите этот флаг, чтобы указать, что ресурс защищен. Такой ресурс возвращается API IDCompositionSurface::BeginDraw (DirectComposition) и ISurfaceImageSourceNative::BeginDraw (среда выполнения Windows). Для этих API вы предоставляете интересующую область (ROI) на поверхности для обновления. Эта поверхность несовместима с несколькими целевыми объектами отрисовки (MRT).

Защищенный ресурс автоматически ограничивает все операции записи в регионе, связанном с одним из предыдущих API. Кроме того, ресурс обеспечивает доступ к рентабельности инвестиций со следующими ограничениями:


  • Операции копирования из ресурса с помощью ID3D11DeviceContext::CopyResource или ID3D11DeviceContext::CopySubresourceRegion ограничены копированием только из roI.

  • Если защищенный ресурс задан в качестве целевого объекта отрисовки, он должен быть единственным целевым объектом.


Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_RESOURCE_MISC_TILE_POOL
Значение: 0x20000L
Установите этот флаг, чтобы указать, что ресурс является пулом плиток.

Direct3D 11: Это значение не поддерживается до версии Direct3D 11.2.
D3D11_RESOURCE_MISC_TILED
Значение: 0x40000L
Установите этот флаг, чтобы указать, что ресурс является ресурсом с плиткой.

Direct3D 11: Это значение не поддерживается до версии Direct3D 11.2.
D3D11_RESOURCE_MISC_HW_PROTECTED
Значение: 0x80000L
Установите этот флаг, чтобы указать, что ресурс должен быть создан таким образом, чтобы он был защищен оборудованием. Создание ресурса завершится ошибкой, если защита содержимого оборудования не поддерживается.

Этот флаг имеет следующие ограничения:


  • Этот флаг нельзя использовать со следующими D3D11_USAGE значениями:

    • D3D11_USAGE_DYNAMIC

    • D3D11_USAGE_STAGING



  • Этот флаг нельзя использовать со следующими значениями D3D11_BIND_FLAG .

    • D3D11_BIND_VERTEX_BUFFER

    • D3D11_BIND_INDEX_BUFFER



  • Флаги доступа к ЦП указывать нельзя.


Примечание  

Создание текстуры с помощью этого флага не гарантирует автоматическое включение аппаратной защиты для базового выделения. Некоторые реализации требуют, чтобы компоненты DRM были сначала инициализированы до каких-либо гарантий защиты.


 

Примечание Это значение перечисления поддерживается начиная с Windows 10.
D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE
Позволяет ресурсу работать с функцией отображаемых поверхностей . Необходимо использовать D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE в сочетании с D3D11_RESOURCE_MISC_SHARED и D3D11_RESOURCE_MISC_SHARED_NTHANDLE.
D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER
TBD

Комментарии

Это перечисление используется в D3D11_BUFFER_DESC, D3D11_TEXTURE1D_DESC, D3D11_TEXTURE2D_DESCD3D11_TEXTURE3D_DESC.

Эти флаги можно объединить с помощью побитового ИЛИ.

D3D11_RESOURCE_MISC_FLAG нельзя использовать при создании ресурсов с флагами D3D11_CPU_ACCESS.

Требования

Требование Значение
Заголовок d3d11.h

См. также раздел

Перечисления ресурсов