Отслеживание рисков и ресурсы пула плиток
Для ресурсов, не являющихся плитками, Direct3D может предотвратить определенные опасные условия во время отрисовки, но так как отслеживание опасности будет выполняться на уровне плитки для мозаичного ресурса, отслеживание опасных условий во время отрисовки ресурсов с плитками может быть слишком затратным.
Например, для ресурсов, не являющихся плитками, среда выполнения не разрешает привязку заданного subResource в качестве входных данных (например, ShaderResourceView) и в качестве выходных данных (например, RenderTargetView) одновременно. В таком случае среда выполнения отменяет привязку входных данных. Эти затраты на отслеживание в среде выполнения являются дешевыми и выполняются на уровне SubResource. Одно из преимуществ этих служебных данных отслеживания заключается в максимальном сокращении вероятности случайной зависимости приложений от порядка выполнения аппаратных шейдеров. Порядок выполнения аппаратных шейдеров может меняться если и не на определенном графическом процессоре (GPU), то определенно на разных графических процессорах.
Отслеживание привязки ресурсов может оказаться слишком дорогостоящим для ресурсов с плитками, так как отслеживание выполняется на уровне плитки. Возникают новые проблемы, такие как, возможно, проверка попыток отрисовки в RenderTargetView с одной плиткой, сопоставленной с несколькими областями в поверхности одновременно. Если такое отслеживание рисков по плиткам окажется слишком требовательным для среды выполнения, его следовало бы использовать хотя бы на уровне отладки.
Приложение должно сообщить драйверу дисплея, когда он выполнил операцию записи или чтения для мозаичного ресурса, который ссылается на память пула плиток, на которую также будут ссылаться отдельные ресурсы с плитками в предстоящих операциях чтения или записи, что ожидается, что первая операция будет завершена до начала следующих операций. Дополнительные сведения об этом условии см. в разделе ПРИмечания ID3D11DeviceContext2::TiledResourceBarrier .
Связанные темы