The Khronos Group has released today, at the SIGGRAPH 2012, the OpenGL 4.3 specification. Among the new features, OpenGL 4.3 brings the support of a new kind of shader, the compute shader via the GL_ARB_compute_shader extension. And full backwards compatibility is maintained with old fixed functions. The new features of OpenGL 4.3 are summarized here:
New functionality in the OpenGL 4.3 specification includes: – compute shaders that harness GPU parallelism for advanced computation such as image, volume, and geometry processing within the context of the graphics pipeline; – shader storage buffer objects that enable vertex, tessellation, geometry, fragment and compute shaders to read and write large amounts of data and pass significant data between shader stages; – texture parameter queries to discover actual supported texture parameter limits on the current platform; – high quality ETC2 / EAC texture compression as a standard feature, eliminating the need for a different set of textures for each platform; – debug capability to receive debugging messages during application development; – texture views for interpreting textures in many different ways without duplicating the texture data itself; – indirect multi-draw that enables the GPU to compute and store parameters for multiple draw commands in a buffer object and re-use those parameters with one draw command, particularly efficient for rendering many objects with low triangle counts; – increased memory security that guarantees that an application cannot read or write outside its own buffers into another application’s data; – a multi-application robustness extension that ensures that an application that causes a GPU reset will not affect any other running applications.
You can find the complete specification HERE @ OpenGL.org or you can use these
- OpenGL 4.3 Core Profile Specification (updated August 6, 2012)
- OpenGL Shading Language 4.30.6 Specification (updated August 3, 2012)
Here are the new that should be exposed by an OpenGL 4.3 driver:
- GL_ARB_arrays_of_arrays: allows multi-dimensional arrays in GLSL. float f;
- GL_ARB_ES3_compatibility: brings EAC and ETC2 texture compression formats.
- GL_ARB_clear_buffer_object: clear a buffer object with a constant value.
- GL_ARB_compute_shader: introduces new shader stage and enables advanced processing algorithms that harness the parallelism of GPUs.
- GL_ARB_copy_image: direct copy of pixels between textures and render buffers.
- GL_ARB_explicit_uniform_location: set location of a default-block uniform in the shader.
- GL_ARB_fragment_layer_viewport: gl_Layer and gl_ViewportIndex now available to fragment shader.
- GL_ARB_internalformat_query2: find out actual supported limits for most texture parameters.
- GL_ARB_invalidate_subdata: invalidate all or some of the contents of textures and buffers.
- GL_ARB_multi_draw_indirect: draw many GPU generated objects with one call.
- GL_ARB_program_interface_query: generic API to enumerate active variables and interface blocks for each stage, enumerate active variables in interfaces between separable program objects.
- GL_ARB_robust_buffer_access_behavior: shader read/write to an object only allowed to data owned by the application, applies to out of bounds accesses.
- GL_ARB_shader_image_size: query size of an image in a shader.
- GL_ARB_shader_storage_buffer_object: enables all shader stages to read and write arbitrarily to very large buffers, great way for compute shaders to communicate to graphics pipeline.
- GL_ARB_stencil_texturing: read stencil bits of a packed depth-stencil texture.
- GL_ARB_texture_buffer_range: create texture buffer object corresponding to a subrange of a buffer’s data store.
- GL_ARB_texture_query_levels: query number of mipmap levels accessible through a sampler uniform.
- GL_ARB_texture_storage_multisample: immutable storage objects for multisampled textures.
- GL_ARB_texture_view: provide different ways to interpret texture data without duplicating the texture.
- GL_ARB_vertex_attrib_binding: separate vertex attribute state from the data stores of each array.
- GL_KHR_debug: enhanced debug context support.