LINUX.ORG.RU

Выпуск спецификации OpenGL 4.6

 ,


0

2

Консорциум Khronos, занимающийся разработкой графических стандартов, отметил двадцатипятилетие с момента основания стандарта OpenGL публикацией новой версии спецификации OpenGL 4.6, которая стала первым обновлением с момента появления графического API Vulkan, пришедшего на смену OpenGL. Для оценки возможностей новой версии API на реальном оборудовании компания NVIDIA выпустила бета-версию (381.26.11) драйвера с поддержкой OpenGL 4.6. Сообщается, что любые GPU NVIDIA для которых уже имеется поддержка OpenGL 4.5 являются совместимыми и с OpenGL 4.6. Из открытых драйверов к поддержке новой спецификации наиболее близки драйверы Intel i965, Nouveau (nvc0) и RadeonSI, в которых реализовано 5 из 11 новых расширений OpenGL 4.6.

Наиболее интересным новшеством OpenGL 4.6 является возможность обработки переносимого промежуточного представления шейдеров SPIR-V, изначально разработанного для API Vulkan. SPIR-V универсален для всех платформ и может применяться как для графики, так и для параллельных вычислений. SPIR-V подразумевает выделение отдельной фазы компиляции шейдеров в промежуточное представление, что позволяет создавать фронтэнды для различных высокоуровневых языков. На основе различных высокоуровневых реализаций отдельно генерируется единый промежуточный код, который может использоваться драйверами OpenGL, Vulkan и OpenCL без применения встроенного компилятора шейдеров. Избавление драйвера от компилятора шейдеров существенно упрощает драйвер, ускоряет загрузку кода для GPU и делает драйвер независимым от высокоуровневых языков разработки программ для GPU. Для преобразования шейдеров на языке GLSL в представление SPIR-V развивается компилятор glslang, в который уже добавлена поддержка GLSL 4.60.

В основной состав спецификации OpenGL 4.6 включено 11 расширений:

GL_ARB_gl_spirv и GL_ARB_spirv_extensions для стандартизации поддержки SPIR-V в OpenGL;

GL_ARB_indirect_parameters и GL_ARB_shader_draw_parameters для снижения нагрузки на CPU при выполнении операций в пакетном режиме, связанных с рендерингом большого числа геометрических примитивов;

GL_ARB_pipeline_statistics_query и GL_ARB_transform_feedback_overflow_query для стандартизации в OpenGL ранее специфичных для Direct3D средств для получения статистики о ходе выполнения шейдеров и отлавливания переполнения буферов;

GL_ARB_texture_filter_anisotropic (бывшее расширение GL_EXT_texture_filter_anisotropic) с реализацией метода улучшения визуального качества текстур, на который ранее распространялись патентные ограничения;

GL_ARB_polygon_offset_clamp (бывшее расширение GL_EXT_polygon_offset_clamp) для устранения часто встречающегося визуального артефакта «утечка света» (light leak), возникающего при отрисовке теней;

GL_ARB_shader_atomic_counter_ops и GL_ARB_shader_group_vote с реализацией дополнительных функций шейдеров, расширяющих функциональность и производительность решений для рабочего стола (реализация атомарных счётчиков и функции для ускорения композитинга на процессорах SIMD);

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

Добавлено три новшества, которые в дальнейшем будут оформлены как расширения OpenGL:

GL_KHR_parallel_shader_compile - позволяет приложениям запустить сразу несколько потоков компиляции шейдеров;

WGL_ARB_create_context_no_error и GXL_ARB_create_context_no_error для отключения контекста обработки ошибок в WGL или GLX.

Для улучшения переносимости с API Vulkan и Direct3D в спецификации OpenGL и OpenGL ES включена порция необязательных расширений для низкоуровневых манипуляций с объектами в памяти и управления синхронизацией выполнения операций с GPU:

GL_EXT_memory_object* и GL_EXT_semaphore*. Указанные расширения позволяют импортировать в OpenGL-приложения объекты Vulkan для их привязки к текстурам или буферам в памяти. Для совместимости с Direct3D добавлено расширение GL_EXT_win32_keyed_mutex.

>>> Подробности

anonymous

Проверено: leave ()

Отлично! Vulkan для игр, OpenGL для рабочего графического софта. Так что нужны оба

Sunderland93 ★★★★★ ()

SPIR-V, изначально разработанного для API Vulkan.

4.2

Этот язык изначально разработан для OpenCL. То, что Vulkan на нём написали - это уже искали готовое решение для реализации.

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

Vulkan для игр

4.2

OpenGL для рабочего графического софта.

OpenGL для могилы

Так что нужны оба

