Today's post is going to be extra dorky so if you're more into yoga and fitness, feel free to step away. A while back I ran across a blog post by a man named Steve Troughton-Smith that described how to run arbitrary code on the Apple Watch. Apple itself only allows running a tightly restricted subset of their libraries on the watch, and one of the things you can't do (officially) is run raw OpenGL. But this guy figured out how to run basically anything. You can't submit what you make to the App Store (obviously), but it's cool. So today I sat down and got his stuff working with OpenGL and GLKit to explore the performance of the Watch. I ran some basic tests and got some preliminary information. If any of this is interesting to you and you want to know more please feel free to comment:
GL_VENDOR Imagination Technologies
GL_RENDERER PowerVR SGX 543
GL_VERSION OpenGL ES 2.0 IMGSGX543-124.1
GL_EXTENSIONS GL_OES_depth_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fb_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_seperate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_levels GL_APPLE_texture_packed_float GL_IMG_read_format GL_IMG_texture_compression_pvrtc
The SGK543 is the same chip found in the iPhone 5. Of course the chip in the watch is likely to be tuned differently; I imagine the clock speed is lower to extend battery life. But I'll try to find out more.
The chip can render 50k full screen quads at 2.25 seconds per frame, which is not bad. We should have all the performance we need to run some cool demos and games. But that will be the subject of a future post.