Anonymous
ребят привет, есть конфа холивара?
Alexander
Модуль в ядре обычно отвечает за таблицу страниц, очередь сообщений и регистры контекста на GPU. Ну то есть, ядро имеет к ним доступ и фильтрует запросы от программ.
Для 3Д обычно задаешь массив вершин и атрибутов (координаты, цвета). Пишешь программу на glsl. Компилятор из glsl в инструкции, специфичные для GPU, внутри Mesa/libgl.
Ned
Alexander
Получается машинный код, который записывается в память GPU.
Alexander
И потом в очередь сообщений кладется команда "рисовать"
Matwey
Matwey
Туда тебе твое 3d и нарисуют
Matwey
А бывает EGL
Matwey
Он вообще без экрана может работать
Matwey
Embedded GL
Anonymous
спасибо
Matwey
Ned
Alexander
Рендеринг - это из вершин и текстур сделать проекцию. А объединить разные окна - это композитинг
Alexander
Кстати, в @prographon могут больше рассказать
Ned
Нет, я спрашиваю о том, одно ли и то же "рендеринг" и "просчёт триды и отправка её в файл или куда там ещё"?
Ned
А вообще, к чему я это всё. Мне стало резко интересно, как работают видеодрайвера
Ned
И что за что отвечает
Ned
И есть ли какие-то стандарты, которые позволят ядру худо-бедно рисовать окошки (и прон) на любой видеокарте
Ned
безо всяких там игровых загонов, кроссфайров и проч.
Alexander
Alexander
Для 2д проще
Ned
слышал, VGA, VESA и чёт там такое
Alexander
Тебе UEFI отдает указатель на фреймбуффер
Ned
а мне тридэ и не нужна
Ned
мне нужна худобедная графика
Ned
получить видеорежимы, настроить наилучший и погнали
Alexander
И VESA, и VGA. Но это медленно, потому что надо на цпу считать
Ned
да я не игры рисую, бро
Ned
я пишу драйвер видеокарты
Ned
мне вообще пох на скорость
Alexander
Ну, если только 2д, то да, есть эти стандарты
Ned
там даже не окна рисуются, а текест
Alexander
Alexander
Можно в линупсе посмотреть исходники драйверов
Ned
и где в цепочке ИГРА - ... - ГПУ находится драйвер?
Alexander
Игра...libGL.so...kernel driver... GPU
Ned
нет же системных вызовов giveme3d()
Alexander
Ну, драйвера для 3д под каждую карту свои. Универсального стандарта нет
Alexander
Просто 3Д вычисления и вывод 2д никак не связаны
Ned
а где описан интерфейс между libgl.so и driver?
Ned
и может ли быть что-то ещё на месте LibGL?
Alexander
Alexander
Alexander
Ned
варварство и колхоз какой-то
Alexander
Ну а как ты по-другому сделаешь? Вот на цпу есть пара популярных архитектур, а на гпу архитектура (кодирование инструкций) меняется от поколения к поколению. И ещё очень много багов в ГПУ из-за релиза каждый год новой архитектуры. Поэтому это фиксят в драйверах, а пользователю дают высокоуровневый язык
Matwey
ну, когда он специфичен, но так случайно получилось, что одинаков
Alexander
Между ядром и либой - DRM
Alexander
Он как бы стандартный
Matwey
Как называется набор ioctl-ов в /dev/dri то?
Alexander
Но с расширениями
Alexander
Matwey
ну ок
Matwey
но у nvidia он все-равно свой по-моему?
Alexander
но у nvidia он все-равно свой по-моему?
Ну и у интела есть свои расширения. Там из совместимых API - выделить буфер и получить дескриптор на него. А вот уже сделать его буфером под код или текстуру - бывает специфично.
Anonymous
Berkus
Ну да
oles
подскажите плз а стандарт posix както регламентирует структуру elf файла?
Anonymous
Не посикс
oles
а кто
Anonymous
там стандарт от sysv, емнип
Anonymous
На вики точно ссылка на него была
oles
то есть в позикс эта тема вообще не входит?
Anonymous
угу
oles
ок спасибо
Sergey
constexpr int sum(int a, int b)
{
return a + b;
}
Sergey
int res = sum(100, 200)
Sergey
объясните плз, почему constexpr не работает тут
Sergey
в плане, почему, когда res не constexpr
Egor
В смысле "не работает"?