util/sha1: rework _mesa_sha1_{init,final}
[mesa.git] / docs / features.txt
1 # Status of OpenGL extensions in Mesa
2
3 Here's how to read this file:
4
5 all DONE: <driver>, ...
6 All the extensions are done for the given list of drivers.
7
8 DONE
9 The extension is done for Mesa and no implementation is necessary on the
10 driver-side.
11
12 DONE ()
13 The extension is done for Mesa and all the drivers in the "all DONE" list.
14
15 DONE (<driver>, ...)
16 The extension is done for Mesa, all the drivers in the "all DONE" list, and
17 all the drivers in the brackets.
18
19 in progress
20 The extension is started but not finished yet.
21
22 not started
23 The extension isn't started yet.
24
25 # OpenGL Core and Compatibility context support
26
27 OpenGL 3.1 and later versions are only supported with the Core profile.
28 There are no plans to support GL_ARB_compatibility. The last supported OpenGL
29 version with all deprecated features is 3.0. Some of the later GL features
30 are exposed in the 3.0 context as extensions.
31
32
33 Feature Status
34 ------------------------------------------------------- ------------------------
35
36 GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr
37
38 glBindFragDataLocation, glGetFragDataLocation DONE
39 GL_NV_conditional_render (Conditional rendering) DONE ()
40 GL_ARB_map_buffer_range (Map buffer subranges) DONE ()
41 GL_ARB_color_buffer_float (Clamping controls) DONE ()
42 GL_ARB_texture_float (Float textures, renderbuffers) DONE ()
43 GL_EXT_packed_float DONE ()
44 GL_EXT_texture_shared_exponent DONE ()
45 GL_ARB_depth_buffer_float (Float depth buffers) DONE ()
46 GL_ARB_framebuffer_object (Framebuffer objects) DONE ()
47 GL_ARB_half_float_pixel DONE (all drivers)
48 GL_ARB_half_float_vertex DONE ()
49 GL_EXT_texture_integer DONE ()
50 GL_EXT_texture_array DONE ()
51 GL_EXT_draw_buffers2 (Per-buffer blend and masks) DONE ()
52 GL_EXT_texture_compression_rgtc DONE ()
53 GL_ARB_texture_rg DONE ()
54 GL_EXT_transform_feedback (Transform feedback) DONE ()
55 GL_ARB_vertex_array_object (Vertex array objects) DONE ()
56 GL_EXT_framebuffer_sRGB (sRGB framebuffer format) DONE ()
57 glClearBuffer commands DONE
58 glGetStringi command DONE
59 glTexParameterI, glGetTexParameterI commands DONE
60 glVertexAttribI commands DONE
61 Depth format cube textures DONE ()
62 GLX_ARB_create_context (GLX 1.4 is required) DONE
63 Multisample anti-aliasing DONE (freedreno (*), llvmpipe (*), softpipe (*), swr (*))
64
65 (*) freedreno, llvmpipe, softpipe, and swr have fake Multisample anti-aliasing support
66
67
68 GL 3.1, GLSL 1.40 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr
69
70 Forward compatible context support/deprecations DONE ()
71 GL_ARB_draw_instanced (Instanced drawing) DONE ()
72 GL_ARB_copy_buffer (Buffer copying) DONE ()
73 GL_NV_primitive_restart (Primitive restart) DONE ()
74 16 vertex texture image units DONE ()
75 GL_ARB_texture_buffer_object (Texture buffer objs) DONE (for OpenGL 3.1 contexts)
76 GL_ARB_texture_rectangle (Rectangular textures) DONE ()
77 GL_ARB_uniform_buffer_object (Uniform buffer objs) DONE ()
78 GL_EXT_texture_snorm (Signed normalized textures) DONE ()
79
80
81 GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, swr
82
83 Core/compatibility profiles DONE
84 Geometry shaders DONE ()
85 GL_ARB_vertex_array_bgra (BGRA vertex order) DONE (freedreno)
86 GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (freedreno)
87 GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (freedreno)
88 GL_ARB_provoking_vertex (Provoking vertex) DONE (freedreno)
89 GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (freedreno)
90 GL_ARB_texture_multisample (Multisample textures) DONE ()
91 GL_ARB_depth_clamp (Frag depth clamp) DONE (freedreno)
92 GL_ARB_sync (Fence objects) DONE (freedreno)
93 GLX_ARB_create_context_profile DONE
94
95
96 GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
97
98 GL_ARB_blend_func_extended DONE (freedreno/a3xx, swr)
99 GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
100 GL_ARB_occlusion_query2 DONE (freedreno, swr)
101 GL_ARB_sampler_objects DONE (all drivers)
102 GL_ARB_shader_bit_encoding DONE (freedreno, swr)
103 GL_ARB_texture_rgb10_a2ui DONE (freedreno, swr)
104 GL_ARB_texture_swizzle DONE (freedreno, swr)
105 GL_ARB_timer_query DONE (swr)
106 GL_ARB_instanced_arrays DONE (freedreno, swr)
107 GL_ARB_vertex_type_2_10_10_10_rev DONE (freedreno, swr)
108
109
110 GL 4.0, GLSL 4.00 --- all DONE: i965/hsw+, nvc0, r600, radeonsi
111
112 GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, llvmpipe, softpipe, swr)
113 GL_ARB_draw_indirect DONE (i965/gen7+, llvmpipe, softpipe, swr)
114 GL_ARB_gpu_shader5 DONE (i965/gen7+)
115 - 'precise' qualifier DONE
116 - Dynamically uniform sampler array indices DONE (softpipe)
117 - Dynamically uniform UBO array indices DONE ()
118 - Implicit signed -> unsigned conversions DONE
119 - Fused multiply-add DONE ()
120 - Packing/bitfield/conversion functions DONE (softpipe)
121 - Enhanced textureGather DONE (softpipe)
122 - Geometry shader instancing DONE (llvmpipe, softpipe)
123 - Geometry shader multiple streams DONE ()
124 - Enhanced per-sample shading DONE ()
125 - Interpolation functions DONE ()
126 - New overload resolution rules DONE
127 GL_ARB_gpu_shader_fp64 DONE (i965/hsw+, llvmpipe, softpipe)
128 GL_ARB_sample_shading DONE (i965/gen6+, nv50)
129 GL_ARB_shader_subroutine DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
130 GL_ARB_tessellation_shader DONE (i965/gen7+)
131 GL_ARB_texture_buffer_object_rgb32 DONE (i965/gen6+, llvmpipe, softpipe, swr)
132 GL_ARB_texture_cube_map_array DONE (i965/gen6+, nv50, llvmpipe, softpipe)
133 GL_ARB_texture_gather DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
134 GL_ARB_texture_query_lod DONE (i965, nv50, softpipe)
135 GL_ARB_transform_feedback2 DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
136 GL_ARB_transform_feedback3 DONE (i965/gen7+, llvmpipe, softpipe, swr)
137
138
139 GL 4.1, GLSL 4.10 --- all DONE: i965/hsw+, nvc0, r600, radeonsi
140
141 GL_ARB_ES2_compatibility DONE (i965, nv50, llvmpipe, softpipe, swr)
142 GL_ARB_get_program_binary DONE (0 binary formats)
143 GL_ARB_separate_shader_objects DONE (all drivers)
144 GL_ARB_shader_precision DONE (i965/hsw+, all drivers that support GLSL 4.10)
145 GL_ARB_vertex_attrib_64bit DONE (i965/hsw+, llvmpipe, softpipe)
146 GL_ARB_viewport_array DONE (i965, nv50, llvmpipe, softpipe)
147
148
149 GL 4.2, GLSL 4.20 -- all DONE: i965/hsw+, nvc0, radeonsi
150
151 GL_ARB_texture_compression_bptc DONE (i965, r600)
152 GL_ARB_compressed_texture_pixel_storage DONE (all drivers)
153 GL_ARB_shader_atomic_counters DONE (i965, softpipe)
154 GL_ARB_texture_storage DONE (all drivers)
155 GL_ARB_transform_feedback_instanced DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
156 GL_ARB_base_instance DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
157 GL_ARB_shader_image_load_store DONE (i965, softpipe)
158 GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
159 GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
160 GL_ARB_shading_language_packing DONE (all drivers)
161 GL_ARB_internalformat_query DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
162 GL_ARB_map_buffer_alignment DONE (all drivers)
163
164
165 GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, radeonsi
166
167 GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
168 GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
169 GL_ARB_clear_buffer_object DONE (all drivers)
170 GL_ARB_compute_shader DONE (i965, softpipe)
171 GL_ARB_copy_image DONE (i965, nv50, r600, softpipe, llvmpipe)
172 GL_KHR_debug DONE (all drivers)
173 GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
174 GL_ARB_fragment_layer_viewport DONE (i965, nv50, r600, llvmpipe, softpipe)
175 GL_ARB_framebuffer_no_attachments DONE (i965, r600, softpipe)
176 GL_ARB_internalformat_query2 DONE (all drivers)
177 GL_ARB_invalidate_subdata DONE (all drivers)
178 GL_ARB_multi_draw_indirect DONE (i965, r600, llvmpipe, softpipe, swr)
179 GL_ARB_program_interface_query DONE (all drivers)
180 GL_ARB_robust_buffer_access_behavior DONE (i965)
181 GL_ARB_shader_image_size DONE (i965, softpipe)
182 GL_ARB_shader_storage_buffer_object DONE (i965, softpipe)
183 GL_ARB_stencil_texturing DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
184 GL_ARB_texture_buffer_range DONE (nv50, i965, r600, llvmpipe)
185 GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
186 GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
187 GL_ARB_texture_view DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
188 GL_ARB_vertex_attrib_binding DONE (all drivers)
189
190
191 GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, radeonsi
192
193 GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
194 GL_ARB_buffer_storage DONE (i965, nv50, r600, llvmpipe, swr)
195 GL_ARB_clear_texture DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
196 GL_ARB_enhanced_layouts DONE (i965, nv50, llvmpipe, softpipe)
197 - compile-time constant expressions DONE
198 - explicit byte offsets for blocks DONE
199 - forced alignment within blocks DONE
200 - specified vec4-slot component numbers DONE (i965, nv50, llvmpipe, softpipe)
201 - specified transform/feedback layout DONE
202 - input/output block locations DONE
203 GL_ARB_multi_bind DONE (all drivers)
204 GL_ARB_query_buffer_object DONE (i965/hsw+)
205 GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
206 GL_ARB_texture_stencil8 DONE (i965/hsw+, nv50, r600, llvmpipe, softpipe, swr)
207 GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
208
209 GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi
210
211 GL_ARB_ES3_1_compatibility DONE (i965/hsw+)
212 GL_ARB_clip_control DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
213 GL_ARB_conditional_render_inverted DONE (i965, nv50, r600, llvmpipe, softpipe, swr)
214 GL_ARB_cull_distance DONE (i965, nv50, llvmpipe, softpipe, swr)
215 GL_ARB_derivative_control DONE (i965, nv50, r600)
216 GL_ARB_direct_state_access DONE (all drivers)
217 GL_ARB_get_texture_sub_image DONE (all drivers)
218 GL_ARB_shader_texture_image_samples DONE (i965, nv50, r600)
219 GL_ARB_texture_barrier DONE (i965, nv50, r600)
220 GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
221 GL_KHR_robustness DONE (i965)
222 GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
223
224 These are the extensions cherry-picked to make GLES 3.1
225 GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi
226
227 GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
228 GL_ARB_compute_shader DONE (i965/gen7+, softpipe)
229 GL_ARB_draw_indirect DONE (i965/gen7+, r600, llvmpipe, softpipe, swr)
230 GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
231 GL_ARB_framebuffer_no_attachments DONE (i965/gen7+, r600, softpipe)
232 GL_ARB_program_interface_query DONE (all drivers)
233 GL_ARB_shader_atomic_counters DONE (i965/gen7+, softpipe)
234 GL_ARB_shader_image_load_store DONE (i965/gen7+, softpipe)
235 GL_ARB_shader_image_size DONE (i965/gen7+, softpipe)
236 GL_ARB_shader_storage_buffer_object DONE (i965/gen7+, softpipe)
237 GL_ARB_shading_language_packing DONE (all drivers)
238 GL_ARB_separate_shader_objects DONE (all drivers)
239 GL_ARB_stencil_texturing DONE (nv50, r600, llvmpipe, softpipe, swr)
240 GL_ARB_texture_multisample (Multisample textures) DONE (i965/gen7+, nv50, r600, llvmpipe, softpipe)
241 GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
242 GL_ARB_vertex_attrib_binding DONE (all drivers)
243 GS5 Enhanced textureGather DONE (i965/gen7+, r600)
244 GS5 Packing/bitfield/conversion functions DONE (i965/gen6+, r600)
245 GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
246
247 Additional functionality not covered above:
248 glMemoryBarrierByRegion DONE
249 glGetTexLevelParameter[fi]v - needs updates DONE
250 glGetBooleani_v - restrict to GLES enums
251 gl_HelperInvocation support DONE (i965, r600)
252
253 GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+
254
255 GL_EXT_color_buffer_float DONE (all drivers)
256 GL_KHR_blend_equation_advanced DONE (i965, nvc0)
257 GL_KHR_debug DONE (all drivers)
258 GL_KHR_robustness DONE (i965, nvc0, radeonsi)
259 GL_KHR_texture_compression_astc_ldr DONE (i965/gen9+)
260 GL_OES_copy_image DONE (all drivers)
261 GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
262 GL_OES_draw_elements_base_vertex DONE (all drivers)
263 GL_OES_geometry_shader DONE (i965/hsw+, nvc0, radeonsi)
264 GL_OES_gpu_shader5 DONE (all drivers that support GL_ARB_gpu_shader5)
265 GL_OES_primitive_bounding_box DONE (i965/gen7+, nvc0, radeonsi)
266 GL_OES_sample_shading DONE (i965, nvc0, r600, radeonsi)
267 GL_OES_sample_variables DONE (i965, nvc0, r600, radeonsi)
268 GL_OES_shader_image_atomic DONE (all drivers that support GL_ARB_shader_image_load_store)
269 GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1)
270 GL_OES_shader_multisample_interpolation DONE (i965, nvc0, r600, radeonsi)
271 GL_OES_tessellation_shader DONE (all drivers that support GL_ARB_tessellation_shader)
272 GL_OES_texture_border_clamp DONE (all drivers)
273 GL_OES_texture_buffer DONE (i965, nvc0, radeonsi)
274 GL_OES_texture_cube_map_array DONE (i965/hsw+, nvc0, radeonsi)
275 GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
276 GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
277
278 Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES version:
279
280 GL_ARB_bindless_texture started (airlied)
281 GL_ARB_cl_event not started
282 GL_ARB_compute_variable_group_size DONE (nvc0, radeonsi)
283 GL_ARB_ES3_2_compatibility DONE (i965/gen8+)
284 GL_ARB_fragment_shader_interlock not started
285 GL_ARB_gl_spirv not started
286 GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe)
287 GL_ARB_indirect_parameters DONE (nvc0, radeonsi)
288 GL_ARB_parallel_shader_compile not started, but Chia-I Wu did some related work in 2014
289 GL_ARB_pipeline_statistics_query DONE (i965, nvc0, radeonsi, softpipe, swr)
290 GL_ARB_post_depth_coverage DONE (i965)
291 GL_ARB_robustness_isolation not started
292 GL_ARB_sample_locations not started
293 GL_ARB_seamless_cubemap_per_texture DONE (i965, nvc0, radeonsi, r600, softpipe, swr)
294 GL_ARB_shader_atomic_counter_ops DONE (i965/gen7+, nvc0, radeonsi, softpipe)
295 GL_ARB_shader_ballot not started
296 GL_ARB_shader_clock DONE (i965/gen7+)
297 GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi)
298 GL_ARB_shader_group_vote DONE (nvc0)
299 GL_ARB_shader_stencil_export DONE (i965/gen9+, radeonsi, softpipe, llvmpipe, swr)
300 GL_ARB_shader_viewport_layer_array DONE (i965/gen6+)
301 GL_ARB_sparse_buffer not started
302 GL_ARB_sparse_texture not started
303 GL_ARB_sparse_texture2 not started
304 GL_ARB_sparse_texture_clamp not started
305 GL_ARB_texture_filter_minmax not started
306 GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+)
307 GL_KHR_blend_equation_advanced_coherent DONE (i965/gen9+)
308 GL_KHR_no_error not started
309 GL_KHR_texture_compression_astc_hdr DONE (core only)
310 GL_KHR_texture_compression_astc_sliced_3d not started
311 GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+)
312 GL_OES_EGL_image DONE (all drivers)
313 GL_OES_EGL_image_external_essl3 not started
314 GL_OES_required_internalformat not started - GLES2 extension based on OpenGL ES 3.0 feature
315 GL_OES_surfaceless_context DONE (all drivers)
316 GL_OES_texture_compression_astc DONE (core only)
317 GL_OES_texture_float DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
318 GL_OES_texture_float_linear DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
319 GL_OES_texture_half_float DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
320 GL_OES_texture_half_float_linear DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe)
321 GL_OES_texture_view not started - based on GL_ARB_texture_view
322 GL_OES_viewport_array DONE (i965, nvc0, radeonsi)
323 GLX_ARB_context_flush_control not started
324 GLX_ARB_robustness_application_isolation not started
325 GLX_ARB_robustness_share_group_isolation not started
326
327 The following extensions are not part of any OpenGL or OpenGL ES version, and
328 we DO NOT WANT implementations of these extensions for Mesa.
329
330 GL_ARB_geometry_shader4 Superseded by GL 3.2 geometry shaders
331 GL_ARB_matrix_palette Superseded by GL_ARB_vertex_program
332 GL_ARB_shading_language_include Not interesting
333 GL_ARB_shadow_ambient Superseded by GL_ARB_fragment_program
334 GL_ARB_vertex_blend Superseded by GL_ARB_vertex_program
335
336
337 A graphical representation of this information can be found at
338 https://mesamatrix.net/