Características de Direct3D 11.1

Se ha agregado la siguiente funcionalidad en Direct3D 11.1, que se incluye con Windows 8, Windows RT y Windows Server 2012. La compatibilidad parcial con Direct3D 11.1 está disponible en Windows 7 y Windows Server 2008 R2 a través de la actualización de plataforma para Windows 7, que está disponible a través de la actualización de plataforma para Windows 7.

Mejoras del seguimiento del sombreador y del compilador

Direct3D 11.1 te permite usar el seguimiento del sombreador para asegurarte de que el código funciona según lo previsto y, si no es así, puedes detectar y solucionar el problema. El Kit de desarrollo de software (SDK) de Windows para Windows 8 contiene mejoras del compilador HLSL. El seguimiento del sombreador y el compilador HLSL se implementan en D3dcompiler_nn.dll.

La API de seguimiento del sombreador y las mejoras del compilador HLSL constan de los métodos y funciones siguientes.

La biblioteca D3dcompiler.lib requiere D3dcompiler_nn.dll. Este archivo DLL no forma parte de Windows 8; se encuentra en la carpeta \bin del SDK de Windows para Windows 8 junto con la versión de línea de comandos Fxc.exe del compilador HLSL.

Nota:

Aunque puedes usar esta combinación de biblioteca y DLL para el desarrollo, no puedes implementar aplicaciones de la Tienda Windows que usen esta combinación. Por lo tanto, debes compilar sombreadores HLSL antes de enviar la aplicación de la Tienda Windows. Puede escribir archivos binarios de compilación de HLSL en el disco o el compilador puede generar encabezados con matrices de bytes estáticas que contengan los datos del blob del sombreador. Use la interfaz ID3DBlob para acceder a los datos del blob. Para desarrollar la aplicación de la Tienda Windows, llama a D3DCompile2 o D3DCompileFromFile para compilar el origen HLSL sin procesar y, a continuación, alimenta los datos de blobs resultantes a Direct3D.

 

Uso compartido de dispositivos Direct3D

Direct3D 11.1 permite que las API de Direct3D 10 y las API de Direct3D 11 usen un dispositivo de representación subyacente.

Esta característica de Direct3D 11.1 consta de los métodos y la interfaz siguientes.

Comprobar la compatibilidad con las nuevas características y formatos de Direct3D 11.1

Direct3D 11.1 te permite comprobar si hay nuevas características que el controlador de gráficos puede admitir y nuevas formas en que se admite un formato en un dispositivo. Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 también especifica nuevos valores de DXGI_FORMAT .

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Uso de la precisión mínima de HLSL

A partir de Windows 8, los controladores gráficos pueden implementar tipos de datos escalares HLSL de precisión mínima mediante cualquier precisión mayor o igual que su precisión de bits especificada. Cuando el código del sombreador de precisión mínima de HLSL se usa en hardware que implementa la precisión mínima de HLSL, se usa menos ancho de banda de memoria y, como resultado, también se usa menos energía del sistema.

Puede consultar la compatibilidad de precisión mínima que proporciona el controlador de gráficos llamando a ID3D11Device::CheckFeatureSupport con el valor de D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT . En esta llamada ID3D11Device::CheckFeatureSupport , pasa un puntero a una estructura de D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT que ID3D11Device::CheckFeatureSupport rellena con los niveles de precisión mínimos que admite el controlador para la fase del sombreador de píxeles y para otras fases del sombreador. La información devuelta simplemente indica que el hardware gráfico puede realizar operaciones HLSL con una precisión inferior a la precisión flotante estándar de 32 bits, pero no garantiza que el hardware gráfico realmente se ejecute con una precisión inferior.

No es necesario crear varios sombreadores que sí y no usen la precisión mínima. En su lugar, cree sombreadores con precisión mínima y las variables de precisión mínima se comportan con precisión completa de 32 bits si el controlador de gráficos informa de que no admite ninguna precisión mínima. Para obtener más información sobre la precisión mínima de HLSL, consulta Uso de la precisión mínima de HLSL.

Los sombreadores de precisión mínima de HLSL no funcionan en sistemas operativos anteriores a Windows 8.

Especificación de planos de clip de usuario en HLSL en el nivel de característica 9 y versiones posteriores

A partir de Windows 8, puede usar el atributo de función clipplanes en una declaración de función HLSL en lugar de SV_ClipDistance para que el sombreador funcione en el nivel de característica 9_x, así como en el nivel de característica 10 y versiones posteriores. Para obtener más información, consulta Planos de clip de usuario en hardware de nivel de característica 9.