OpenGL нужен до тех пор, пока есть рабочее legacy. При возможности использования Vulkan для новых проектов OpenGL использовать никто в здравом уме не станет. OpenGL - это deprecated legacy API.

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

Профессиональный софт на Vulkan если ещё не делают, то собираются делать.

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

OpenGL - это deprecated legacy API

Это не тебе решать, так что потухни

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

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

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

А разве Vulkan — это не развитие OpenGL?

Просто интересуюсь.

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

Мне вот интересно, почему ты пытаешься с кем-то спорить, если ты в дупу тупой?

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

Как же нет, если Kronos планировала его обозвать NextGL?

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

Ну до deprecated legacy ему ещё пилить и пилить. Но вообще да, пора бы это поделие уже закапывать.

StReLoK ☆☆ ()
Ответ на: комментарий от Evgueni

А разве Vulkan — это не развитие OpenGL?

Нет - не развитие, но замена. Vulkan - это развитие Mantle, написанное на языке SPIR, как и OpenCL. Сам OpenCL, кстати, скоро официально закопают в пользу Vulkan. Если говорить про развития OpenGL, то единственное, которое недавно было сделано - это Metal от Apple.

Quasar ★★★★★ ()
Последнее исправление: Quasar (всего исправлений: 3)
Ответ на: комментарий от Sunderland93

Это не тебе решать, так что потухни

Серьёзно?

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

Ну до deprecated legacy ему ещё пилить и пилить.

OpenGL прекратили развивать и прекращают использовать. Это прямой признак deprecated legacy. Всё, что туда завезли - это совместимость со SPIR для переманивания обратно с Vulkan.

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

Ну раз поддерживают ещё то оно ещё не deprecated. Про использование тоже ещё можно поспорить - его ещё долго будут использовать, слишком многое на него завязано.

StReLoK ☆☆ ()
Ответ на: комментарий от Quasar

OpenGL прекратили развивать

Выпуск спецификации OpenGL 4.6

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

для переманивания обратно с Vulkan

Ага, создали новый API и потом решили переманить с него всех обратно на старый))

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

Vulkan - развитие Mantle и вообще ниразу не похож на OpenGL. Спецификация написанна на xml. SPIR - промежуточный язык для написания шейдеров. GLSL можна транслировать в SPIR.

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

Профессиональный софт на Vulkan если ещё не делают, то собираются делать.

Перелеты из одной галактики в другую если еще не делают, то собираются делать.

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

OpenGL прекратили развивать
Выпуск спецификации OpenGL 4.6

Нормально так прекратили.

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

Vulkan - это развитие Mantle, написанное на языке SPIR
написанное на языке SPIR

Специалист со стажем?

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

OpenGL - это deprecated legacy API.

Это как Fortran-90 в GCC 8-devel, да?

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

Ага, а кресты - depreciated legacy язык, а кобол так ваще... закапыватели блин

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

Ну да, и то и другое depreciated и legacy, но все равно используется. Для старых проектов по очевидным причинам, для новых - из-за ретроградства. А в чем проблема?

vlad9486 ()

Да, но нафига Кронос занимается развитием двух конкурирующих стандартов?

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

Ну так-то трёх, opencl ещё не закопали, хотя всё что он делает может делать вулкан.

anonymous ()

Неожиданно, я уж думал, что 4.5 - последняя версия

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

А таки что на замену тех же крестов? Пузон с удобной многопоточностью, жаба с низким потреблением памяти или гибкий за счет дженериков го?

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

Это здесь офтоп. Уже есть языки, которые бьют с++ по всему, кроме легаси (в легаси я и библиотеки включил).

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

Это здесь офтоп. Уже есть языки, которые бьют с++ по всему, кроме легаси (в легаси я и библиотеки включил).

Ага, главное что-нибудь с умным видом сказануть, а че, отмазка то есть, офтоп же. Казалось бы, зачем, раз ведь офтоп. Но сказануть то надо :)

По сути предмета обсуждения, OpenGL высокоуровневая платформа (в отличие от низкоуровневого Vulkan), поэтому довольно смешно слышать про закапывание OpenGL от закапывателей плюсов :)

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

Почему бы рабочий софт тоже на Вулкане не делать?

Не всё железо его поддерживает, системные требования на мелкую утилитку сразу взлетят до уровня новых ААА игр.

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

Их не нужно допиливать под фичи выходящих кажые два года видеокарт.

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

Под видяхи может быть и не надо, а вот кобол под новые года - регулярно

upcFrost ★★★★★ ()

Жив еще чертяга, хорошая новость

vpd ()

выделение отдельной фазы компиляции шейдеров

Эх, а раньше можно было шейдеры на лету менять...

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