Как известно, в D3D 10.0 нельзя копировать depth/stencil и MSAA ресурсы. В D3D 10.1 это ограничение было снято, но т. к. у меня не было доступа к этому железу, было неясно, насколько копирование быстрее инициализации стенсель-буфера. Я решил это выяснить и провёл несколько простых тестов. Я тестировал в двух разрешениях: 512x512 и 1024x1024, при 8xMSAA:
512x512:
Copy stencil: ~1390 fps
Init stencil: ~1800 fps
1024x1024:Как видно, копирование примерно на 25% медленнее инициализации. Т. е. несмотря на многократную смену stencil ref и sample mask, это быстрее, чем один вызов ::CopyResource(). Возможно, отставание в скорости происходит из-за того, что кроме stencil копируется и depth буфер, тогда как при инициализации запись происходит только в stencil (DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO). Т. е. в инициализации всего один шаг:
Copy stencil: ~390 fps
Init stencil: ~512 fps
1) Write stencil.
При копировании:
1) Read depth.
2) Read stencil.
3) Write depth.
4) Write stencil.
Комментариев нет:
Отправить комментарий