Crear búferes de constantes más grandes a los que un sombreador puede tener acceso

Direct3D 11.1 te permite crear búferes de constantes mayores que el tamaño máximo del búfer de constantes al que un sombreador puede tener acceso (constantes de 4 componentes de 4 bits 3096: 64 KB). Más adelante, al enlazar los búferes a la canalización, por ejemplo, a través de PSSetConstantBuffers o PSSetConstantBuffers1, puede especificar un intervalo de búferes a los que el sombreador puede tener acceso dentro del límite de 4096.

Direct3D 11.1 actualiza el método ID3D11Device::CreateBuffer para esta característica.

Uso de operaciones lógicas en un destino de representación

Direct3D 11.1 permite usar operaciones lógicas en lugar de combinar en un destino de representación. Sin embargo, no se pueden mezclar operaciones lógicas con combinación entre varios destinos de representación.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Forzar el recuento de muestras para crear un estado de rasterizador

Direct3D 11.1 permite especificar un recuento de muestras forzadas al crear un estado de rasterizador.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Nota

Si desea representar con el recuento de muestras forzado a 1 o superior, debe seguir estas instrucciones:

  • No enlace las vistas de galería de símbolos de profundidad.
  • Deshabilite las pruebas de profundidad.
  • Asegúrese de que el sombreador no genera profundidad.
  • Si tiene vistas de destino de representación enlazadas (D3D11_BIND_RENDER_TARGET) y ha forzado el recuento de muestras a más de 1, asegúrese de que cada destino de representación tenga solo un solo ejemplo.
  • No opere el sombreador con frecuencia de muestra. Por lo tanto, ID3D11ShaderReflection::IsSampleFrequencyShader devuelve FALSE.

De lo contrario, el comportamiento de representación no está definido. Para obtener información sobre cómo configurar la galería de símbolos de profundidad, consulta Configuring Depth-Stencil Functionality.

 

Procesamiento de recursos de vídeo con sombreadores

Direct3D 11.1 te permite crear vistas (SRV/RTV/UAV) a recursos de vídeo para que los sombreadores de Direct3D puedan procesar esos recursos de vídeo. El formato de un recurso de vídeo subyacente restringe los formatos que puede usar la vista. La enumeración DXGI_FORMAT contiene nuevos valores de formato de recursos de vídeo. Estos valores DXGI_FORMAT especifican los formatos de vista válidos que puedes crear y cómo el tiempo de ejecución de Direct3D 11.1 asigna la vista. Puede crear varias vistas de diferentes partes de la misma superficie y, en función del formato, los tamaños de las vistas pueden diferir entre sí.

Direct3D 11.1 actualiza los métodos siguientes para esta característica.

Compatibilidad ampliada con recursos de Texture2D compartidos

Direct3D 11.1 garantiza que puedes compartir recursos Texture2D creados con determinados tipos de recursos y formatos. Para compartir recursos de Texture2D, use las marcas D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX o una combinación de los D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX y D3D11_RESOURCE_MISC_SHARED_NTHANDLE (nuevos para Windows 8) al crear esos recursos.

Direct3D 11.1 garantiza que puedes compartir recursos Texture2D que creaste con estos valores de DXGI_FORMAT :

  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
  • DXGI_FORMAT_B8G8R8A8_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT

Además, Direct3D 11.1 garantiza que puede compartir recursos Texture2D creados con un nivel de mapa mip de 1, tamaño de matriz de 1, enlazar marcas de D3D11_BIND_SHADER_RESOURCE y D3D11_BIND_RENDER_TARGET combinadas, el valor predeterminado de uso (D3D11_USAGE_DEFAULT) y solo estos valores de D3D11_RESOURCE_MISC_FLAG :

Direct3D 11.1 te permite compartir una gran variedad de tipos y formatos de recursos Texture2D. Puede consultar si el controlador de gráficos y el hardware admiten el uso compartido extendido de recursos Texture2D llamando a ID3D11Device::CheckFeatureSupport con el valor de D3D11_FEATURE_D3D11_OPTIONS . En esta llamada ID3D11Device::CheckFeatureSupport , pase un puntero a una estructura de D3D11_FEATURE_DATA_D3D11_OPTIONS . ID3D11Device::CheckFeatureSupport establece el miembro ExtendedResourceSharing de D3D11_FEATURE_DATA_D3D11_OPTIONSen TRUE si el hardware y el controlador admiten el uso compartido extendido de recursos Texture2D.

