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

[OpenGL] Создание текстуры в одном процессе, а рендеринг в другом (2 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2
#15
1:00, 23 дек. 2018

G@sh!sh
> с таким подходом к декодированию приходится КАЖДЫЙ КАДР шарить очередной dma
> буффер между хост и контент процессами, а на стороне хоста еще и создавать (а в
> после отрисовки еще и удалять) GL текстуру
Там что, каждый раз файловый дескриптор разный приходит?


#16
12:47, 23 дек. 2018

Blew_zc
> Там что, каждый раз файловый дескриптор разный приходит?
не совсем. когда приложение нарисовало декодированный кадр, то необходимо закрыть файловый дескриптор данного кадра. тогда декодер сможет опять вернуть файловый дескриптор с таким же числовым значением. я так понимаю вы намекаете на то что файловый дескриптор можно расшарить один раз, а потом переиспользовать его, если декодер его вернет? расшаривание дескриптора между процессами - не просто передать его числовое значение, а это расшаривание ресурса с которым связан дескриптор (в фаерфоксе это делается через unix domain socket). соотвественно, если мы закрыли данный дескриптор на хост процессе, то теоритически в следующий раз мы должны будем повторно расшарить дескриптор, хоть мы делали это ранее. но это как мне видится, может я и не прав. в любом случае я потестирую данную идею.

#17
13:21, 23 дек. 2018

G@sh!sh

> это иксовоспецифичное решение, а мне как раз нужный не иксы
Не говори только, что в egl нельзя создать offscreen контекст, расшаренный с другим контекстом.

#18
13:24, 23 дек. 2018

Ghost2
> offscreen контекст, расшаренный с другим контекстом
Речь о разных процессах, а не потоках.

#19
17:28, 23 дек. 2018

Blew_zc

Ну ладно, так может быть и нельзя.

G@sh!sh

А зачем ты создаёшь dma? Пошарь просто память между процессами, засинхронизируйся на чем-нибудь и грузи три текстуры y/u/v при помощи texsubimage2d.

#20
18:53, 23 дек. 2018

Ghost2
> А зачем ты создаёшь dma?
Да ядрён батон. Почитай нульпост еще раз. Через VA-API после декодинга кадра выдает dma_buf на выходе.

G@sh!sh
Посмотри тут
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vdpau_interop.txt
Там вроде какая-то связка между vdpau <-> ogl имеется. Не знаю что ннасчет es и других gpu. Но наверняка должно быть что-то готовое. Chromium же как-то работает. Правда, я не уверен, что там не обычный shmem.

#21
21:41, 23 дек. 2018

Ghost2
> А зачем ты создаёшь dma? Пошарь просто память между процессами,
> засинхронизируйся на чем-нибудь и грузи три текстуры y/u/v при помощи
> texsubimage2d.
я как эту тему начал ковырять, первым делом похожим образом сделал. только что энергопотребление по сравнению с софтваром немного стало хуже, что меня вообще не устраивало. при данном подходе получалась такая цепочка: декодируем в гпу, копируем декодируемый кадр в цпу и что бы отрисовать копируем обратно в гпу (текстуру). с помощью dma мы декодируем в гпу и можем сразу нарисовать, ибо в гпу уже есть все, что надо для заполнения текстуры.

#22
21:45, 23 дек. 2018

Blew_zc
> Там вроде какая-то связка между vdpau <-> ogl имеется. Не знаю что ннасчет es и
> других gpu. Но наверняка должно быть что-то готовое. Chromium же как-то
> работает. Правда, я не уверен, что там не обычный shmem.
в vaapi такая свзяка работает через EGL_EXT_image_dma_buf_import. я хром смотрел краем глаза, если я все правильно понял, то там как раз работает по первому варианту (см мой предыдущий пост).

#23
23:38, 23 дек. 2018

G@sh!sh
Походу никак.
Вообще, с EGL большая пичаль в линупсе, особенно с soc. Там вообще мрак, ад и содомия.
Предлагаю просто сделать пул из 2-3 текстур и EGLImage.
Текстуры не удалять, удалять только EGLImage.

#24
21:09, 27 дек. 2018

Blew_zc
> Вообще, с EGL большая пичаль в линупсе, особенно с soc. Там вообще мрак, ад и
> содомия.
<off>а можно об этом где почитать?</off>

> Предлагаю просто сделать пул из 2-3 текстур и EGLImage.
> Текстуры не удалять, удалять только EGLImage.
если в крации, то это плохо вписывается в общую архитектуру работы с поверхностями в фаерфоксе

#25
21:16, 27 дек. 2018

G@sh!sh
> а можно об этом где почитать?
Да на любом форуме по soc, который народ юзает.
У меня например есть odroid xu4, там только недавно все устаканилось. И то вечно что-то подтормаживает, что-то аппаратно не ускоряется.
Если графику брать, то в основном это связано с тем, что мало софта в линуксе юзает EGL, большинство на OpenGL. А интеграция EGL с XWindow весьма плоха.

#26
21:20, 27 дек. 2018

G@sh!sh

go to vulkan

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.