Size: a a a

pro.graphon (and gamedev)

2020 December 14

K

Kirill in pro.graphon (and gamedev)
Anatoly Tomilov
Так это ж не вопрос грубо говоря вулкановского лоадера. Это проблема драйверов конкретных вендоров.
а есть ли вендор-независимый подход для interop графического АПИ X и вычислительного АПИ Y?
источник

K

Kirill in pro.graphon (and gamedev)
а, opencl наверно
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
нет. При чём здесь opencl?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
это всё на милость вендоров
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
через хостовую память, разве что, перекидываться
источник

K

Kirill in pro.graphon (and gamedev)
Anatoly Tomilov
нет. При чём здесь opencl?
OpenCL умеет interop с OpenGL, и от вендора вроде как не зависит. Разве нет?
источник

K

Kirill in pro.graphon (and gamedev)
Хотя ладно, жопа какая то. Чувствую фундаментальное непонимание какого-то момента
источник

AT

Alexander Tarasikov in pro.graphon (and gamedev)
Anatoly Tomilov
через хостовую память, разве что, перекидываться
Ну или через персистентную/когерентную. Но надо аккуратно с синхронизацией
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Alexander Tarasikov
Ну или через персистентную/когерентную. Но надо аккуратно с синхронизацией
даже так — без одной операции копирования вряд ли обойтись
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
на хост и обратно
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Kirill
OpenCL умеет interop с OpenGL, и от вендора вроде как не зависит. Разве нет?
не слышал про такое
источник

AT

Alexander Tarasikov in pro.graphon (and gamedev)
Anatoly Tomilov
даже так — без одной операции копирования вряд ли обойтись
нет, почему, если на видеокарте лежат (а тем более в unified memory на SoC). В терории. Другое дело, что на практике зачастую платформенные абстракции не дают простого способа получить сырой адрес вместо хендла, и какие-то могут принять хостовый, а какие-то GPU адрес. На андроиде было плохо - сначала был GraphicsBuffer, потом его сделали приватным и ничего не было, пока не появился ImageReader.
Неприятно это всё, потому что на уровне драйверов и железа обычно преград никаких нет.
Помню, у меня горело от того, что было расширение для EGL, чтобы получить из OpenGL буфера его хендл (PRIME) в линуксе - и можно было передать в VAAPI для кодирования видео на линуксе, а для GLX такого не было. По-нормальному что-то сложно показалось, для прототипа накостылил штуку, которая хукала IOCTL и воровала хендл буфера оттуда, когда он создавался через GL API
А потом пригорало, что на Google Pixel нет “драйвера” (на самом деле - юзерспейсной либы, драйвер-то один и тот же) OpenCL, а если его тащить либой в приложении - то контекст из GL не шарился. Это я уже потом осознал, что память-то unified, можно просто поинтер взять.
источник

K

Kirill in pro.graphon (and gamedev)
Anatoly Tomilov
не слышал про такое
источник

U

UsernameAK in pro.graphon (and gamedev)
Alexander Tarasikov
нет, почему, если на видеокарте лежат (а тем более в unified memory на SoC). В терории. Другое дело, что на практике зачастую платформенные абстракции не дают простого способа получить сырой адрес вместо хендла, и какие-то могут принять хостовый, а какие-то GPU адрес. На андроиде было плохо - сначала был GraphicsBuffer, потом его сделали приватным и ничего не было, пока не появился ImageReader.
Неприятно это всё, потому что на уровне драйверов и железа обычно преград никаких нет.
Помню, у меня горело от того, что было расширение для EGL, чтобы получить из OpenGL буфера его хендл (PRIME) в линуксе - и можно было передать в VAAPI для кодирования видео на линуксе, а для GLX такого не было. По-нормальному что-то сложно показалось, для прототипа накостылил штуку, которая хукала IOCTL и воровала хендл буфера оттуда, когда он создавался через GL API
А потом пригорало, что на Google Pixel нет “драйвера” (на самом деле - юзерспейсной либы, драйвер-то один и тот же) OpenCL, а если его тащить либой в приложении - то контекст из GL не шарился. Это я уже потом осознал, что память-то unified, можно просто поинтер взять.
> преград никаких нет
источник

U

UsernameAK in pro.graphon (and gamedev)
security
источник

AT

Alexander Tarasikov in pro.graphon (and gamedev)
UsernameAK
security
Ну не на уровне юзерспейсной либы-то
источник

AT

Alexander Tarasikov in pro.graphon (and gamedev)
У современных GPU даже есть относительно честный MMU. Правда, не везде и не всегда (в линуксовых драйверах интела вроде какое-то время нестабильно работало с per-process pgt), но в целом есть
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
источник

ФМ

Фёдор Михайлов (Тео)... in pro.graphon (and gamedev)
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Продолжаем захватывать чатик ^_^
источник