I took the time this morning to replug my GIGABYTE H67 mobo to test the latest Intel GMA (Graphics Media Accelerator) driver version 15.22.50.64.2509. You can download it here: Intel GMA for Win7/Vista 64-bit.
The CPU is a Sandy Bridge Core i5 2400 with a HD 2000 GPU.
The v8.15.10.2509 driver exposes OpenGL 3.1 API but partially: GL_ARB_draw_instanced, GL_ARB_copy_buffer, GL_NV_primitive_restart, GL_ARB_texture_rectangle and GL_ARB_uniform_buffer_object are exposed whereas GL_ARB_texture_buffer_object is not exposed.
Some OpenGL 3.3 features such as GL_ARB_sampler_objects (see this page for a tutorial) are present 😉
Currently, 116 OpenGL extensions (GL=103 and WGL=13) are exposed. See the end of the post for the complete list of OpenGL extensions. For comparison, latest NVIDIA R285.27 exposes 290 extensions and latest AMD Catalyst 11.8 Preview 2 exposes 231 extensions.
GPU Caps Viewer (v1.14.1 not released yet)
GPU Caps Viewer OpenGL 3 and OpenGL 2 demos run fine (slow but fine!) on the HD 2000 GPU.
I also tested MSI Kombustor D3D9 and D3D10 rendering and DX9 / DX10 support seem correct.
Here are the 116 OpenGL extensions exposed by Intel GMA 8.15.10.2509 driver (Win7 64-bit, HD 2000 GPU):
- GL_EXT_blend_minmax
- GL_EXT_blend_subtract
- GL_EXT_blend_color
- GL_EXT_abgr
- GL_EXT_texture3D
- GL_EXT_clip_volume_hint
- GL_EXT_compiled_vertex_array
- GL_SGIS_texture_edge_clamp
- GL_SGIS_generate_mipmap
- GL_EXT_draw_range_elements
- GL_SGIS_texture_lod
- GL_EXT_rescale_normal
- GL_EXT_packed_pixels
- GL_EXT_texture_edge_clamp
- GL_EXT_separate_specular_color
- GL_ARB_multitexture
- GL_EXT_texture_env_combine
- GL_EXT_bgra
- GL_EXT_blend_func_separate
- GL_EXT_secondary_color
- GL_EXT_fog_coord
- GL_EXT_texture_env_add
- GL_ARB_texture_cube_map
- GL_ARB_transpose_matrix
- GL_ARB_texture_env_add
- GL_IBM_texture_mirrored_repeat
- GL_EXT_multi_draw_arrays
- GL_NV_blend_square
- GL_ARB_texture_compression
- GL_3DFX_texture_compression_FXT1
- GL_EXT_texture_filter_anisotropic
- GL_ARB_texture_border_clamp
- GL_ARB_point_parameters
- GL_ARB_texture_env_combine
- GL_ARB_texture_env_dot3
- GL_ARB_texture_env_crossbar
- GL_EXT_texture_compression_s3tc
- GL_ARB_shadow
- GL_ARB_window_pos
- GL_EXT_shadow_funcs
- GL_EXT_stencil_wrap
- GL_ARB_vertex_program
- GL_EXT_texture_rectangle
- GL_ARB_fragment_program
- GL_EXT_stencil_two_side
- GL_ATI_separate_stencil
- GL_ARB_vertex_buffer_object
- GL_EXT_texture_lod_bias
- GL_ARB_occlusion_query
- GL_ARB_fragment_shader
- GL_ARB_shader_objects
- GL_ARB_shading_language_100
- GL_ARB_texture_non_power_of_two
- GL_ARB_vertex_shader
- GL_NV_texgen_reflection
- GL_ARB_point_sprite
- GL_ARB_fragment_program_shadow
- GL_EXT_blend_equation_separate
- GL_ARB_depth_texture
- GL_ARB_texture_rectangle
- GL_ARB_draw_buffers
- GL_ARB_color_buffer_float
- GL_ARB_half_float_pixel
- GL_ARB_texture_float
- GL_ARB_pixel_buffer_object
- GL_EXT_framebuffer_object
- GL_ARB_draw_instanced
- GL_ARB_half_float_vertex
- GL_EXT_draw_buffers2
- GL_WIN_swap_hint
- GL_EXT_texture_sRGB
- GL_ARB_multisample
- GL_EXT_packed_float
- GL_EXT_texture_shared_exponent
- GL_ARB_texture_rg
- GL_ARB_texture_compression_rgtc
- GL_NV_conditional_render
- GL_EXT_texture_swizzle
- GL_ARB_sync
- GL_ARB_framebuffer_sRGB
- GL_EXT_packed_depth_stencil
- GL_ARB_depth_buffer_float
- GL_EXT_transform_feedback
- GL_EXT_framebuffer_blit
- GL_EXT_framebuffer_multisample
- GL_ARB_framebuffer_object
- GL_EXT_texture_array
- GL_EXT_texture_integer
- GL_ARB_map_buffer_range
- GL_EXT_texture_snorm
- GL_INTEL_performance_queries
- GL_ARB_copy_buffer
- GL_ARB_sampler_objects
- GL_NV_primitive_restart
- GL_ARB_seamless_cube_map
- GL_ARB_uniform_buffer_object
- GL_ARB_depth_clamp
- GL_ARB_vertex_array_bgra
- GL_ARB_draw_elements_base_vertex
- GL_ARB_fragment_coord_conventions
- GL_EXT_gpu_program_parameters
- GL_ARB_compatibility
- GL_ARB_vertex_array_object
- WGL_EXT_depth_float
- WGL_ARB_buffer_region
- WGL_ARB_extensions_string
- WGL_ARB_make_current_read
- WGL_ARB_pixel_format
- WGL_ARB_pbuffer
- WGL_EXT_extensions_string
- WGL_EXT_swap_control
- WGL_ARB_multisample
- WGL_ARB_pixel_format_float
- WGL_ARB_framebuffer_sRGB
- WGL_ARB_create_context
- WGL_EXT_pixel_format_packed_float
Here are some caps reported by GPU Caps Viewer:
- GL_MAX_LIST_NESTING: 64
- GL_MAX_EVAL_ORDER: 32
- GL_MAX_LIGHTS: 8
- GL_MAX_CLIP_PLANES: 6
- GL_MAX_TEXTURE_SIZE: 8192
- GL_MAX_PIXEL_MAP_TABLE: 65536
- GL_MAX_ATTRIB_STACK_DEPTH: 16
- GL_MAX_MODELVIEW_STACK_DEPTH: 32
- GL_MAX_NAME_STACK_DEPTH: 128
- GL_MAX_PROJECTION_STACK_DEPTH: 4
- GL_MAX_TEXTURE_STACK_DEPTH: 10
- GL_MAX_VIEWPORT_DIMS: 8192
- GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 16
- GL_MAX_3D_TEXTURE_SIZE: 2048
- GL_MAX_ELEMENTS_VERTICES: 1200
- GL_MAX_ELEMENTS_INDICES: 1200
- GL_MAX_TEXTURE_UNITS: 8
- GL_MAX_CUBE_MAP_TEXTURE_SIZE: 8192
- GL_MAX_TEXTURE_LOD_BIAS: 15
- GL_MAX_DRAW_BUFFERS: 8
- GL_MAX_VERTEX_ATTRIBS: 16
- GL_MAX_TEXTURE_COORDS: 8
- GL_MAX_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: 1024
- GL_MAX_VERTEX_UNIFORM_COMPONENTS: 512
- GL_MAX_VARYING_FLOATS: 41
- GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_TEXTURE_COORDS: 8
- GL_MAX_CLIP_DISTANCES: 6
- GL_MAX_ARRAY_TEXTURE_LAYERS: 256
- GL_MAX_VARYING_COMPONENTS: 41
- GL_MIN_PROGRAM_TEXEL_OFFSET: 0
- GL_MAX_PROGRAM_TEXEL_OFFSET: 0
- GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 4
- GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 64
- GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 4
- GL_MAX_RENDERBUFFER_SIZE: 4096
- GL_MAX_COLOR_ATTACHMENTS: 8
- GL_MAX_SAMPLES: 4
- GL_MAX_RECTANGLE_TEXTURE_SIZE: 8192
- GL_MAX_TEXTURE_BUFFER_SIZE: 65536
- GL_MAX_VERTEX_UNIFORM_BLOCKS: 12
- GL_MAX_FRAGMENT_UNIFORM_BLOCKS: 12
- GL_MAX_COMBINED_UNIFORM_BLOCKS: 24
- GL_MAX_UNIFORM_BUFFER_BINDINGS: 24
- GL_MAX_UNIFORM_BLOCK_SIZE: 16384
- GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 1
- GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 1
- GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: 0
- GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: 0
- GL_MAX_GEOMETRY_OUTPUT_VERTICES: 0
- GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: 0
- GL_MAX_VERTEX_OUTPUT_COMPONENTS: 0
- GL_MAX_GEOMETRY_INPUT_COMPONENTS: 0
- GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: 0
- GL_MAX_FRAGMENT_INPUT_COMPONENTS: 0
- GL_MAX_VARYING_COMPONENTS: 41
- GL_MAX_SERVER_WAIT_TIMEOUT: 0
- GL_MAX_SAMPLE_MASK_WORDS: 1
- GL_MAX_COLOR_TEXTURE_SAMPLES: 4
- GL_MAX_DEPTH_TEXTURE_SAMPLES: 4
- GL_MAX_INTEGER_SAMPLES: 4
- GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: 0
- GL_MIN_SAMPLE_SHADING_VALUE: 0
- GL_MAX_GEOMETRY_SHADER_INVOCATIONS: 0
- GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: 0
- GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: 0
- GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: 0
- GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: 0
- GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS: 0
- GL_MAX_VERTEX_STREAMS: 0
- GL_MAX_SUBROUTINES: 0
- GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: 0
- GL_MAX_PATCH_VERTICES: 0
- GL_MAX_TESS_GEN_LEVEL: 0
- GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: 0
- GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: 0
- GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: 0
- GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: 0
- GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: 0
- GL_MAX_TESS_PATCH_COMPONENTS: 0
- GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: 0
- GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: 0
- GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: 0
- GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: 0
- GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: 0
- GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: 0
- GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: 0
- GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: 0
- GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: 0
- GL_MAX_VERTEX_UNIFORM_VECTORS: 0
- GL_MAX_VARYING_VECTORS: 0
- GL_MAX_FRAGMENT_UNIFORM_VECTORS: 0
- GL_MAX_VIEWPORTS: 0
- GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: 0
- GL_MAX_VERTEX_ATOMIC_COUNTERS: 0
- GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: 0
- GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: 0
- GL_MAX_GEOMETRY_ATOMIC_COUNTERS: 0
- GL_MAX_FRAGMENT_ATOMIC_COUNTERS: 0
- GL_MAX_COMBINED_ATOMIC_COUNTERS: 0
- GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: 0
- GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: 0
- GL_MAX_IMAGE_UNITS: 0
- GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: 0
- GL_MAX_IMAGE_SAMPLES: 0
- GL_MAX_VERTEX_IMAGE_UNIFORMS: 0
- GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: 0
- GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: 0
- GL_MAX_GEOMETRY_IMAGE_UNIFORMS: 0
- GL_MAX_FRAGMENT_IMAGE_UNIFORMS: 0
- GL_MAX_COMBINED_IMAGE_UNIFORMS: 0
- GL_MAX_TEXTURE_UNITS_ARB: 8
- GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 16
- GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 16
- GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 8192
- GL_NUM_COMPRESSED_TEXTURE_FORMATS: 6
- GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 16.000000
- GL_MAX_VERTEX_UNIFORM_COMPONENTS: 512
- GL_MAX_VARYING_FLOATS: 41
- GL_MAX_VERTEX_ATTRIBS: 16
- GL_MAX_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: 16
- GL_MAX_TEXTURE_COORDS: 8
- GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 1024
- GL_MAX_VERTEX_ATTRIBS_ARB: 16
- GL_MAX_PROGRAM_MATRICES_ARB: 8
- GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 2
- GL_MAX_PROGRAM_MATRICES_ARB: 8
- GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 2
- GL_MAX_TEXTURE_COORDS_ARB: 8
- GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 16
- GL_MAX_VERTEX_UNIFORM_COMPONENTS: 512
- GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: 1024
- GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT: 0
- GL_MAX_VARYING_FLOATS: 41
- GL_MAX_VERTEX_ATTRIBS: 16
- GL_MAX_DRAW_BUFFERS_ARB: 8
- GL_MAX_RECTANGLE_TEXTURE_SIZE: 8192
- GL_MAX_COLOR_ATTACHMENTS: 8
- GL_MAX_RENDERBUFFER_SIZE: 4096
- GL_MAX_SAMPLES: 4
- GL_MAX_VERTEX_UNIFORM_BLOCKS: 12
- GL_MAX_GEOMETRY_UNIFORM_BLOCKS: 12
- GL_MAX_FRAGMENT_UNIFORM_BLOCKS: 12
- GL_MAX_COMBINED_UNIFORM_BLOCKS: 24
- GL_MAX_UNIFORM_BUFFER_BINDINGS: 24
- GL_MAX_UNIFORM_BLOCK_SIZE: 16384
- GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 1
- GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: 1
- GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 1
- GL_MAX_SERVER_WAIT_TIMEOUT: -1
- GL_POINT_SIZE_MIN_ARB: 0.000000
- GL_POINT_SIZE_MAX_ARB: 255.000000
- GL_MAX_ARRAY_TEXTURE_LAYERS_EXT: 256
It’s very pity but Intel OpenGL drivers is nightmare for any complex application. Some bugs are existing in drivers for years. Descriptions of these bugs are published at intel forums, but I didn’t see any reaction from support.
We were forced to make a lot of workarounds and disable some features in our OpenGL-based virtual world, because of Intel driver bugs.
@Jegx
I think GL_ARB_uniform_buffer_object this extension is present as i can see it in the list that you have mentioned.Also for me it is showing 117 extensions not sure though which one is present. Will let you know for sure. Thanks a lot for the post.
Yep you’re right, UBOs are supported by this driver.
Interesting
GL_ARB_texture_buffer_object isn’t exposed but GL_MAX_TEXTURE_BUFFER_SIZE = 65536. Did you try to query glTexBuffer?
The extension string might be missing.
@Christophe: you just gave me an idea…
Weird!! openGL extension viewer shows 117 extensions and when i compared with the list here and in openGL extension viewer all the extensions are there .. not sure which is the 117th extension 🙁
@Christophe: glTexBuffer is exposed:
GLinspector can be downloaded HERE.
I have a dream 🙂 I have a dream to see working shadowmaps on GL on Intel cards.
Even very simple example (http://www.gamedev.ru/files/?id=8461) is didn’t working.
Shadow maps work fine on Intel, at least on HD 2000 / HD 3000 GPUs, check the OpenGL Soft shadows demo of GPU Caps Viewer.
Even Linux’s Intel OpenGL driver supports more extensions than that.
I got 152 extensions on GMA 4500, Ubuntu 11.04, Mesa 7.12-devel
have a look at this page:
http://delphigl.de/glcapsviewer/listreports.php
I wish they’d stick to what they do best – cpus
Intel has released new drivers 8.15.10.2559 for HD Graphics(Clarkdale/Arrandale) and HD Graphics 2000/3000(Sandy Bridge).
32bit
http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=3319&DwnldID=20674
64bit
http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=3319&DwnldID=20676