Usar datos de características de Direct3D 11 para complementar los niveles de características de Direct3D

Obtenga información sobre cómo comprobar la compatibilidad del dispositivo con características opcionales, incluidas las que se agregaron en versiones recientes de Windows.

Los niveles de características de Direct3D indican conjuntos bien definidos de funcionalidad de GPU que se corresponden aproximadamente con diferentes generaciones de hardware gráfico. Esto simplifica considerablemente la tarea de comprobar las capacidades de hardware y también proporciona una experiencia coherente en una amplia gama de dispositivos diferentes.

Para tener en cuenta parte de la varianza en diferentes implementaciones de hardware, incluido el hardware heredado, el hardware móvil y el hardware moderno, algunas características se consideran opcionales. La compatibilidad con estas características se puede determinar llamando a ID3D11Device::CheckFeatureSupport y proporcionando la estructura D3D11_FEATURE_DATA_* pertinente. En este tema se describen las distintas características opcionales de Direct3D 11, cómo algunas de ellas funcionan conjuntamente y cómo puedes evitar la comprobación de cada característica opcional.

Comprobación de la compatibilidad con características opcionales

Llame a ID3D11Device::CheckFeatureSupport, proporcionando la estructura que representa la característica opcional que desea usar. Si el método devuelve S_OK, significa que se encuentra en una versión del entorno de ejecución de Direct3D que admite la característica opcional. Si devuelve E_INVALIDARG, significa que está en una versión del entorno de ejecución de Direct3D 11 desde antes de agregar la característica opcional; esto significa que la característica opcional no está disponible, junto con otras características opcionales introducidas en la misma versión de Direct3D 11 o posterior.

¿Puedo minimizar el trabajo necesario para las comprobaciones de compatibilidad de características?

Además de tener el tiempo de ejecución adecuado de Direct3D 11 (normalmente asociado a una versión de Windows), el controlador de gráficos también debe ser lo suficientemente reciente como para admitir la característica opcional. Las especificaciones WDDM requieren que se admitan características opcionales si el hardware puede admitirlo. Por lo tanto, cuando un controlador de gráficos admite una de las características opcionales que se agregaron en una versión determinada de Windows, normalmente significa que el controlador de gráficos admite las demás características agregadas en esa versión de Windows. Por ejemplo, si un controlador de dispositivo admite sombras en el nivel de característica 9, sabe que el controlador de dispositivo es al menos WDDM 1.2.

Nota Si un dispositivo Microsoft Direct3D admite el nivel de característica 11.1, todas las características opcionales indicadas por D3D11_FEATURE_DATA_D3D11_OPTIONS se admiten automáticamente excepto SAD4ShaderInstructions y ExtendedDoublesShaderInstructions.

El tiempo de ejecución siempre establece las siguientes agrupaciones de miembros de forma idéntica. Es decir, todos los valores de una agrupación son TRUE o FALSE juntos:

  • DiscardAPIsSeenByDriver y FlagsForUpdateAndCopySeenByDriver
  • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting y MapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRV y MultisampleRTVWithForcedSampleCountOne

Opciones de nivel de característica 11.2 (D3D11_FEATURE_D3D11_OPTIONS1): Las características opcionales indicadas por este campo son independientes y deben comprobarse individualmente.

Compatibilidad con características en dispositivos Windows RT 8.1 y Windows Phone 8.1

Windows RT dispositivos de tableta pueden admitir una variedad de niveles de características y características opcionales, están optimizados para reducir el consumo de energía y usar gráficos integrados en lugar de GPU discretas. Las aplicaciones de la Tienda Windows para dispositivos ARM deben admitir el nivel de característica 9.1. Las aplicaciones de DirectX para Windows RT deben aprovechar las características opcionales que pueden ahorrar energía y ciclos , como la creación de instancias sencillas, cuando están disponibles.

Windows Phone 8 dispositivos móviles admiten el nivel de característica 9.3 con características opcionales específicas. Consulte Nivel de característica 9_3 de Direct3D para Windows Phone 8.

¿Cuáles son las características opcionales de Direct3D 11?

En el resto de este artículo se describen las características opcionales disponibles en Direct3D 11.2. Las características se describen en orden cronológico cuando se agregaron para que puedas tener una idea de qué características se encuentran en diferentes versiones de Direct3D 11.

Compatibilidad opcional del sombreador de proceso con el nivel de característica 10

La siguiente característica siempre está disponible para dispositivos de nivel de característica 10:

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS: si es TRUE, el dispositivo admite sombreadores de proceso. Esto incluye compatibilidad con búferes sin formato y estructurados.

