Melhorias de desempenho de renderização do Direct3D
Os drivers WDDM (Modelo de Driver de Exibição do Windows) 1.3 e posteriores podem dar suporte a melhorias de desempenho de renderização do Microsoft Direct3D que permitem que o hardware direct3D 9 faça melhor uso de buffers e contadores de comando de hardware e faça cópias eficientes da memória do sistema para sub-recursos. Esses recursos, que espelho alguns dos recursos disponíveis para hardware direct3D versão 10, são novos começando com Windows 8.1.
Novos recursos do Direct3D 11.1 e melhorias de desempenho padrão do mapa também estão disponíveis. O cenário padrão do mapa é descrito na seção Alterações de comportamento abaixo.
Referência de desempenho de renderização
Esta seção de referência descreve as DDIs (interfaces de driver de dispositivo) do modo de usuário.
Funções de desempenho de renderização direct3D implementadas pelo driver de modo de usuário
Esta seção contém funções que um driver de exibição WDDM (Modelo de Driver de Exibição do Windows) 1.3 e posterior implementa para dar suporte a melhorias no desempenho de renderização do Microsoft Direct3D.
PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO
PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP
Enumerações e estruturas de desempenho de renderização direct3D
Essas estruturas e enumerações do modo de usuário dão suporte a melhorias de desempenho de renderização e são novas ou atualizadas para Windows 8.1. Todos se aplicam a drivers direct3D nível 9, exceto para D3D11_1_DDI_FLUSH_FLAGS.
- D3DDDI_FLUSH_FLAGS (novo)
- D3DDDIARG_COPYFLAGS (novo)
- D3DDDIARG_COUNTER_INFO (novo)
- D3DDDIARG_UPDATESUBRESOURCEUP (novo)
- D3DDDICAPS_SIMPLE_INSTANCING_SUPPORT (novo)
- Os drivers CreateResource2 (WDDM 1.3 e posteriores do Direct3D Nível 9 deverão retornar o código de erro E_INVALIDARG se o valor do sinalizador CaptureBuffer estiver definido)
- D3D11_1_DDI_FLUSH_FLAGS (constante D3DWDDM1_3DDI_TRIM_MEMORY adicionada)
- D3DDDI_DEVICEFUNCS (membros pfnFlush1, pfnCheckCounterInfo, pfnCheckCounter, pfnUpdateSubresourceUP adicionados)
- D3DDDI_POOL (constante D3DDDIPOOL_STAGINGMEM adicionada)
- D3DDDICAPS_TYPE (constante D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT adicionada)
- GetCaps (novas informações em Comentários)
Requisitos de implementação de DDI começando com o WDDM 1.3
A partir do WDDM 1.3, as funções a seguir são necessárias ou opcionais para que os drivers do modo de usuário implementem.
Grupo de funções | Descrição |
---|---|
Funções do Direct3D 9 que são opcionais antes do WDDM 1.3. Agora é necessário: |
|
Funções do Direct3D 9 que estão disponíveis a partir do WDDM 1.3. Um driver deve implementar todas essas funções ou nenhuma delas: |
|
Quando o WDDM 1.3 e funções opcionais posteriores imediatamente acima são implementados, essas funções têm alterações de comportamento associadas: |
Esses cenários se aplicam quando GetCaps é chamado:
|
Essas funções do Direct3D 11 têm alterações de comportamento associadas: |
|
Alterações de comportamento para chamadas para funções de criação, mapa e unmap de recursos
Para essas funções implementadas por drivers WDDM 1.3 e posteriores, o runtime do Direct3D fornece um conjunto restrito de valores de entrada para o cenário padrão do mapa. Esses valores restritos se aplicam somente a drivers que dão suporte ao nível de recurso 11.1 e posterior.
Esses membros da estrutura de D3D11DDIARG_CREATERESOURCE de entrada são restritos:
Membro | Descrição |
---|---|
ResourceDimension e Usage |
Essas alterações de comportamento só se aplicam quando o runtime do Direct3D fornece o tipo D3D10DDIRESOURCE_BUFFER para ResourceDimension e digite D3D10_DDI_USAGE_DEFAULT for Usage. |
BindFlags |
O runtime do Direct3D define apenas os valores D3D10_DDI_BIND_SHADER_RESOURCE e D3D11_DDI_BIND_UNORDERED_ACCESS . |
MapFlags |
Se todos os outros requisitos de membro listados aqui forem atendidos, o runtime poderá definir valores D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE e D3D10_DDI_MAP_READWRITE . O driver deve dar suporte a esses valores. Os valores de D3D10_DDI_MAP_WRITE_DISCARD e D3D10_DDI_MAP_WRITE_NOOVERWRITE são inválidos. |
MiscFlags |
O runtime define apenas os valores D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS e D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED . |
Formato |
O runtime define apenas o valor DXGI_FORMAT_UNKNOWN . |
SampleDesc |
O runtime define o DXGI_SAMPLE_DESC. Conte membro como 1 e o membro Quality como zero. |
MipLevels |
O runtime define o valor como 1. |
ArraySize |
O runtime define o valor como 1. |
pPrimaryDesc |
O runtime define o valor como NULL. |
Esses parâmetros de entrada para ResourceMap são restritos:
Parâmetro | Descrição |
---|---|
hResource |
O runtime do Direct3D define apenas um recurso D3D10DDIRESOURCE_BUFFER quando um valor diferente de zero para MapFlags é definido na chamada de criação para CreateResource(D3D11). |
O runtime define apenas o valor DXGI_FORMAT_UNKNOWN . |
|
Sub-recurso |
O runtime define apenas o valor como 0. |
DDIMap |
Se todos os outros requisitos de membro listados aqui forem atendidos, o runtime poderá definir valores D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE ou D3D10_DDI_MAP_READWRITE , correspondendo ao valor MapFlags definido na chamada de criação para CreateResource(D3D11). |
Sinalizadores |
Embora o valor de entrada do runtime não seja restrito, o driver deve ser capaz de dar suporte ao valor D3D10_DDI_MAP_FLAG_DONOTWAIT . |
pMappedSubResource |
Embora o valor de entrada do runtime não seja restrito, o driver deve atribuir um ponteiro válido em cache de CPU ao D3D10DDI_MAPPED_SUBRESOURCE. membro pData e deve definir o RowPitch e o DepthPitch para corresponder ao tamanho do buffer e aos dados fornecidos no pData. |
Esses parâmetros de entrada para ResourceUnmap são restritos:
Parâmetro | Descrição |
---|---|
hDevice |
Embora o valor de entrada do runtime do Direct3D não seja restrito, o valor que corresponde ao valor hDevice da chamada resourceMap original. |
hResource |
O runtime define apenas um recurso D3D10DDIRESOURCE_BUFFER quando um valor diferente de zero para MapFlags é definido na chamada de criação para CreateResource(D3D11). |
Sub-recurso |
O runtime define apenas o valor como 0. |