A Khronos Group a Vulkan API mellett az OpenGL-t is frissítette, ráadásul úgy néz ki, hogy most a régebbi rendszer kapta az igazi szeretetet, ugyanis nagyon sokat fejlődött a 4.6-os verzió. Ez nem is csoda, mivel a konzorcium nagyon elhanyagolta az elmúlt időszakban, de mindig jelezték, hogy az explicit irányvonalat képviselő Vulkan mellett van helye az úgynevezett legacy API-knak is.
Az OpenGL 4.6 nem igényel majd új hardvereket, gyakorlatilag az összes újítás támogathatják azok GPU-k, amelyekre elérhető egy OpenGL 4.5-ös implementáció. A fő fejlesztés egyébként a SPIR-V hivatalos támogatása, ezáltal az OpenGL 4.6-nak már ez az elsődleges shader nyelve, nem pedig a GLSL. Utóbbira vonatkozóan megmaradt a támogatás, hiszen az API felépítése miatt ez nem rántható ki csak úgy a rendszerből, de az új programok esetében a Khronos Group kiemelten ajánlja, hogy mindenki a SPIR-V-t használja. Ennek ugyanis két nagyon komoly előnye van a GLSL-hez képest. Egyrészt a SPIR-V-vel nem kell szállítani a programmal a shader forrását, másrészt nem kell a gyártók némileg eltérő fordítóihoz igazodva többször megírni ugyanazt a shader programot. A SPIR-V és annak kiterjesztései a GL_ARB_gl_spirv és GL_ARB_spirv_extensions felületeken keresztül támogatható az új API-ban.
Hirdetés
Hatalmas újítás még, hogy az OpenGL végre hivatalosan is támogatja az anizotropikus szűrést. Ezt korábban licencproblémák miatt nem tudták szabványos szintre emelni, így csak egy opcionálisan támogatható GL_EXT_texture_filter_anisotropic kiterjesztés volt elérhető, de ezt a 4.6-os verziójú API-ban végre felválthatta a GL_ARB_texture_filter_anisotropic. Hasonló utat járt be a GL_ARB_polygon_offset_clamp is, amely a GL_EXT_polygon_offset_clamp szabványos variánsa.
További változás, hogy a korábban AZDO, vagyis Approaching Zero Driver Overhead létező irány elkezdett szabványossá válni. Erről az érintettek már három és fél éve beszéltek, de a szükséges kiterjesztések jó részét nem ratifikálta az Architecture Review Board. A 4.6-os verzióval viszont a több ilyen kiterjesztést hitelesítettek, így technikailag is szabványos szintre emeletek. Ezek a következők:
- GL_ARB_indirect_parameters
- GL_ARB_shader_draw_parameters
- GL_ARB_pipeline_statistics_query
- GL_ARB_transform_feedback_overflow_query
- GL_ARB_shader_atomic_counter_ops
- GL_ARB_shader_group_vote
A fentiek mellett a Khronos Group végre beépítette a GL_KHR_no_error kiterjesztést, ami leállítja az OpenGL meghajtó hibakereső funkcióját, így rengeteg többletterheléstől szabadítja meg a rendszert. Ezzel igen sok sebességet lehet nyerni, de vigyázni is kell vele, így csak akkor éri meg használni, ha a fejlesztő biztos benne, hogy a szállított program stabilan teszi a dolgát, ugyanis ha nem, akkor a hibakereső kikapcsolása megjósolhatatlan viselkedést idézhet elő a program futtatásakor – ez rossz esetben teljes fagyáshoz vezethet. Ehhez kapcsolódik még a GLX_ARB_create_context_no_error kiterjesztés is, ami egyelőre kísérleti stádiumban van, de ezzel együtt még több hibakereső funkció tiltható le, vagyis még több többletterheléstől mentesíthető a rendszer.
A Khronos Group további kiterjesztése még a GL_KHR_parallel_shader_compile, ami a shader fordításra van hatással. Ezentúl a némi kontrollt kap ezzel kapcsolatban az alkalmazás, többek között megszabható, hogy maximum hány szálat használhat a meghajtó a shader fordítására, illetve visszajelzés is kérhető a fordítás bevejezéséről. Ezzel a játékok pályabetöltése gyorsabb lehet.
Végül a konzorcium szerint egyre fontosabb a Direct3D és a Vulkan API-val való, hatékony interoperabilitás biztosítása az OpenGL-en belül, amire a GL_EXT_memory_object és a GL_EXT_semaphore érkezett.