Apple Adds OpenGL 4 Support in OS X 10.9 Mavericks!

Mac OS X 10.9 Mavericks


Yeah, it’s official, Apple has finally updated the OpenGL support in its new version of OS X. OS X 10.9 codenamed Mavericks will be available with… OpenGL 4.1 core profile!

Okay, OS X is still in late compared to Windows / Linux (OpenGL 4.3) but it’s a great news!

Here is the interesting part of OS X 10.9 release notes:

OpenGL 4 in OS X 10.9

Mac OS X 10.9 Mavericks

Can’t wait to test the tessellation demo of GpuTest with OS X 10.9…

GpuTest 0.4.0 with OpenGL 4 test for Mac OS X
GpuTest for Max OS X with OpenGL 4 ready test




13 thoughts on “Apple Adds OpenGL 4 Support in OS X 10.9 Mavericks!”

  1. przemoli

    Yeah, it should be 4.0.

    Is it 3.2 or 4.1 or
    3.2 vs 3.3 vs 4.0 vs …

  2. JeGX Post Author

    I suppose Apple will add something like kCGLOGLPVersion_4_1_Core and NSOpenGLProfileVersion4_1Core to the new OpenGL SDK.

  3. sfsdf

    Nice!

    OpenGL 4.1 also means ARB_ES2_compatibility supported which means being able to use OpenGL ES2 code usable on Macs in addition to smartphones! Unified code base win!

  4. ltcommander.data

    Any chance of posting the full extensions list? Hopefully they’ll be adding compute shader extensions support since it’s becoming increasingly popular for DX11 games.

  5. JeGX Post Author

    Compute shaders are part of the OpenGL 4.3 core so I don’t think Apple will add this support. But on some hardware like NVIDIA GPUs, maybe compute shaders will be available (like with the tessellation)!

  6. cmf

    the flag/enum to create an opengl core context stayed the same (kCGLOGLPVersion_3_2_Core), so all programs already creating an opengl core context automatically use opengl 4.1 now.

    besides opencl support for intel gpus (yay), nvidia cards also support opencl 1.2 now (extension list below).

    opengl 4.1 extension list:
    Renderer: NVIDIA GeForce GT 650M OpenGL Engine
    Vendor: NVIDIA Corporation
    Version: 4.1 NVIDIA-8.18.2 310.40.05b03
    GLSL Version: 4.10
    Extensions (48):
    GL_APPLE_client_storage
    GL_APPLE_container_object_shareable
    GL_APPLE_flush_render
    GL_APPLE_object_purgeable
    GL_APPLE_rgb_422
    GL_APPLE_row_bytes
    GL_APPLE_texture_range
    GL_ARB_ES2_compatibility
    GL_ARB_blend_func_extended
    GL_ARB_draw_buffers_blend
    GL_ARB_draw_indirect
    GL_ARB_explicit_attrib_location
    GL_ARB_gpu_shader5
    GL_ARB_gpu_shader_fp64
    GL_ARB_instanced_arrays
    GL_ARB_internalformat_query
    GL_ARB_occlusion_query2
    GL_ARB_sample_shading
    GL_ARB_sampler_objects
    GL_ARB_separate_shader_objects
    GL_ARB_shader_bit_encoding
    GL_ARB_shader_precision
    GL_ARB_shader_subroutine
    GL_ARB_shading_language_include
    GL_ARB_tessellation_shader
    GL_ARB_texture_buffer_object_rgb32
    GL_ARB_texture_cube_map_array
    GL_ARB_texture_gather
    GL_ARB_texture_query_lod
    GL_ARB_texture_rgb10_a2ui
    GL_ARB_texture_storage
    GL_ARB_texture_swizzle
    GL_ARB_timer_query
    GL_ARB_transform_feedback2
    GL_ARB_transform_feedback3
    GL_ARB_vertex_attrib_64bit
    GL_ARB_vertex_type_2_10_10_10_rev
    GL_ARB_viewport_array
    GL_ATI_texture_mirror_once
    GL_EXT_debug_label
    GL_EXT_debug_marker
    GL_EXT_depth_bounds_test
    GL_EXT_framebuffer_multisample_blit_scaled
    GL_EXT_texture_compression_s3tc
    GL_EXT_texture_filter_anisotropic
    GL_EXT_texture_mirror_clamp
    GL_EXT_texture_sRGB_decode
    GL_NV_texture_barrier

    opencl info:
    [Device 1]
    Name: GeForce GT 650M
    Vendor: NVIDIA
    Type: GPU
    Device Version: OpenCL 1.2
    Device C Version: OpenCL C 1.2
    Driver Version: 8.18.2 310.40.05b03
    Compute Units: 2
    Work Group Size: 1024
    Clock: 900 MHz
    Global Memory: 1024 MB
    Local Memory: 48 KB
    Cache Size: 0 Bytes
    Cache Line Size: 0 Bytes
    Available: Yes
    Double-Precision: Yes
    Extensions (18):
    cl_APPLE_ContextLoggingFunctions
    cl_APPLE_SetMemObjectDestructor
    cl_APPLE_clut
    cl_APPLE_fp64_basic_ops
    cl_APPLE_gl_sharing
    cl_APPLE_query_kernel_names
    cl_khr_3d_image_writes
    cl_khr_byte_addressable_store
    cl_khr_depth_images
    cl_khr_fp64
    cl_khr_gl_depth_images
    cl_khr_gl_event
    cl_khr_gl_msaa_sharing
    cl_khr_global_int32_base_atomics
    cl_khr_global_int32_extended_atomics
    cl_khr_image2d_from_buffer
    cl_khr_local_int32_base_atomics
    cl_khr_local_int32_extended_atomics

    [Device 2]
    Name: HD Graphics 4000
    Vendor: Intel
    Type: GPU
    Device Version: OpenCL 1.2
    Device C Version: OpenCL C 1.2
    Driver Version: 1.2(Jun 2 2013 01:29:41)
    Compute Units: 16
    Work Group Size: 512
    Clock: 1200 MHz
    Global Memory: 1024 MB
    Local Memory: 64 KB
    Cache Size: 0 Bytes
    Cache Line Size: 0 Bytes
    Available: Yes
    Double-Precision: No
    Extensions (14):
    cl_APPLE_ContextLoggingFunctions
    cl_APPLE_SetMemObjectDestructor
    cl_APPLE_clut
    cl_APPLE_gl_sharing
    cl_APPLE_query_kernel_names
    cl_khr_byte_addressable_store
    cl_khr_depth_images
    cl_khr_gl_depth_images
    cl_khr_gl_event
    cl_khr_global_int32_base_atomics
    cl_khr_global_int32_extended_atomics
    cl_khr_image2d_from_buffer
    cl_khr_local_int32_base_atomics
    cl_khr_local_int32_extended_atomics

  7. rahul

    The OpenCL 1.2 support on Nvidia cards, as well as HD4000 OpenCL support are both great news! Thanks a lot cmf!

  8. cmf

    after some testing, I have to say that opencl support on the intel gpu is quite solid. the only thing that seems to be broken is retrieving compiled opencl program/kernel binaries (amd gpus on os x have the same issue). performance is about 1/3 of the gt 650m. and it’s supporting host unified memory (haven’t tested it yet, but the flag is set).

    also supported by both the intel and the nvidia gpu *drumroll*: printf 🙂

    unsupported by both: device partitioning and built-in kernels (does anybody support this?)

    apparently as an alternative to device partitioning, apple has added a new extension called “cl_APPLE_command_queue_select_compute_units”.
    info from cl_ext.h:
    /* Extension: clCreateCommandQueueWithPropertiesAPPLE
    * Create a command queue for the specified device. The properties array
    * specifies a list of command queue property names and their corresponding
    * values. Each property name is immediately followed by the corresponding
    * value. The list is terminated with 0.
    *
    * List of supported properties are:
    *
    * CL_QUEUE_PROPERTIES cl_command_queue_properties bitfield
    * ( CL_QUEUE_PROFILING_ENABLE,
    * CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE)
    *
    * CL_COMMAND_QUEUE_PRIORITY_APPLE cl_queue_properties_APPLE
    * ( CL_COMMAND_QUEUE_PRIORITY_DEFAULT_APPLE,
    * CL_COMMAND_QUEUE_PRIORITY_BACKGROUND_APPLE )
    *
    * These properties may only be used if the cl_APPLE_command_queue_priority is
    * supported by the device.
    *
    * CL_COMMAND_QUEUE_NUM_COMPUTE_UNITS_APPLE int (value can be 1 .. CL_DEVICE_MAX_COMPUTE_UNITS).
    *
    * This property may only be used if the
    * cl_APPLE_command_queue_select_compute_units extension is supported by the
    * device.
    */

  9. Christophe

    I hope that Mavericks will signal a return of stereoscopic 3D support. It worked OK in 10.6, and it has been downhill since then.

  10. Jake

    “it’s supporting host unified memory” IOSurface handles unified memory between OpenCL, OpenGL, GLKit, etc

  11. Sean McGuffee

    Where are the headers?
    ls -lrt /System/Library/Frameworks/OpenGL.framework/Headers
    ls: /System/Library/Frameworks/OpenGL.framework/Headers: No such file or directory

  12. Bert

    Just bought a PNY quadro 4000 for Mac. Guess what…there are no drivers for Mavericks. Useless at this time. I guess I have to return the card or erase my hard drive and go back to Mountain Lion. Don’t download Mavericks until they have drivers for your video card.

Comments are closed.