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:
Can’t wait to test the tessellation demo of GpuTest with OS X 10.9…
GpuTest for Max OS X with OpenGL 4 ready test
Any news about OGL 4.1 core profile?
Yeah, it should be 4.0.
Is it 3.2 or 4.1 or
3.2 vs 3.3 vs 4.0 vs …
I suppose Apple will add something like kCGLOGLPVersion_4_1_Core and NSOpenGLProfileVersion4_1Core to the new OpenGL SDK.
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!
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.
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)!
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
The OpenCL 1.2 support on Nvidia cards, as well as HD4000 OpenCL support are both great news! Thanks a lot 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.
*/
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.
“it’s supporting host unified memory” IOSurface handles unified memory between OpenCL, OpenGL, GLKit, etc
Where are the headers?
ls -lrt /System/Library/Frameworks/OpenGL.framework/Headers
ls: /System/Library/Frameworks/OpenGL.framework/Headers: No such file or directory
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.