Войти
ФлеймФорумПрограммирование

Почему GAPI стали такими сложными? (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
(Правка: 6:34) 6:33, 17 дек. 2018

/A\
> а сейчас интеловский драйвер вообще крэшится и всем похрен
у меня как раз Интел UHD 630. Есть ли пример кода с крэшем?


#16
6:41, 17 дек. 2018

skalogryz
> Есть ли пример кода с крэшем?
У меня падают все мои сэмплы и сэмплы от Саши.
Драйвер обновил примерно месяц назад, тогда и начались крэши, вчера снова обновил и ничего не изменилось.

#17
6:47, 17 дек. 2018

NuclearMissileDetect
Когда-то давным давно GPU были достаточно слабенькие, и способ работы с ними не играл роли, т.к. ботлнек был в растеризации треугольников. Да и в саму обработку треугольников особо и добавить ничего нельзя было, потому что GPU был слаааабенький.
Потом GPU стал мощнее -> появилась возможность что-то добавить в растеризацию -> появиась возможность писать шейдеры
Потом GPU стал еще мощнее -> даже написанные шейдеры отрабатывали быстро -> понадобилось тянуть стейты пайплайна наружу, делать 100500 разных способов обновления ресурсов, и все только ради того, чтобы CPU успевал отдавать команды GPU на отрисовку
Но GPU стал еще мощнее, а CPU по прежнему плохо справляется с отдачей команд -> понадобилось вытащить примитивы синхронизации и буфера команд, чтобы разгрузить CPU
Так что основной ботлнек тут - дохлый, ни на что не способный CPU. Из-за него GAPI стал вот таким вот монстром.

#18
(Правка: 7:28) 7:16, 17 дек. 2018

Great V.
> Т.е. если делать как попало - то сложность низкая вне зависимости от АПИ
это ложное впечатление. на вулкане просто сделать как попало вывод спрайтиков для двумерной игры займёт как минимум раз в 10 больше кода, чем то же самое на opengl. потому что тебе в любом случае надо как попало создать логический девайс, как попало подключить его к физическому, как попало создать какой попало свопчейн, как попало привязать его к очередям команд, как попало загрузить данные в стейджинг буфер своих текстур, как попало их скопировать на девайс, сделать какие попало дескриптор сеты с какими попало лэйаутами, сделать какой угодно самый убогий рендерпасс с одним сабпассом, сделать какой попало пайплайн на который забайндить как попало загруженный буфер вершин, сделать какую попало синхронизацию из двух самых простых семафоров и одного фенса, как попало засабмитить свой какой попало командный буфер и так далее и так далее. при этом каждое это "как попало создать" — как минимум 5-10 строчек системных вызовов инициализации. и это всё — вовсе не опциональные фишечки, которые нужны для низкоуровневой оптимизации, это — необходимый минимум, без которого вообще ничего рендерить не получится. то же самое на opengl я могу легко уложить на экран кода.

если ты думаешь, что я тут для красного словца преувеличиваю, то вот самый простой пример вывода двух квадов с текстурой на вулкане, примерно 1.5к строк:
https://vulkan-tutorial.com/code/26_depth_buffering.cpp

а вот — аналогичный по функциональности пример на opengl, 200 строк, из которых половина — комментарии:
https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_sta… _combined.cpp

#19
(Правка: 7:22) 7:22, 17 дек. 2018

/A\
> У меня падают все мои сэмплы и сэмплы от Саши.
> Драйвер обновил примерно месяц назад, тогда и начались крэши, вчера снова
> обновил и ничего не изменилось.
Где б сэмплы посмотреть? и что у тебя за видюха?

у меня Doom идёт в режиме Vulkan, без проблем.
(отличия от OpenGL 4.5 в FPS никакого - 30-40)

#20
8:03, 17 дек. 2018

skalogryz
> Где б сэмплы посмотреть?
тут:
https://github.com/azhirnov/FrameGraph
https://github.com/SaschaWillems/Vulkan

> и что у тебя за видюха?
У меня ноут с UHD 630 и GTX 1070

#21
8:38, 17 дек. 2018

Очень напрягает в новых эйпи то, что для изменения стейтов нужно создавать сущности на все случаи жизни.
Уж не знаю на сколько такая орхитектура дает выигрыш по производительности.

#22
8:41, 17 дек. 2018

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

#23
8:52, 17 дек. 2018
Suslik
> это ложное впечатление. на вулкане просто сделать как попало вывод спрайтиков
> для двумерной игры займёт как минимум раз в 10 больше кода, чем то же самое на
> opengl. потому что тебе в любом случае надо как попало создать логический
> девайс, как попало подключить его к физическому, как попало создать какой
> попало свопчейн, как попало привязать его к очередям команд, как попало
> загрузить данные в стейджинг буфер своих текстур, как попало их скопировать на
> девайс, сделать какие попало дескриптор сеты с какими попало лэйаутами, сделать
> какой угодно самый убогий рендерпасс с одним сабпассом, сделать какой попало
> пайплайн на который забайндить как попало загруженный буфер вершин, сделать
> какую попало синхронизацию из двух самых простых семафоров и одного фенса, как
> попало засабмитить свой какой попало командный буфер и так далее и так далее.
> при этом каждое это "как попало создать" — как минимум 5-10 строчек системных
> вызовов инициализации. и это всё — вовсе не опциональные фишечки, которые нужны
> для низкоуровневой оптимизации, это — необходимый минимум, без которого вообще
> ничего рендерить не получится. то же самое на opengl я могу легко уложить на
> экран кода.
Звучит достаточно просто. Не знаю с чем там могут возникнуть сложности.
#24
9:07, 17 дек. 2018

nes
> Очень напрягает в новых эйпи то, что для изменения стейтов нужно создавать
> сущности на все случаи жизни.

как так ? тебе один нефанат GL сказал что это очень гибко :)

#25
9:09, 17 дек. 2018

/A\
> Недавно была новость, что разработчики из самсунга оптимизировали рендер UE,
> вроде даже под какую-то игру. Получается даже в крупных кампаниях не осилили
> оптимизацию.

оптимизиция под конкретный случай ?

#26
(Правка: 9:11) 9:10, 17 дек. 2018

Alprog
Dx11 и OpenGL не депрекейтед. Там все высокоуровнево.

#27
(Правка: 9:11) 9:11, 17 дек. 2018

*Lain*
>Dx11
>Там все высокоуровнево.
Лунного сахару объелся, сэра?

#28
9:11, 17 дек. 2018

MrShoor
> Но GPU стал еще мощнее, а CPU по прежнему плохо справляется с отдачей команд ->
> понадобилось вытащить примитивы синхронизации и буфера команд, чтобы разгрузить
> CPU

мда… оттдавать комманды особого труда не надо - а вот то, что что на GPU может очень много работать асинхронно - это совсем иное

#29
9:17, 17 дек. 2018

NuclearMissileDetect
> очему нельзя было оставить (или сделать по-новому, если старые чем-то не
> устраивали) высокоуровневые абстракции

кто запрещает GL или DX11?

Страницы: 1 2 3 48 Следующая »
ФлеймФорумПрограммирование