Войти
ПрограммированиеФорумГрафика

Синхронизации в Vulkan (комментарии) (3 стр)

Страницы: 1 2 3
#30
8:46, 28 фев. 2019

Suslik
> ты уверен, что это — вообще валидный барьер?
да, посмотри еще раз начало сообщения.
в документации разделяют операции на availability - изменения становятся доступны всем, то есть это запись из кэша в глобальную память, visibility - загрузка данных из глобальной памяти в кэш для чтения. Не имеет смысла только указывать *_READ для srcAccessMask.

#31
10:15, 28 фев. 2019

Пока не читал статью, но вот по пайплайну сразу возникли вопросы.
Вроде же на Vulkan пайплайн теперь состоит всего из 2 шейдеров - task и tess(вроде)

#32
11:07, 28 фев. 2019

NickGastovski
> Вроде же на Vulkan пайплайн теперь состоит всего из 2 шейдеров - task и
> tess(вроде)

только nvidia только NV

#33
(Правка: 23:54) 23:04, 28 фев. 2019

Сделал такой тест

vkCmdFillBuffer( ..., buffer, ... 0 ); // заполняем буфер нулями
vkCmdPipelineBarrier( ... );  // так как запись после записи

// заполняем буфер случайнами значениями,
// пишем в storage buffer
vkCmdDispatch( ... );

vkCmdPipelineBarrier( ... );  // так как чтение после записи

// читаем из буфера и пишем в текстуру
// тут один и тот же буфер используется как uniform buffer и storage buffer,
// то есть 2 разных кэша
vkCmdDispatch( ... );

После некоторых экспериментов я понял что драйверу вообще без разницы что я указываю в барьере, просто самого наличия барьера достаточно чтоб предотвратить распараллеливание, а кэши сами инвалидируются.
Тогда я просто закоментил второй барьер и получил такое:
parallel read write | Синхронизации в Vulkan (комментарии)
Оба vkCmdDispatch выполняются параллельно, поэтому некоторые потоки читают данные после очистки, а некоторые уже новые данные, которые параллельно пишутся в другом шейдере, но никакой инвалидации кэша не требуется.
Это винда и нвидиа. Была надежда, что под линуксом на интеле драйвер более требовательный, так как раньше там были проблемы, когда стояли неправильные барьеры. Но и тут все работает и даже нету битых пикселей.

#34
23:31, 28 фев. 2019

/A\
> а кэши сами инвалидируются.

запусти Radeon Profiler - узнаешь много интересного :)

#35
23:53, 28 фев. 2019

innuendo
> запусти Radeon Profiler - узнаешь много интересного :)
у меня нет АМД

#36
(Правка: 1 мар. 2019, 0:00) 23:58, 28 фев. 2019

/A\
> у меня нет АМД

например для clearColor/Depth драйвер вставляет свой barrier, делает инвалидацию и флаш кешей

rp | Синхронизации в Vulkan (комментарии)
Страницы: 1 2 3
ПрограммированиеФорумГрафика