mesa/cs: Add a MESA_SHADER_COMPUTE stage and update switch statements.
[mesa.git] / docs / GL3.txt
index 31add740391824159989d7ae7000ddde5660a35b..09c8caa28dd6a78da8dd0458ac66acd63604f2ed 100644 (file)
@@ -7,126 +7,177 @@ infrastructure is complete but it may be the case that few (if any) drivers
 implement the features.
 
 
+OpenGL Core and Compatibility context support
+
+OpenGL 3.1 and later versions are only supported with the Core profile.
+There are no plans to support GL_ARB_compatibility. The last supported OpenGL
+version with all deprecated features is 3.0. Some of the later GL features
+are exposed in the 3.0 context as extensions.
+
+
 Feature                                               Status
 ----------------------------------------------------- ------------------------
 
-GL 3.0:
-
-GLSL 1.30 (GL_EXT_gpu_shader4, etc.)                  started
-Conditional rendering (GL_NV_conditional_render)      DONE (swrast, softpipe, i965)
-Map buffer subranges (GL_ARB_map_buffer_range)        DONE
-Clamping controls (GL_ARB_color_buffer_float)         DONE
-Float textures, renderbuffers (GL_ARB_texture_float)  DONE (gallium r300)
-GL_EXT_packed_float                                   DONE (gallium r600)
-GL_EXT_texture_shared_exponent                        DONE (gallium, swrast)
-Float depth buffers (GL_ARB_depth_buffer_float)       DONE
-Framebuffer objects (GL_EXT_framebuffer_object)       DONE
-Half-float                                            DONE
-Multisample blit                                      DONE
-Non-normalized Integer texture/framebuffer formats    ~50% done
-1D/2D Texture arrays                                  core Mesa, swrast done
-Packed depth/stencil formats                          DONE
-Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE
-GL_EXT_texture_compression_rgtc                       DONE (swrast, gallium r600)
-Red and red/green texture formats                     DONE (swrast, i965, gallium)
-Transform feedback (GL_EXT_transform_feedback)        ~50% done
-   glBindFragDataLocation, glGetFragDataLocation,
-   glBindBufferRange, glBindBufferBase commands
-Vertex array objects (GL_APPLE_vertex_array_object)   DONE
-sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     core GL done (i965, gallium), GLX todo
-glClearBuffer commands                                DONE
-glGetStringi command                                  DONE
-glTexParameterI, glGetTexParameterI commands          DONE
-glVertexAttribI commands                              DONE (but converts int
-                                                            values to floats)
-Depth format cube textures                            0% done
-GLX_ARB_create_context (GLX 1.4 is required)          not started
-
-
-GL 3.1:
-
-GLSL 1.40                                             not started
-Instanced drawing (GL_ARB_draw_instanced)             DONE (gallium, swrast)
-Buffer copying (GL_ARB_copy_buffer)                   DONE
-Primitive restart (GL_NV_primitive_restart)           DONE (gallium)
-16 vertex texture image units                         DONE
-Texture buffer objs (GL_ARB_texture_buffer_object)    not started
-Rectangular textures (GL_ARB_texture_rectangle)       DONE
-Uniform buffer objs (GL_ARB_uniform_buffer_object)    not started
-Signed normalized textures (GL_EXT_texture_snorm)     DONE (gallium)
-
-
-GL 3.2:
-
-Core/compatibility profiles                           not started
-GLSL 1.50                                             not started
-Geometry shaders (GL_ARB_geometry_shader4)            partially done (Zack)
-BGRA vertex order (GL_ARB_vertex_array_bgra)          DONE
-Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE
-Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (swrast, gallium)
-Provoking vertex (GL_ARB_provoking_vertex)            DONE
-Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE
-Multisample textures (GL_ARB_texture_multisample)     not started
-Frag depth clamp (GL_ARB_depth_clamp)                 DONE
-Fence objects (GL_ARB_sync)                           DONE
-GLX_ARB_create_context_profile                        not started
-
-
-GL 3.3:
-
-GLSL 3.30                                             not started
-GL_ARB_blend_func_extended                            not started
-GL_ARB_explicit_attrib_location                       DONE (swrast, i915, i965)
-GL_ARB_occlusion_query2                               DONE (swrast, gallium)
-GL_ARB_sampler_objects                                DONE (gallium)
-GL_ARB_texture_rgb10_a2ui                             not started
-GL_ARB_texture_swizzle                                DONE (same as EXT version)
-GL_ARB_timer_query                                    ~60% done (the EXT variant)
-GL_ARB_instanced_arrays                               DONE (gallium)
-GL_ARB_vertex_type_2_10_10_10_rev                     DONE (gallium)
+GL 3.0 --- all DONE: i965, nv50, nvc0, r600, radeonsi
+
+  GLSL 1.30                                             DONE ()
+  glBindFragDataLocation, glGetFragDataLocation         DONE
+  Conditional rendering (GL_NV_conditional_render)      DONE (r300, swrast)
+  Map buffer subranges (GL_ARB_map_buffer_range)        DONE (r300, swrast)
+  Clamping controls (GL_ARB_color_buffer_float)         DONE (r300)
+  Float textures, renderbuffers (GL_ARB_texture_float)  DONE (r300)
+  GL_EXT_packed_float                                   DONE ()
+  GL_EXT_texture_shared_exponent                        DONE (swrast)
+  Float depth buffers (GL_ARB_depth_buffer_float)       DONE ()
+  Framebuffer objects (GL_ARB_framebuffer_object)       DONE (r300, swrast)
+  GL_ARB_half_float_pixel                               DONE (r300, swrast)
+  GL_ARB_half_float_vertex                              DONE (r300, swrast)
+  GL_EXT_texture_integer                                DONE ()
+  GL_EXT_texture_array                                  DONE ()
+  Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE (swrast)
+  GL_EXT_texture_compression_rgtc                       DONE (r300, swrast)
+  GL_ARB_texture_rg                                     DONE (r300, swrast)
+  Transform feedback (GL_EXT_transform_feedback)        DONE ()
+  Vertex array objects (GL_ARB_vertex_array_object)     DONE (all drivers)
+  sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     DONE ()
+  glClearBuffer commands                                DONE
+  glGetStringi command                                  DONE
+  glTexParameterI, glGetTexParameterI commands          DONE
+  glVertexAttribI commands                              DONE
+  Depth format cube textures                            DONE ()
+  GLX_ARB_create_context (GLX 1.4 is required)          DONE
+  Multisample anti-aliasing                             DONE (r300)
+
+
+GL 3.1 --- all DONE: i965, nv50, nvc0, r600, radeonsi
+
+  GLSL 1.40                                             DONE ()
+  Forward compatible context support/deprecations       DONE ()
+  Instanced drawing (GL_ARB_draw_instanced)             DONE (swrast)
+  Buffer copying (GL_ARB_copy_buffer)                   DONE (r300, swrast)
+  Primitive restart (GL_NV_primitive_restart)           DONE (r300)
+  16 vertex texture image units                         DONE ()
+  Texture buffer objs (GL_ARB_texture_buffer_object)    DONE for OpenGL 3.1 contexts ()
+  Rectangular textures (GL_ARB_texture_rectangle)       DONE (r300, swrast)
+  Uniform buffer objs (GL_ARB_uniform_buffer_object)    DONE (swrast)
+  Signed normalized textures (GL_EXT_texture_snorm)     DONE (r300)
+
+
+GL 3.2 --- all DONE: i965, nv50, nvc0, r600, radeonsi
+
+  Core/compatibility profiles                           DONE
+  GLSL 1.50                                             DONE ()
+  Geometry shaders                                      DONE ()
+  BGRA vertex order (GL_ARB_vertex_array_bgra)          DONE (r300, swrast)
+  Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE (r300, swrast)
+  Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (r300, swrast)
+  Provoking vertex (GL_ARB_provoking_vertex)            DONE (r300, swrast)
+  Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE ()
+  Multisample textures (GL_ARB_texture_multisample)     DONE ()
+  Frag depth clamp (GL_ARB_depth_clamp)                 DONE (swrast)
+  Fence objects (GL_ARB_sync)                           DONE (r300, swrast)
+  GLX_ARB_create_context_profile                        DONE
+
+
+GL 3.3 --- all DONE: i965, nv50, nvc0, r600, radeonsi
+
+  GLSL 3.30                                             DONE ()
+  GL_ARB_blend_func_extended                            DONE (softpipe)
+  GL_ARB_explicit_attrib_location                       DONE (all drivers that support GLSL)
+  GL_ARB_occlusion_query2                               DONE (r300, swrast)
+  GL_ARB_sampler_objects                                DONE (all drivers)
+  GL_ARB_shader_bit_encoding                            DONE ()
+  GL_ARB_texture_rgb10_a2ui                             DONE ()
+  GL_ARB_texture_swizzle                                DONE (r300, swrast)
+  GL_ARB_timer_query                                    DONE ()
+  GL_ARB_instanced_arrays                               DONE (r300)
+  GL_ARB_vertex_type_2_10_10_10_rev                     DONE ()
 
 
 GL 4.0:
 
