LINUX.ORG.RU

Взаимодействие между программным и аппаратным рендерингом

 , ,


1

1

Как в тулкитах совмещается программный и аппаратный рендеринг так чтобы не было тормозов при копировании из/в видеопамять и чтобы не было избыточных буферов/копирования? Далеко не всё рисование в тулкитах делается через GPU. Можно примеры на места в коде реализации тулкитов.

В частности интересно возможно ли нарисовать буфер в RAM на OpenGL рендербуфере с клиппингом без дополнительных буферов и копирований? Буфер в RAM можно выделить с необходимым выравниванием и прочими параметрами если требуется.

★★★★★

гпу может читать и писать в рам(уже ответили вроде). зачем опенгл? уже ж мертвая технология, вулкан - наше всьо!

Keltir
()
Ответ на: комментарий от LINUX-ORG-RU

Диагонального тиринга не существует и существовать не может.

Я видел диагональный тиринг на Intel графике. Видимо оно 2 треугольника зачем-то отдельно рисует.

X512 ★★★★★
() автор топика
Ответ на: комментарий от Keltir

зачем опенгл? уже ж мертвая технология, вулкан - наше всьо!

Уже работаем над этим. Програмный рендеринг через lavapipe работает. Собран и загрузается Mesa Radeon Vulkan драйвер, но он не работает без реализации ioctl amdgpu. Я думаю что лучше не тащить код из ядра Линукса, а написать свою реализацию ioctl amdgpu в пространстве пользователя. KMS в Haiku не нужен, так что кода надо будет сильно меньше.

Думаю ещё композитор сразу на Vulkan делать.

X512 ★★★★★
() автор топика
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от Keltir

сначала скопировать в видеопамять быстрее, чем использовать текстуру из системной оперативы

anonymous
()
Ответ на: комментарий от X512

Програмный рендеринг

классика. ну зато без ядерной части как плахом линуксе!

anonymous
()
Ответ на: комментарий от anonymous

Хоть бы кто из свидетелей диагонали мне картинку показал. Почти уверен что все вы видели лесенку из тиринга, а не диагональный разрыв кадра.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Видел именно ровную диагональную линию между краями экрана, никаких лесенок. С кривой архитектурой графики в Линуксе уже ничему не удивляешься.

Хоть бы кто из свидетелей диагонали мне картинку показал.

Это надо старые версии Ubuntu брать.

X512 ★★★★★
() автор топика
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от anonymous

ну от части да. почему-то сложно понять уважаемым, что systemd-это грыжа, которая выскочила в ядре от внутренего напряжения вызваного противоречиями компонентов ядра. если бы структура ядра была хорошо продумана, такого бы не случилось. systemd это не решение, это болячка.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от X512

Не знаю причём тут архитектектура графики видеокарта заполняет буфер на отрисовку монитора так как она хочет и доступа к этому механизму с уровня софта нет нт на лтнуксе ни на винде ни на маке ни на хайку ни на бзде нигде нету. Либо есть один из видов всинка либо нету точка. Я игнорирую всик прогоаимный уровня софта когда не карта а приложение использует двойную буферизацию , но это вооообще другая истоиия с вопросом никак не связанная. Если такие разрывы есть ну значит есть и это специфика железа, а не софта. Если я не прав буду рад информации и извинюсь. Ты с горяча это сказал я верю я знаю )))

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от X512

даже если та отобрана у обычной RAM

А так можно?

Да, можно. Но не всегда нужно.

В Vulkan это тип памяти с флагом VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT.

У amdgpu есть GTT memory, она позволяет динамически отбирать у системы раму и использовать в качестве видеопамяти. Максимальное количество отбираемой рамы настраивается через параметр загрузки ядра amdgpu.gttsize=${MEGABYTES_N} (по умолчанию размером как физическая видеопамять при 3GB < VRAM < 3/4 RAM, иначе – 3/4 RAM).

У NVIDIA абсолютно точно есть свой аналог GTT memory, но как он называется и как настраивается, я не знаю.

На встройках Intel и AMD, как правило, вся память выделяется из рамы, так что логично ожидать большого объёма памяти (почти вся доступная для встройки) доступного одновременно с флагами VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT и VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT. На pci-e видеокартах выбирай что-то одно – и чаще всего инфу, нужную каждый кадр, стоит хранить в VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, так как Кэп намекает, что физически рама не впаивается в видюху, вместо этого происходит насилие над pci-e.

Итого – по крайней мере в Vulkan, можно получить кусок памяти видимый как из GPU, так и с CPU. Можно даже сделать его когерентным (VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD одновременно с VK_MEMORY_PROPERTY_HOST_COHERENT_BIT). Только вот по производительности удар будет критический. GTT память и аналоги лучше всего юзать для staging буфферов или чего-то странного, когда GPU обращается к этой памяти редко. Ну или если удалось выделить достаточно девайс-локальой памяти видимой при этом с хоста.

robus ★★★★★
()
Ответ на: комментарий от anonymous

Чудес не бывает

Бывают. Чудеса техники бывают. Но есть куча НО.

robus ★★★★★
()
Ответ на: комментарий от X512

Я видел диагональный тиринг на Intel графике. Видимо оно 2 треугольника зачем-то отдельно рисует.

Сынок, это были не опята. Это был не тиринг, а либо z-fight, либо банальный алиасинг.

robus ★★★★★
()
Ответ на: комментарий от robus

довольно давно с обновлением блоба нвидии появилось DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT. на амд такое было вообще давно

anonymous
()

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.