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

Vulkan API (вышел!) (474 стр)

Страницы: 1473 474 475 476486 Следующая »
#7095
15:52, 11 авг. 2020

HolyDel
> покажи код отправки в первый компьют шейдер
он по движку размазан, я могу что-то более конкретное скопировать

> первый же кадр молчало.
в первом кадре передается только что созданная текстура, где initialLayout == UNDEFINED. получается, UNDEFINED, типа, можно.

> вообще не похоже на баг слоев валидации
у меня похожие баги бывают только если я путаю текстуры или номера слоев, биндя их в дескритпорсеты. сам механизм отправки и выставления барьеров уже достаточно отточен и давно не глючил.

если еще несколько этапов по работе с этими слоями добавить (сглаживание по x из 0 в 1, и сглаживание по y из 1 в 0 также в компьют шейдерах), то лезет

For VkImage 0x71d474000000014a[] you cannot transition the layout of aspect=1 level=0 layer=1 from VK_IMAGE_LAYOUT_GENERAL when the previous known layout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL. The Vulkan spec states: oldLayout must be VK_IMAGE_LAYOUT_UNDEFINED or the current layout of the image subresources affected by the barrier (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html… dLayout-01197);

я пока вообще не понял к чему это. ни какой смены queue family нет, как тут, например: https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/1919


#7096
(Правка: 16:21) 15:58, 11 авг. 2020

BingoBongo
чот ты меня еще больше запутал. у тебя есть два в текстуре слоя. изначально они оба в Undefined.
1 кадр
ты pipelinebarrier-ом переводишь первый слой из Undefined в General - ok
ты pipelinebarrier-ом переводишь оба слоя из Undefined в read optimal - ok
2 кадр
ты pipelinebarrier-ом переводишь первый слой из Undefined в General - должно быть ok, но не ок, так?
ты pipelinebarrier-ом переводишь оба слоя из Undefined в read optimal - ok

или тебе содержимое прошлого кадра нужно и тебе важно перевести именно с текущего лэйаута?
попробуй перевести оба слоя отдельно двумя барьерами.

>получается, UNDEFINED, типа, можно.
да UNDEFINED можно по спецификации. но содержимое может затереться.

#7097
(Правка: 16:23) 16:22, 11 авг. 2020

HolyDel

первый кадр:

шейдер 1:
bind слой 0: UNDEFINED -> GENERAL
слой 1: UNDEFINED

шейдер 2:
bind слой 0: GENERAL-> READ_ONLY_OPTIMAL
bind слой 1: UNDEFINED -> READ_ONLY_OPTIMAL

остальные кадры:

шейдер 1:
bind слой 0: READ_ONLY_OPTIMAL -> GENERAL
слой 1: READ_ONLY_OPTIMAL  (вот на него ругается)

шейдер 2:
bind слой 0: GENERAL -> READ_ONLY_OPTIMAL
bind слой 1: READ_ONLY_OPTIMAL

т.е. получается, что второй слой один раз перевелся в READ_ONLY_OPTIMAL и больше не трогается (в нем без остальных шейдеров, которые я отключил для дебага, как бы нет смысла).

> попробуй перевести оба слоя отдельно двумя барьерами.
ошибка пропала. походу у меня механизм объединения барьеров при переводе разных слоев тупит, там переводится второй слой, который итак уже переведен.

#7098
16:44, 11 авг. 2020

BingoBongo
В рендердоке можно посмотреть список всех барьеров для ресурса за кадр. Либо залогировать. Иначе сложно разбираться, где там что не так поставилось.

#7099
16:54, 11 авг. 2020

/A\
> В рендердоке можно посмотреть список всех барьеров для ресурса за кадр
с графами с нодами как в gpuopen или просто найти элемент и потыкать мышкой состояния? если второе, то это не легче чем напрямую подебажить. по крайней мере, в моем случае.

#7100
22:22, 11 авг. 2020

BingoBongo
Render Pass проверь, они тоже могу layout менять. или у тебя эти Image только в compute ?

#7101
23:20, 11 авг. 2020

Andrey
> Render Pass проверь, они тоже могу layout менять. или у тебя эти Image только в compute ?
в таком случае не помогло бы разбиение на два барьера.

#7102
(Правка: 13:18) 13:16, 15 авг. 2020

запилил динамическую подгрузку текстур (partial residency textures).
первая штука, которую на вулкане оказалась реализовать легче, чем на OpenGL.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#7103
13:42, 15 авг. 2020

HolyDel

Вы просто не умеете его готовить.
#7104
17:02, 17 авг. 2020

А что сейчас принято использовать для HLSL под вулкан? DXC весит 20мб, а glslang вроде не особо то поддерживает свежие версии.

#7105
20:48, 17 авг. 2020

/A\
> А что сейчас принято использовать для HLSL под вулкан? DXC весит 20мб, а
> glslang вроде не особо то поддерживает свежие версии.
Вообще модно использовать DXC. Ну и сам подумай HLSL это PS4,XBox,PC - windows/Unix, Android + Vulkan.
Я встретил Только в Wolfenstain glslang(наверное в Doom тоже будет), все остальные проекты используют DXC(Rage 2 да и многие другие)
>DXC весит 20мб
не вижу тут проблем.
>а glslang вроде не особо то поддерживает свежие версии.
что именно не поддерживается?
И с чего ты решили использовать HLSL ?

#7106
21:05, 17 авг. 2020

Andrey
> Ну и сам подумай HLSL это PS4,XBox,PC - windows/Unix, Android + Vulkan.

опять как в добрые старые времена  :)

#7107
21:09, 17 авг. 2020

Andrey
> И с чего ты решили использовать HLSL ?
надо для совместимости с дх, никакой радости от hlsl я не испытываю)

> что именно не поддерживается?
Ну пишут что поддержка hlsl это legacy, так что рано или поздно совсем забросят, да и смысла нет в glslang поддерживать hlsl, если уже есть реализация от майкрософт.
У нвидии в сэмплах много на hlsl + dxc.

#7108
6:43, 18 авг. 2020

/A\
> А что сейчас принято использовать для HLSL под вулкан
У нас DXC, линкуем статически

#7109
(Правка: 11:04) 11:04, 18 авг. 2020

Жалко конечно, что как ни старайся, а Vulkan API превращается либо в OpenGL, либо в гибрид DirectX 12 и DirectX 11... сейчас Vulkan однозначно стал быстрее только DirectX 11, но DirectX 12 всё еще лидирует… и то, потому что над DirectX 11 уже никто особо не старается, а Khronos поглотила все функции DirectX 11 в свой Vulkan API, причем полностью… недавно скандал был, что вышел DirectX 11 on Vulkan.

Страницы: 1473 474 475 476486 Следующая »
ПрограммированиеФорумГрафика