Suslik
> ты уверен, что это — вообще валидный барьер?
да, посмотри еще раз начало сообщения.
в документации разделяют операции на availability - изменения становятся доступны всем, то есть это запись из кэша в глобальную память, visibility - загрузка данных из глобальной памяти в кэш для чтения. Не имеет смысла только указывать *_READ для srcAccessMask.
Пока не читал статью, но вот по пайплайну сразу возникли вопросы.
Вроде же на Vulkan пайплайн теперь состоит всего из 2 шейдеров - task и tess(вроде)
NickGastovski
> Вроде же на Vulkan пайплайн теперь состоит всего из 2 шейдеров - task и
> tess(вроде)
только nvidia только NV
Сделал такой тест
vkCmdFillBuffer( ..., buffer, ... 0 ); // заполняем буфер нулями vkCmdPipelineBarrier( ... ); // так как запись после записи // заполняем буфер случайнами значениями, // пишем в storage buffer vkCmdDispatch( ... ); vkCmdPipelineBarrier( ... ); // так как чтение после записи // читаем из буфера и пишем в текстуру // тут один и тот же буфер используется как uniform buffer и storage buffer, // то есть 2 разных кэша vkCmdDispatch( ... );
После некоторых экспериментов я понял что драйверу вообще без разницы что я указываю в барьере, просто самого наличия барьера достаточно чтоб предотвратить распараллеливание, а кэши сами инвалидируются.
Тогда я просто закоментил второй барьер и получил такое:
Оба vkCmdDispatch выполняются параллельно, поэтому некоторые потоки читают данные после очистки, а некоторые уже новые данные, которые параллельно пишутся в другом шейдере, но никакой инвалидации кэша не требуется.
Это винда и нвидиа. Была надежда, что под линуксом на интеле драйвер более требовательный, так как раньше там были проблемы, когда стояли неправильные барьеры. Но и тут все работает и даже нету битых пикселей.
/A\
> а кэши сами инвалидируются.
запусти Radeon Profiler - узнаешь много интересного :)
innuendo
> запусти Radeon Profiler - узнаешь много интересного :)
у меня нет АМД
/A\
> у меня нет АМД
например для clearColor/Depth драйвер вставляет свой barrier, делает инвалидацию и флаш кешей
Тема в архиве.