Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Alguma informação relaciona-se com um produto pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.
Este artigo descreve as alterações que estão a ser feitas no IddCx 1.11. Um único binário de driver de exibição indireto (IDD) construído com base no IddCx 1.11 pode executar no Windows 10 1803 e superiores, usando verificações de tempo de execução para confirmar se as alterações de DDI no IddCx 1.11 estão disponíveis nesse sistema. Para mais informações, consulte Construir um driver WDF para múltiplas versões do Windows.
As alterações do IddCx 1.11 enquadram-se nas seguintes categorias:
- Atualize a versão IddCxGetVersion (consola e remoto). Para uma lista completa de informações de versões relacionadas com IddCx, consulte versões IddCx.
- Adicionar a possibilidade de consultar o suporte a funcionalidades do sistema operativo.
- Adicionar suporte para usar a API D3D12.
- Adicionar um novo I2C DDI de leitura/escrita atómica.
- Adicionar suporte apenas para descritores DisplayID.
- Adicionar suporte para atualizar a contagem estática de recodificação do ambiente de trabalho.
Atualizar a versão IddCxGetVersion
O valor devolvido pelo IddCxGetVersion foi atualizado para devolver 0x1B00.
Consulta de suporte de funcionalidades do sistema operativo
Os drivers têm agora a capacidade de determinar se uma determinada funcionalidade do IddCx 1.11 está disponível no sistema operativo subjacente, chamando IddCxCheckOsFeatureSupport. Várias versões do sistema operativo podem reportar suporte para IddCx 1.11 através do IddCxGetVersion, mas possivelmente apenas algumas das funcionalidades estarão disponíveis.
Suporte ao D3D12
Os drivers IddCx 1.11 que suportam D3D12 podem associar um objeto ID3D12Device a uma swapchain e receber objetos ID3D12Resource através de chamadas para IddCxSwapChainReleaseAndAcquireBuffer2. Uma visão geral das alterações relacionadas é apresentada nas secções seguintes.
Associar um dispositivo D3D12 a uma swapchain
Se um driver quiser receber tramas D3D12, então um objeto ID3D12Device deve ser fornecido numa chamada para IddCxSwapChainSetDevice2.
Receção de quadros D3D12
Depois de um driver ter chamado IddCxSwapChainSetDevice2 e fornecido um objeto ID3D12Device, IDARG_OUT_RELEASEANDACQUIREBUFFER2 passada para chamadas a IddCxSwapChainReleaseAndAcquireBuffer2 terá a flag IDDCX_METADATA2_VALID_FLAGS_D3D12SURFACE definida e o driver deverá usar IDARG_OUT_RELEASEANDACQUIREBUFFER2.MetaData.pD3d12Surface para aceder aos dados do pixel.
Sincronização do acesso às superfícies D3D12
Uma alteração significativa quando um driver utiliza D3D12 é o modelo de sincronização que controla o acesso às superfícies da cadeia de troca e evita problemas como bloqueios e acesso a dados de píxeis desatualizados. Devido ao controlo mais detalhado que o D3D12 utiliza, os drivers precisam de indicar explicitamente ao sistema operativo qual a fila de comandos que vai usar a superfície como dados de entrada.
Mais detalhes sobre as responsabilidades do driver relativamente à sincronização são fornecidos nas observações de adições IDDCX_METADATA2 .
O suporte a Atomic I2C
Um driver 1.11 que suporta I2C fornecendo os EVT_IDD_CX_MONITOR_I2C_RECEIVE e EVT_IDD_CX_MONITOR_I2C_TRANSMIT DDIs deve também fornecer EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE. Este novo DDI realiza uma operação I2C numa única chamada para ajudar os condutores que realizam as suas próprias operações I2C a não intercalarem com as chamadas do sistema operativo.
Observação
Os drivers que fornecem o novo DDI não devem assumir que os DDIs existentes deixarão de ser utilizados.
Suporte exclusivamente a descritores DisplayID
Um novo tipo de descritor, IDDCX_MONITOR_DESCRIPTION_TYPE_DISPLAYID, foi adicionado à enumeração IDDCX_MONITOR_DESCRIPTION_TYPE usada nos argumentos passados para IddCxMonitorCreate e IddCxMonitorCreate2. Isto deve ser usado quando o descritor fornecido contém apenas um descritor DisplayID e nenhum bloco EDID.
Atualização da contagem estática de recodificação do ambiente de trabalho
Atualmente, a contagem estática de recodificação do ambiente de trabalho é especificada ao criar um adaptador. Um novo DDI permite agora que este valor seja atualizado numa cadeia de troca após a criação do adaptador.
Suportar um driver 1.11 em versão inferior
Se um driver 1.11 for para correr em versões mais antigas do Windows, há passos que precisa de seguir para garantir a compatibilidade.
- O driver deve definir o tamanho da estrutura IDD_CX_CLIENT_CONFIG usando a macro IDD_CX_CLIENT_CONFIG_INIT .
- O condutor não deve definir nenhuma das novas bandeiras adicionadas a IDDCX_ADAPTER_FLAGS.
- O driver não pode tentar chamar novas funções fornecidas pelo sistema operativo, pois não estão disponíveis. IDD_IS_FUNCTION_AVAILABLE pode ser usado para verificar.
- Nenhuma das novas funções pode ser exportada. Os drivers podem usar a macro IDD_IS_FIELD_AVAILABLE para verificar se o callback EvtIddXxx deve ser escrito na estrutura IDD_CX_CLIENT_CONFIG .
- Mesmo que o sistema operativo devolva 0x1B00 de uma chamada para IddCxGetVersion, o driver deve verificar o suporte para funcionalidades específicas chamando IddCxCheckOsFeatureSupport.
O exemplo seguinte mostra como IDD_IS_FIELD_AVAILABLE pode ser utilizado:
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxMonitorI2CTransmitAndReceive))
{
IddCxClientConfig.EvtIddCxMonitorI2CTransmitAndReceive = MonitorI2CTransmitAndReceive;
}
Para mais informações, consulte Construção de drivers IddCx 1.4.
Que funções são usadas
| Funcionalidade IddCx 1.11 | O novo sistema operativo de funções exige adaptadores 1.11 | Equivalente anterior |
|---|---|---|
| Atomic I2C | EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE | EVT_IDD_CX_MONITOR_I2C_TRANSMIT e EVT_IDD_CX_MONITOR_I2C_RECEIVE |
| Funcionalidade IddCx 1.11 | Novas funções que um condutor deve chamar | Equivalente anterior |
|---|---|---|
| D3D12 | IddCxSwapChainSetDevice2 | IddCxSwapChainSetDevice |
| Atualizar a contagem de recodificação | IddCxSwapChainUpdateStaticDesktopReencodeFrameCount | N/A |
Versões anteriores
Para informações sobre alterações em versões anteriores do IddCx, consulte os seguintes artigos:
- Atualizações para IddCx versões 1.10 e posteriores
- Atualizações para as versões 1.9 e posteriores do IddCx
- Atualizações para IddCx versões 1.8 e posteriores
- Atualizações para as versões 1.7 e posteriores do IddCx
- Atualizações para IddCx versões 1.6 e posteriores
- Atualizações para as versões 1.4 e posteriores do IddCx