-GLSL 4.0                                             not started
-GL_ARB_texture_query_lod                             not started
-GL_ARB_draw_buffers_blend                            DONE (gallium softpipe)
-GL_ARB_draw_indirect                                 not started
-GL_ARB_gpu_shader_fp64                               not started
-GL_ARB_sample_shading                                not started
-GL_ARB_shader_subroutine                             not started
-GL_ARB_tessellation_shader                           not started
-GL_ARB_texture_buffer_object_rgb32                   not started
-GL_ARB_texture_cube_map_array                        not started
-GL_ARB_texture_gather                                not started
-GL_ARB_transform_feedback2                           not started
-GL_ARB_transform_feedback3                           not started
+  GLSL 4.0                                             not started
+  GL_ARB_texture_query_lod                             DONE (i965)
+  GL_ARB_draw_buffers_blend                            DONE (i965, nv50, nvc0, r600, radeonsi, softpipe)
+  GL_ARB_draw_indirect                                 DONE (i965)
+  GL_ARB_gpu_shader5                                   started
+  GL_ARB_gpu_shader_fp64                               not started
+  GL_ARB_sample_shading                                DONE (i965)
+  GL_ARB_shader_subroutine                             not started
+  GL_ARB_tessellation_shader                           not started
+  GL_ARB_texture_buffer_object_rgb32                   DONE (i965, r600, radeonsi, softpipe)
+  GL_ARB_texture_cube_map_array                        DONE (i965, nvc0, r600, softpipe)
+  GL_ARB_texture_gather                                DONE (i965)
+  GL_ARB_transform_feedback2                           DONE (i965, nv50, nvc0, r600, radeonsi)
+  GL_ARB_transform_feedback3                           DONE (i965, nv50, nvc0, r600, radeonsi)
 
 
 GL 4.1:
 