Si ID3D11Device::CheckFeatureSupport devuelve TRUE en ExtendedResourceSharing, puede compartir recursos creados con estos valores de DXGI_FORMAT :

  • DXGI_FORMAT_R32G32B32A32_TYPELESS
  • DXGI_FORMAT_R32G32B32A32_FLOAT
  • DXGI_FORMAT_R32G32B32A32_UINT
  • DXGI_FORMAT_R32G32B32A32_SINT
  • DXGI_FORMAT_R16G16B16A16_TYPELESS
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R16G16B16A16_UNORM
  • DXGI_FORMAT_R16G16B16A16_UINT
  • DXGI_FORMAT_R16G16B16A16_SNORM
  • DXGI_FORMAT_R16G16B16A16_SINT
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R10G10B10A2_UINT
  • DXGI_FORMAT_R8G8B8A8_TYPELESS
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
  • DXGI_FORMAT_R8G8B8A8_UINT
  • DXGI_FORMAT_R8G8B8A8_SNORM
  • DXGI_FORMAT_R8G8B8A8_SINT
  • DXGI_FORMAT_B8G8R8A8_TYPELESS
  • DXGI_FORMAT_B8G8R8A8_UNORM
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
  • DXGI_FORMAT_B8G8R8X8_TYPELESS
  • DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
  • DXGI_FORMAT_R32_TYPELESS
  • DXGI_FORMAT_R32_FLOAT
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R32_SINT
  • DXGI_FORMAT_R16_TYPELESS
  • DXGI_FORMAT_R16_FLOAT
  • DXGI_FORMAT_R16_UNORM
  • DXGI_FORMAT_R16_UINT
  • DXGI_FORMAT_R16_SNORM
  • DXGI_FORMAT_R16_SINT
  • DXGI_FORMAT_R8_TYPELESS
  • DXGI_FORMAT_R8_UNORM
  • DXGI_FORMAT_R8_UINT
  • DXGI_FORMAT_R8_SNORM
  • DXGI_FORMAT_R8_SINT
  • DXGI_FORMAT_A8_UNORM
  • DXGI_FORMAT_AYUV
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_NV11
  • DXGI_FORMAT_P016
  • DXGI_FORMAT_P010
  • DXGI_FORMAT_Y216
  • DXGI_FORMAT_Y210
  • DXGI_FORMAT_Y416
  • DXGI_FORMAT_Y410

Si ID3D11Device::CheckFeatureSupport devuelve TRUE en ExtendedResourceSharing, puede compartir recursos creados con estas características y marcas:

Nota:

Cuando ExtendedResourceSharing es TRUE, tiene más flexibilidad al especificar marcas de enlace para compartir recursos Texture2D. No solo el controlador de gráficos y el hardware admiten más marcas de enlace, sino también más combinaciones posibles de marcas de enlace. Por ejemplo, puede especificar solo D3D11_BIND_RENDER_TARGET o ninguna marca de enlace, etc.

 

Incluso si ID3D11Device::CheckFeatureSupport devuelve TRUE en ExtendedResourceSharing, todavía no puede compartir recursos creados con estas características y marcas:

Cambio de subrecursos con nuevas opciones de copia

Direct3D 11.1 permite usar nuevas marcas de copia para copiar y actualizar subrecursos. Al copiar un subrecurso, los recursos de origen y destino pueden ser idénticos y las regiones de origen y destino se pueden superponer.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Descartar recursos y vistas de recursos

Direct3D 11.1 permite descartar recursos y vistas de los recursos desde el contexto del dispositivo. Esta nueva funcionalidad informa a la GPU de que ya no se necesita contenido existente en recursos o vistas de recursos.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Compatibilidad con un mayor número de UAV

Direct3D 11.1 permite usar un mayor número de UAV al enlazar recursos a la fase de fusión de salida y al establecer una matriz de vistas para un recurso desordenado.

Direct3D 11.1 actualiza los métodos siguientes para esta característica.

Enlazar un subrango de un búfer de constantes a un sombreador

Direct3D 11.1 te permite enlazar un subrango de un búfer de constantes para que un sombreador tenga acceso. Puede proporcionar un búfer de constantes mayor y especificar el subrango que el sombreador puede usar.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Recuperar el subrango de un búfer de constantes enlazado a un sombreador

