Controle de risco versus recursos de pool de blocos
Para recursos não lado a lado, o Direct3D pode evitar determinadas condições de risco durante a renderização, mas como o rastreamento de risco estaria em um nível de bloco para recursos lado a lado, o acompanhamento de condições de risco durante a renderização de recursos lado a lado pode ser muito caro.
Por exemplo, para recursos não lado a lado, o runtime não permite que nenhum SubResource especificado seja associado como uma entrada (como um ShaderResourceView) e como uma saída (como um RenderTargetView) ao mesmo tempo. Se esse caso for encontrado, o runtime desassocia a entrada. Essa sobrecarga de acompanhamento no runtime é barata e é feita no nível de SubResource. Um dos benefícios dessa sobrecarga de rastreamento é minimizar as chances de aplicativos acidentalmente dependendo da ordem de execução do sombreador de hardware. A ordem de execução do sombreador de hardware pode variar se não estiver em uma determinada unidade de processamento gráfico (GPU), então certamente entre GPUs diferentes.
Acompanhar como os recursos são associados pode ser muito caro para recursos lado a lado porque o rastreamento está em um nível de bloco. Novos problemas surgem, como possivelmente validar tentativas de renderização em um RenderTargetView com um bloco mapeado para várias áreas na superfície simultaneamente. Se acontecer desse controle de risco por bloco ser muito caro para o tempo de execução, idealmente ele seria pelo menos uma opção na camada de depuração.
Um aplicativo deve informar o driver de exibição quando ele tiver emitido uma operação de gravação ou leitura para um recurso lado a lado que faça referência à memória do pool de blocos que também será referenciada por recursos separados em blocos em operações futuras de leitura ou gravação que espera que a primeira operação seja concluída antes que as operações a seguir possam começar. Para obter mais informações sobre essa condição, consulte Comentários de ID3D11DeviceContext2::TiledResourceBarrier .
Tópicos relacionados