-GLSL 4.1                                             not started
-GL_ARB_ES2_compatibility                             DONE (i965)
-GL_ARB_get_program_binary                            not started
-GL_ARB_separate_shader_objects                       some infrastructure done
-GL_ARB_shader_precision                              not started
-GL_ARB_vertex_attrib_64bit                           not started
-GL_ARB_viewport_array                                not started
+  GLSL 4.1                                             not started
+  GL_ARB_ES2_compatibility                             DONE (i965, nv50, nvc0, r300, r600, radeonsi)
+  GL_ARB_get_program_binary                            DONE (0 binary formats)
+  GL_ARB_separate_shader_objects                       started (Ian Romanick, Gregory Hainaut)
+  GL_ARB_shader_precision                              not started
+  GL_ARB_vertex_attrib_64bit                           not started
+  GL_ARB_viewport_array                                DONE (i965)
 
 
 GL 4.2:
-GLSL 4.2                                             not started
-GL_ARB_texture_compression_bptc                      not started
-GL_ARB_compressed_texture_pixel_storage              not started
-GL_ARB_shader_atomic_counters                        not started
-GL_ARB_texture_storage                               not started
-GL_ARB_transform_feedback_instanced                  not started
-GL_ARB_base_instance                                 not started
-GL_ARB_shader_image_load_store                       not started
-GL_ARB_conservative_depth                            DONE (compiler)
-GL_ARB_shading_language_420pack                      not started
-GL_ARB_internalformat_query                          not started
-GL_ARB_map_buffer_alignment                          not started
+
+  GLSL 4.2                                             not started
+  GL_ARB_texture_compression_bptc                      not started
+  GL_ARB_compressed_texture_pixel_storage              not started
+  GL_ARB_shader_atomic_counters                        DONE (i965)
+  GL_ARB_texture_storage                               DONE (all drivers)
+  GL_ARB_transform_feedback_instanced                  DONE (i965, nv50, nvc0, r600, radeonsi)
+  GL_ARB_base_instance                                 DONE (i965, nv50, nvc0, r600, radeonsi)
+  GL_ARB_shader_image_load_store                       in progress (curro)
+  GL_ARB_conservative_depth                            DONE (all drivers that support GLSL 1.30)
+  GL_ARB_shading_language_420pack                      DONE (all drivers that support GLSL 1.30)
+  GL_ARB_internalformat_query                          DONE (i965, nv50, nvc0, r300, r600, radeonsi)
+  GL_ARB_map_buffer_alignment                          DONE (all drivers)
+
+
+GL 4.3:
+
+  GLSL 4.3                                             not started
+  GL_ARB_arrays_of_arrays                              started
+  GL_ARB_ES3_compatibility                             DONE (i965)
+  GL_ARB_clear_buffer_object                           DONE (all drivers)
+  GL_ARB_compute_shader                                started (Paul Berry)
+  GL_ARB_copy_image                                    not started
+  GL_KHR_debug                                         DONE (all drivers)
+  GL_ARB_explicit_uniform_location                     not started
+  GL_ARB_fragment_layer_viewport                       not started
+  GL_ARB_framebuffer_no_attachments                    not started
+  GL_ARB_internalformat_query2                         not started
+  GL_ARB_invalidate_subdata                            DONE (all drivers)
+  GL_ARB_multi_draw_indirect                           DONE (i965)
+  GL_ARB_program_interface_query                       not started
+  GL_ARB_robust_buffer_access_behavior                 not started
+  GL_ARB_shader_image_size                             not started
+  GL_ARB_shader_storage_buffer_object                  not started
+  GL_ARB_stencil_texturing                             not started
+  GL_ARB_texture_buffer_range                          DONE (nv50, nvc0, i965, r600, radeonsi)
+  GL_ARB_texture_query_levels                          DONE (i965)
+  GL_ARB_texture_storage_multisample                   DONE (all drivers that support GL_ARB_texture_multisample)
+  GL_ARB_texture_view                                  started (Courtney Goeltzenleuchter, Chris Forbes)
+  GL_ARB_vertex_attrib_binding                         DONE (all drivers)
+
+
+GL 4.4:
+
+  GLSL 4.4                                             not started
+  GL_MAX_VERTEX_ATTRIB_STRIDE                          not started
+  GL_ARB_buffer_storage                                not started
+  GL_ARB_clear_texture                                 not started
+  GL_ARB_enhanced_layouts                              not started
+  GL_ARB_multi_bind                                    started (Fredrik Höglund)
+  GL_ARB_query_buffer_object                           not started
+  GL_ARB_texture_mirror_clamp_to_edge                  DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi, swrast)
+  GL_ARB_texture_stencil8                              not started
+  GL_ARB_vertex_type_10f_11f_11f_rev                   DONE (i965, r600)
 
 
 More info about these features and the work involved can be found at