Direct3D 11.1 permite recuperar el subrango de un búfer de constantes enlazado a un sombreador.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Borrar todo o parte de una vista de recursos

Direct3D 11.1 te permite borrar una vista de recursos (RTV, UAV o cualquier vista de vídeo de una superficie Texture2D). Se aplica el mismo valor de color a todas las partes de la vista.

Esta característica de Direct3D 11.1 consta de la SIGUIENTE API.

Asignar SMV de búferes dinámicos con NO_OVERWRITE

Direct3D 11.1 permite asignar vistas de recursos del sombreador (SRV) de búferes dinámicos con D3D11_MAP_WRITE_NO_OVERWRITE. Los tiempos de ejecución de Direct3D 11 y anteriores limitan la asignación a los búferes de vértices o índices.

Direct3D 11.1 actualiza el método ID3D11DeviceContext::Map para esta característica.

Uso de UAV en cada fase de canalización

Direct3D 11.1 te permite usar las siguientes instrucciones del modelo de sombreador 5.0 en todas las fases del sombreador que se usaron anteriormente en sombreadores de píxeles y sombreadores de proceso.

Direct3D 11.1 actualiza los métodos siguientes para esta característica.

Estas instrucciones existían en Direct3D 11.0 en ps_5_0 y cs_5_0. Dado que Direct3D 11.1 hace que los UAV estén disponibles en todas las fases del sombreador, estas instrucciones están disponibles en todas las fases del sombreador.

Si pasa sombreadores compilados (VS/HS/DS/HS/HS) que usan cualquiera de estas instrucciones para una función de creación de sombreador, como CreateVertexShader, en dispositivos que no admiten UAVs en todas las fases (incluidos los controladores existentes que no se implementan con esta característica), se produce un error en la función create-shader. La función create-shader también produce un error si el sombreador intenta usar una ranura UAV más allá del conjunto de ranuras UAV que admite el hardware.

Las UAV a las que hacen referencia estas instrucciones se comparten en todas las fases de canalización. Por ejemplo, un UAV enlazado en la ranura 0 en la fase de fusión de salida está disponible en la ranura 0 a VS/HS/DS/GS/PS.

Los accesos UAV que emite desde dentro o entre las fases del sombreador que se ejecutan dentro de un draw*() determinado o que emite desde el sombreador de proceso dentro de un dispatch*() no se garantiza que finalicen en el orden en que los emitió. Pero todos los accesos UAV finalizan al final del Draw*() o Dispatch*().

Compatibilidad ampliada con dispositivos WARP

Direct3D 11.1 amplía la compatibilidad con dispositivos WARP , que se crean pasando D3D_DRIVER_TYPE_WARP en el parámetro DriverType de D3D11CreateDevice.

A partir de direct3D 11.1 los dispositivos WARP admiten:

  • Todos los niveles de características de Direct3D de 9.1 a 11.1
  • Sombreadores de proceso y teselación
  • Superficies compartidas. Es decir, puede compartir completamente superficies entre dispositivos WARP, así como entre dispositivos WARP en diferentes procesos.

Los dispositivos WARP no admiten estas características opcionales:

Al ejecutar una máquina virtual (VM), Hyper-V, con la unidad de procesamiento de gráficos (GPU) deshabilitada o sin un controlador de pantalla, se obtiene un dispositivo WARP cuyo nombre descriptivo es "Adaptador de pantalla básico de Microsoft". Este dispositivo WARP puede ejecutar la experiencia completa de Windows, que incluye aplicaciones DWM, Internet Explorer y la Tienda Windows. Este dispositivo WARP también admite la ejecución de aplicaciones heredadas que usan DirectDraw o aplicaciones que usan Direct3D 3 a Direct3D 11.1.

Usar Direct3D en procesos de sesión 0

A partir de Windows 8 y Windows Server 2012, puede usar la mayoría de las API de Direct3D en los procesos de sesión 0.

 

Compatibilidad con el búfer de sombras en el nivel de característica 9

Usa un subconjunto de características de búfer de sombras de Direct3D 10_0+ para implementar efectos de sombra en el nivel de característica 9_x. Para obtener información sobre lo que necesitas hacer para implementar efectos de sombra en el nivel de característica 9_x, consulta Implementación de búferes de sombras para el nivel de característica 9 de Direct3D.

Novedades de Direct3D 11