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 ()

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

4.2

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

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

Vulkan для игр

4.2

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

OpenGL для могилы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Napilnik ★★★★★ ()