суббота, 2 февраля 2019 г.

Фичи и баги в Vulkan

1. Pipeline barrier'ы которые можно не ставить.
  Однажды закоментил все барьеры и забыл про это, тесты на винде выполнялись на NVidia и Intel, но вот все тесты под линуксом на Intel выдавали ошибку. Оказалось, что драйвера под линукс более строго следят за инвалидацией кэша.

2. Async compute.
  Разбил рисование на две очереди: graphics и compute, но не придумал как сделать синхронизацию между кадрами, решил оставить это на потом, так как на моей GTX1070 и так работает. А вот на RTX2080 получил race condition и битую картинку.

3. Повисание на создании пайплайна.
  Сделал запись трейса шейдера, чтоб можно было его дебажить. Сначала все работало, но потом я сделал более детальный трейс и обновил драйвера, что-то из этого привело к повисанию при создании пайплайна с очень тяжелым шейдером, например рейтрейсом с шейдертоя.

4. Падение на рейтрейсе.
  Опять проблема с трейсом шейдера для отладки. При записи в ray-gen шейдере получил device lost. Причем небольшие изменения в шейдере и все снова работает, а потом изменения в либе, которая добавляет запись в трейс, и снова падает.

5. Глючный андроид.
  Никак не мог понять почему не создается инстанс на андроиде, выдает ошибку что слой валидации не поддерживается, но я не указал вообще ни одного слоя. Зато после перезагрузки телефона все запустилось.

1 комментарий:

  1. " Разбил рисование на две очереди: graphics и compute, но не придумал как сделать синхронизацию между кадрами" - как раз думаю об этом. Может быть поставить fence с каким-то разумным лимитом ожидания типа 1/60сек

    ОтветитьУдалить