Cuando el dispositivo de nivel de característica 10_0 o 10_1 admite esta característica, no se garantiza que el dispositivo admita el sombreador de proceso 4.1. Las aplicaciones deben estar preparadas para revertir a un sombreador de proceso 4.0 si ID3D11Device::CreateComputeShader produce una excepción con un programa de sombreador de proceso 4.1.

Funcionalidades opcionales para el nivel de característica 9

Las siguientes características se agregan para el nivel de característica 9 a partir de Windows 8:

D3D11_FEATURE_DATA_D3D9_OPTIONS: Indica compatibilidad con el direccionamiento de texturas de ajuste con texturas que no son de potencia de 2. Si se admite, D3D11_TEXTURE_ADDRESS_MODE_WRAP se pueden usar con estas texturas.

D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT: Indica compatibilidad con los muestradores de comparación en el nivel de característica del modelo de sombreador 4.0 9_x sombreadores. Esto se usa para realizar pruebas de profundidad en sombreadores de píxeles, lo que permite la compatibilidad con técnicas comunes, como la asignación de sombras y las galerías de símbolos.

Se agregó la siguiente característica para los dispositivos de nivel de característica 9 a partir de Windows 8.1:

D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT: Indica compatibilidad con características de creación de instancias sencillas que podrían estar disponibles en hardware de nivel 9 de DirectX. La creación de instancias sencillas significa que todos los miembros InstanceDataStepRate de las estructuras D3D11_INPUT_ELEMENT_DESC usadas para definir el diseño de entrada deben ser iguales a 1. Los dispositivos que admiten el nivel de característica 9.3 o superior ya incluyen compatibilidad completa para la creación de instancias.

Compatibilidad de precisión de punto flotante opcional para programas de sombreador

D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT: Los campos de esta estructura indican la longitud de los números de punto flotante cuando se habilita la precisión mínima o 0 si solo se admite la precisión de punto flotante de 32 bits completa.

Para los dispositivos de nivel de característica 9, la precisión mínima para el sombreador de vértices puede ser diferente del sombreador de píxeles. La precisión del sombreador de vértices se indica en el campo AllOtherShaderStagesMinPrecision .

D3D11_FEATURE_DATA_DOUBLES: Los dispositivos de nivel de característica 11 pueden admitir cálculos de precisión doble dentro de los programas del modelo de sombreador 5.0. La compatibilidad con cálculos de precisión doble dentro del sombreador significa que los valores flotantes se pueden convertir en dobles dentro del programa de sombreador de proceso, lo que proporciona la ventaja del cálculo de mayor precisión dentro de cada paso del sombreador. Los números de precisión doble se deben convertir de nuevo en floats antes de escribirse en el búfer de salida. Tenga en cuenta que no se admite necesariamente la división de precisión doble.

Funcionalidades adicionales para Direct3D 11.2

Direct3D 11.2 agrega cuatro características opcionales nuevas que pueden ser compatibles con dispositivos Direct3D 11. Estas características están en la estructura D3D11_FEATURE_DATA_D3D11_OPTIONS1 :

TiledResourcesTier: Indica la compatibilidad con los recursos en mosaico e indica el nivel de nivel admitido.

MinMaxFiltering: Indica compatibilidad con las opciones de filtrado D3D11_FILTER_MINIMUM_* y D3D11_FILTER_MAXIMUM_*, que comparan el resultado de filtrado con el valor mínimo (o máximo). Consulte D3D11_FILTER.

ClearViewAlsoSupportsDepthOnlyFormats: Indica compatibilidad para borrar las vistas de recursos del búfer de profundidad.

MapOnDefaultBuffers: Indica la compatibilidad con la asignación de búferes de destino de representación creados con la marca D3D11_USAGE_DEFAULT .

Representación basada en iconos

D3D11_FEATURE_DATA_ARCHITECTURE_INFO: Indica si el dispositivo gráfico realiza por lotes comandos de representación y realiza la representación basada en iconos de forma predeterminada. Esto se puede usar como sugerencia para la optimización del motor de gráficos.

Características opcionales para el desarrollo y la depuración

D3D11_FEATURE_DATA_D3D11_OPTIONS::D iscardAPIsSeenByDriver: Puede supervisar este miembro durante el desarrollo para descartar controladores heredados en hardware donde DiscardView y DiscardResource podrían haber sido beneficiosos.

D3D11_FEATURE_DATA_MARKER_SUPPORT: Esto se admite si el hardware y el controlador admiten el marcado de datos para la generación de perfiles de GPU.

Dispositivos