OSDN Git Service

r600g: Implement ARB_texture_view
[android-x86/external-mesa.git] / docs / GL3.txt
1
2 Status of OpenGL 3.x features in Mesa
3
4
5 Note: when an item is marked as "DONE" it means all the core Mesa
6 infrastructure is complete but it may be the case that few (if any) drivers
7 implement the features.
8
9
10 OpenGL Core and Compatibility context support
11
12 OpenGL 3.1 and later versions are only supported with the Core profile.
13 There are no plans to support GL_ARB_compatibility. The last supported OpenGL
14 version with all deprecated features is 3.0. Some of the later GL features
15 are exposed in the 3.0 context as extensions.
16
17
18 Feature                                               Status
19 ----------------------------------------------------- ------------------------
20
21 GL 3.0, GLSL 1.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
22
23   glBindFragDataLocation, glGetFragDataLocation         DONE
24   Conditional rendering (GL_NV_conditional_render)      DONE ()
25   Map buffer subranges (GL_ARB_map_buffer_range)        DONE ()
26   Clamping controls (GL_ARB_color_buffer_float)         DONE ()
27   Float textures, renderbuffers (GL_ARB_texture_float)  DONE ()
28   GL_EXT_packed_float                                   DONE ()
29   GL_EXT_texture_shared_exponent                        DONE ()
30   Float depth buffers (GL_ARB_depth_buffer_float)       DONE ()
31   Framebuffer objects (GL_ARB_framebuffer_object)       DONE ()
32   GL_ARB_half_float_pixel                               DONE (all drivers)
33   GL_ARB_half_float_vertex                              DONE ()
34   GL_EXT_texture_integer                                DONE ()
35   GL_EXT_texture_array                                  DONE ()
36   Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE ()
37   GL_EXT_texture_compression_rgtc                       DONE ()
38   GL_ARB_texture_rg                                     DONE ()
39   Transform feedback (GL_EXT_transform_feedback)        DONE ()
40   Vertex array objects (GL_ARB_vertex_array_object)     DONE ()
41   sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     DONE ()
42   glClearBuffer commands                                DONE
43   glGetStringi command                                  DONE
44   glTexParameterI, glGetTexParameterI commands          DONE
45   glVertexAttribI commands                              DONE
46   Depth format cube textures                            DONE ()
47   GLX_ARB_create_context (GLX 1.4 is required)          DONE
48   Multisample anti-aliasing                             DONE (llvmpipe (*), softpipe (*))
49
50 (*) llvmpipe and softpipe have fake Multisample anti-aliasing support
51
52
53 GL 3.1, GLSL 1.40 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
54
55   Forward compatible context support/deprecations       DONE ()
56   Instanced drawing (GL_ARB_draw_instanced)             DONE ()
57   Buffer copying (GL_ARB_copy_buffer)                   DONE ()
58   Primitive restart (GL_NV_primitive_restart)           DONE ()
59   16 vertex texture image units                         DONE ()
60   Texture buffer objs (GL_ARB_texture_buffer_object)    DONE for OpenGL 3.1 contexts ()
61   Rectangular textures (GL_ARB_texture_rectangle)       DONE ()
62   Uniform buffer objs (GL_ARB_uniform_buffer_object)    DONE ()
63   Signed normalized textures (GL_EXT_texture_snorm)     DONE ()
64
65
66 GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
67
68   Core/compatibility profiles                           DONE
69   Geometry shaders                                      DONE ()
70   BGRA vertex order (GL_ARB_vertex_array_bgra)          DONE ()
71   Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE ()
72   Frag shader coord (GL_ARB_fragment_coord_conventions) DONE ()
73   Provoking vertex (GL_ARB_provoking_vertex)            DONE ()
74   Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE ()
75   Multisample textures (GL_ARB_texture_multisample)     DONE ()
76   Frag depth clamp (GL_ARB_depth_clamp)                 DONE ()
77   Fence objects (GL_ARB_sync)                           DONE ()
78   GLX_ARB_create_context_profile                        DONE
79
80
81 GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
82
83   GL_ARB_blend_func_extended                            DONE ()
84   GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
85   GL_ARB_occlusion_query2                               DONE ()
86   GL_ARB_sampler_objects                                DONE (all drivers)
87   GL_ARB_shader_bit_encoding                            DONE ()
88   GL_ARB_texture_rgb10_a2ui                             DONE ()
89   GL_ARB_texture_swizzle                                DONE ()
90   GL_ARB_timer_query                                    DONE ()
91   GL_ARB_instanced_arrays                               DONE ()
92   GL_ARB_vertex_type_2_10_10_10_rev                     DONE ()
93
94
95 GL 4.0, GLSL 4.00 --- all DONE: nvc0, radeonsi
96
97   GL_ARB_draw_buffers_blend                            DONE (i965, nv50, r600, llvmpipe, softpipe)
98   GL_ARB_draw_indirect                                 DONE (i965, r600, llvmpipe, softpipe)
99   GL_ARB_gpu_shader5                                   DONE (i965, r600)
100   - 'precise' qualifier                                DONE
101   - Dynamically uniform sampler array indices          DONE (softpipe)
102   - Dynamically uniform UBO array indices              DONE ()
103   - Implicit signed -> unsigned conversions            DONE
104   - Fused multiply-add                                 DONE ()
105   - Packing/bitfield/conversion functions              DONE (softpipe)
106   - Enhanced textureGather                             DONE (softpipe)
107   - Geometry shader instancing                         DONE (llvmpipe, softpipe)
108   - Geometry shader multiple streams                   DONE ()
109   - Enhanced per-sample shading                        DONE ()
110   - Interpolation functions                            DONE ()
111   - New overload resolution rules                      DONE
112   GL_ARB_gpu_shader_fp64                               DONE (r600, llvmpipe, softpipe)
113   GL_ARB_sample_shading                                DONE (i965, nv50, r600)
114   GL_ARB_shader_subroutine                             DONE (i965, nv50, r600, llvmpipe, softpipe)
115   GL_ARB_tessellation_shader                           DONE ()
116   GL_ARB_texture_buffer_object_rgb32                   DONE (i965, r600, llvmpipe, softpipe)
117   GL_ARB_texture_cube_map_array                        DONE (i965, nv50, r600, llvmpipe, softpipe)
118   GL_ARB_texture_gather                                DONE (i965, nv50, r600, llvmpipe, softpipe)
119   GL_ARB_texture_query_lod                             DONE (i965, nv50, r600, softpipe)
120   GL_ARB_transform_feedback2                           DONE (i965, nv50, r600, llvmpipe, softpipe)
121   GL_ARB_transform_feedback3                           DONE (i965, nv50, r600, llvmpipe, softpipe)
122
123
124 GL 4.1, GLSL 4.10 --- all DONE: nvc0, radeonsi
125
126   GL_ARB_ES2_compatibility                             DONE (i965, nv50, r600, llvmpipe, softpipe)
127   GL_ARB_get_program_binary                            DONE (0 binary formats)
128   GL_ARB_separate_shader_objects                       DONE (all drivers)
129   GL_ARB_shader_precision                              DONE (all drivers that support GLSL 4.10)
130   GL_ARB_vertex_attrib_64bit                           DONE (r600, llvmpipe, softpipe)
131   GL_ARB_viewport_array                                DONE (i965, nv50, r600, llvmpipe)
132
133
134 GL 4.2, GLSL 4.20:
135
136   GL_ARB_texture_compression_bptc                      DONE (i965, nvc0, r600, radeonsi)
137   GL_ARB_compressed_texture_pixel_storage              DONE (all drivers)
138   GL_ARB_shader_atomic_counters                        DONE (i965)
139   GL_ARB_texture_storage                               DONE (all drivers)
140   GL_ARB_transform_feedback_instanced                  DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
141   GL_ARB_base_instance                                 DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
142   GL_ARB_shader_image_load_store                       DONE (i965)
143   GL_ARB_conservative_depth                            DONE (all drivers that support GLSL 1.30)
144   GL_ARB_shading_language_420pack                      DONE (all drivers that support GLSL 1.30)
145   GL_ARB_shading_language_packing                      DONE (all drivers)
146   GL_ARB_internalformat_query                          DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
147   GL_ARB_map_buffer_alignment                          DONE (all drivers)
148
149
150 GL 4.3, GLSL 4.30:
151
152   GL_ARB_arrays_of_arrays                              DONE (i965)
153   GL_ARB_ES3_compatibility                             DONE (all drivers that support GLSL 3.30)
154   GL_ARB_clear_buffer_object                           DONE (all drivers)
155   GL_ARB_compute_shader                                in progress (jljusten)
156   GL_ARB_copy_image                                    DONE (i965, nv50, nvc0, radeonsi)
157   GL_KHR_debug                                         DONE (all drivers)
158   GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
159   GL_ARB_fragment_layer_viewport                       DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe)
160   GL_ARB_framebuffer_no_attachments                    DONE (i965)
161   GL_ARB_internalformat_query2                         not started
162   GL_ARB_invalidate_subdata                            DONE (all drivers)
163   GL_ARB_multi_draw_indirect                           DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
164   GL_ARB_program_interface_query                       DONE (all drivers)
165   GL_ARB_robust_buffer_access_behavior                 not started
166   GL_ARB_shader_image_size                             DONE (i965)
167   GL_ARB_shader_storage_buffer_object                  DONE (i965)
168   GL_ARB_stencil_texturing                             DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
169   GL_ARB_texture_buffer_range                          DONE (nv50, nvc0, i965, r600, radeonsi, llvmpipe)
170   GL_ARB_texture_query_levels                          DONE (all drivers that support GLSL 1.30)
171   GL_ARB_texture_storage_multisample                   DONE (all drivers that support GL_ARB_texture_multisample)
172   GL_ARB_texture_view                                  DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
173   GL_ARB_vertex_attrib_binding                         DONE (all drivers)
174
175
176 GL 4.4, GLSL 4.40:
177
178   GL_MAX_VERTEX_ATTRIB_STRIDE                          DONE (all drivers)
179   GL_ARB_buffer_storage                                DONE (i965, nv50, nvc0, r600, radeonsi)
180   GL_ARB_clear_texture                                 DONE (i965) (gallium - in progress, VMware)
181   GL_ARB_enhanced_layouts                              in progress (Timothy)
182   - compile-time constant expressions                  in progress
183   - explicit byte offsets for blocks                   in progress
184   - forced alignment within blocks                     in progress
185   - specified vec4-slot component numbers              in progress
186   - specified transform/feedback layout                in progress
187   - input/output block locations                       in progress
188   GL_ARB_multi_bind                                    DONE (all drivers)
189   GL_ARB_query_buffer_object                           not started
190   GL_ARB_texture_mirror_clamp_to_edge                  DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
191   GL_ARB_texture_stencil8                              DONE (nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
192   GL_ARB_vertex_type_10f_11f_11f_rev                   DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
193
194 GL 4.5, GLSL 4.50:
195
196   GL_ARB_ES3_1_compatibility                           not started
197   GL_ARB_clip_control                                  DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
198   GL_ARB_conditional_render_inverted                   DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
199   GL_ARB_cull_distance                                 in progress (Tobias)
200   GL_ARB_derivative_control                            DONE (i965, nv50, nvc0, r600, radeonsi)
201   GL_ARB_direct_state_access                           DONE (all drivers)
202   GL_ARB_get_texture_sub_image                         DONE (all drivers)
203   GL_ARB_shader_texture_image_samples                  DONE (i965, nv50, nvc0, r600, radeonsi)
204   GL_ARB_texture_barrier                               DONE (i965, nv50, nvc0, r600, radeonsi)
205   GL_KHR_context_flush_control                         DONE (all - but needs GLX/EGL extension to be useful)
206   GL_KHR_robust_buffer_access_behavior                 not started
207   GL_KHR_robustness                                    90% done (the ARB variant)
208   GL_EXT_shader_integer_mix                            DONE (all drivers that support GLSL)
209
210 These are the extensions cherry-picked to make GLES 3.1
211 GLES3.1, GLSL ES 3.1
212   GL_ARB_arrays_of_arrays                              DONE (i965)
213   GL_ARB_compute_shader                                in progress (jljusten)
214   GL_ARB_draw_indirect                                 DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
215   GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
216   GL_ARB_framebuffer_no_attachments                    DONE (i965)
217   GL_ARB_program_interface_query                       DONE (all drivers)
218   GL_ARB_shader_atomic_counters                        DONE (i965)
219   GL_ARB_shader_image_load_store                       DONE (i965)
220   GL_ARB_shader_image_size                             DONE (i965)
221   GL_ARB_shader_storage_buffer_object                  DONE (i965)
222   GL_ARB_shading_language_packing                      DONE (all drivers)
223   GL_ARB_separate_shader_objects                       DONE (all drivers)
224   GL_ARB_stencil_texturing                             DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
225   Multisample textures (GL_ARB_texture_multisample)    DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
226   GL_ARB_texture_storage_multisample                   DONE (all drivers that support GL_ARB_texture_multisample)
227   GL_ARB_vertex_attrib_binding                         DONE (all drivers)
228   GS5 Enhanced textureGather                           DONE (i965, nvc0, r600, radeonsi)
229   GS5 Packing/bitfield/conversion functions            DONE (i965, nvc0, r600, radeonsi)
230   GL_EXT_shader_integer_mix                            DONE (all drivers that support GLSL)
231
232   Additional functionality not covered above:
233       glMemoryBarrierByRegion                          DONE
234       glGetTexLevelParameter[fi]v - needs updates      DONE
235       glGetBooleani_v - restrict to GLES enums
236       gl_HelperInvocation support
237
238 GLES3.2, GLSL ES 3.2
239   GL_EXT_color_buffer_float                            DONE (all drivers)
240   GL_KHR_blend_equation_advanced                       not started
241   GL_KHR_debug                                         DONE (all drivers)
242   GL_KHR_robustness                                    90% done (the ARB variant)
243   GL_KHR_texture_compression_astc_ldr                  DONE (i965/gen9+)
244   GL_OES_copy_image                                    not started (based on GL_ARB_copy_image, which is done for some drivers)
245   GL_OES_draw_buffers_indexed                          not started
246   GL_OES_draw_elements_base_vertex                     DONE (all drivers)
247   GL_OES_geometry_shader                               not started (based on GL_ARB_geometry_shader4, which is done for all drivers)
248   GL_OES_gpu_shader5                                   not started (based on parts of GL_ARB_gpu_shader5, which is done for some drivers)
249   GL_OES_primitive_bounding box                        not started
250   GL_OES_sample_shading                                not started (based on parts of GL_ARB_sample_shading, which is done for some drivers)
251   GL_OES_sample_variables                              not started (based on parts of GL_ARB_sample_shading, which is done for some drivers)
252   GL_OES_shader_image_atomic                           not started (based on parts of GL_ARB_shader_image_load_store, which is done for some drivers)
253   GL_OES_shader_io_blocks                              not started (based on parts of GLSL 1.50, which is done)
254   GL_OES_shader_multisample_interpolation              not started (based on parts of GL_ARB_gpu_shader5, which is done)
255   GL_OES_tessellation_shader                           not started (based on GL_ARB_tessellation_shader, which is done for some drivers)
256   GL_OES_texture_border_clamp                          not started (based on GL_ARB_texture_border_clamp, which is done)
257   GL_OES_texture_buffer                                not started (based on GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_range, and GL_ARB_texture_buffer_object_rgb32 that are all done)
258   GL_OES_texture_cube_map_array                        not started (based on GL_ARB_texture_cube_map_array, which is done for all drivers)
259   GL_OES_texture_stencil8                              not started (based on GL_ARB_texture_stencil8, which is done for some drivers)
260   GL_OES_texture_storage_multisample_2d_array          DONE (all drivers that support GL_ARB_texture_multisample)
261
262 More info about these features and the work involved can be found at
263 http://dri.freedesktop.org/wiki/MissingFunctionality