Концерн Chronos, занятый разработкой графических стандартов, объявил о выпуске новой версии спецификации OpenGL 4.4 и OpenCL 2.0.
Самые главные нововведения OpenGL 4.4 включают:
- Контроль за размещением буфера (GL_ARB_buffer_storage) - значительно улучшает возможности по доступу к памяти, благодаря точному управлению позицией буферов в графической и системной памяти, позволяя также управлять поведением кэша и добавлению возможности по выдаче команд центральному процессора по маппингу буфера для прямого использования видеоадаптером;
- Эффективные асинхронные запросы (GL_ARB_query_buffer_object) - буферные объекты могут стать прямой целью запросов в обход центрального процессора, что позволяет избежать заторов в очереди видеоадаптера. Это позволяет значительно увеличить скорость для приложений, в которых предполагается в конечном итоге использовать результаты запросов на GPU.
- Изменяемая layout-шейдеров (GL_ARB_enhanced_layouts) - детальный контроль за размещением интерфейсных шейдерных переменных, включая возможность более эффективной упаковки векторов скалярных типов. Включает полный контроль изменяемой компоновки внутри униформных блоков и позволяет шейдерам указывать переменные обратной связи для трансформации и лэйаута буфера.
- Эффективное связывание множества объектов (GL_ARB_multi_bind). Новые команды, которые позволяют приложению объединять и разъединять наборы объектов с помощью одного API вызова, вместо отдельных команд для каждой операции связывания, тем самым амортизируя вызов функции, выборку по полю переменных и потенциальные издержки блокировки.
- Добавлены вызовы для упрощения портирования с API Direct3D 11, включая GL_ARB_vertex_type_10f_11f_11f_rev(), который создаёт трёхкомпонентный вертексный тип с 32 битными значениями для более высокой производительности и GL_ARB_texture_mirror_clamp_to_edge(), который предоставляет схожий с Direct3D метод для работы с текстурой.
- Расширение несвязанных текстур (GL_ARB_bindless_texture) - которое позволяет шейдерам получать доступ к практически неограниченному количеству текстур с помощью виртуальных адресов - создавая общее виртульное пространство системной памяти и памяти GPU. Это позволяет избежать лишних затрат на маппинг недоступных текстур в offscreen.
- Расширение разряжённых текстур (GL_ARB_sparse_texture) - позволяет работать с текстурами, которые превышают по объёму размер памяти видеоадаптера (т.н. мегатекстуры - впервые реализованные программно John Carmack в игре Rage).
Основные новшества OpenCL 2.0:
- Разделяемая виртуальная память;
- Динамический параллелизм;
- Общее адресное пространство;
- Улучшенная поддержка форматов изображений (sRGB и 3D);
- C11 Atomics;
- >Pipes - объекты памяти, организованные по принципу FIFO, включая функции для прямого доступа к pipes;
- Подготовка клиентского драйвера для Android, позволяющего определять и загружать реализации OpenCL в виде разделяемого объекта для Android.