Nvidia's Tegra K1 offers full OpenGL 4.5 support with proprietary extensions, so Tegra K1 has more hardware and software features than PowerVR 6 (and probably PVR7) even with Metal API. Yep, maybe Metal API is a modern API, but FP OpenGL has more features and with AZDO-techs you can achieve similar to Metal API performance. Yes, PVR6XT in iPad Air 2 scores equal results to Tegra K1 in GFXBench T-Rex/Manhattan tests but in more complex tests (for example with tesselation feature) Tegra K1 will be faster.
And with Metal API developers can target only PowerVR6-devices on iOS, but with FP OpenGL 4.* API support developers can target Windows/OSX/Linux on AMD/NVIDIA GPUs + Tegra K1/X1 on Android.
Considering "only" means 45M+ device a year (for the A8X), I think the develloppers will be happy with that....
I think that NVIDIA made a PR-mistake. The main advantage of newest Tegras (like K1 and X1) is hardware/software features, not performance. You can compare GL_extensions in Tegra and A8X.
Tegra:
GL_ANDROID_extension_pack_es31a
GL_EXT_base_instance
GL_EXT_blend_minmax
GL_EXT_buffer_storage
GL_EXT_color_buffer_float
GL_EXT_color_buffer_half_float
GL_EXT_copy_image
GL_EXT_debug_label
GL_EXT_debug_marker
GL_EXT_disjoint_timer_query
GL_EXT_draw_buffers_indexed
GL_EXT_draw_elements_base_vertex
GL_EXT_frag_depth
GL_EXT_geometry_point_size
GL_EXT_geometry_shader
GL_EXT_gpu_shader5
GL_EXT_map_buffer_range
GL_EXT_multi_draw_indirect
GL_EXT_occlusion_query_boolean
GL_EXT_post_depth_coverage
GL_EXT_primitive_bounding_box
GL_EXT_raster_multisample
GL_EXT_render_snorm
GL_EXT_robustness
GL_EXT_separate_shader_objects
GL_EXT_shader_implicit_conversions
GL_EXT_shader_integer_mix
GL_EXT_shader_io_blocks
GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers
GL_EXT_sRGB
GL_EXT_sRGB_write_control
GL_EXT_tessellation_point_size
GL_EXT_tessellation_shader
GL_EXT_texture_border_clamp
GL_EXT_texture_buffer
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map_array
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_filter_minmax
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_norm16
GL_EXT_texture_rg
GL_EXT_texture_sRGB_decode
GL_EXT_texture_storage
GL_EXT_texture_view
GL_EXT_unpack_subimage
GL_KHR_blend_equation_advanced
GL_KHR_blend_equation_advanced_coherent
GL_KHR_context_flush_control
GL_KHR_debug
GL_KHR_robust_buffer_access_behavior
GL_KHR_robustness
GL_KHR_texture_compression_astc_ldr
GL_NV_bgr
GL_NV_bindless_texture
GL_NV_blend_equation_advanced
GL_NV_blend_equation_advanced_coherent
GL_NV_conditional_render
GL_NV_conservative_raster
GL_NV_copy_buffer
GL_NV_copy_image
GL_NV_draw_buffers
GL_NV_draw_instanced
GL_NV_draw_texture
GL_NV_EGL_stream_consumer_external
GL_NV_explicit_attrib_location
GL_NV_fbo_color_attachments
GL_NV_fill_rectangle
GL_NV_fragment_coverage_to_color
GL_NV_fragment_shader_interlock
GL_NV_framebuffer_blit
GL_NV_framebuffer_mixed_samples
GL_NV_framebuffer_multisample
GL_NV_generate_mipmap_sRGB
GL_NV_geometry_shader_passthrough
GL_NV_image_formats
GL_NV_instanced_arrays
GL_NV_internalformat_sample_query
GL_NV_non_square_matrices
GL_NV_occlusion_query_samples
GL_NV_pack_subimage
GL_NV_packed_float
GL_NV_packed_float_linear
GL_NV_path_rendering
GL_NV_path_rendering_shared_edge
GL_NV_pixel_buffer_object
GL_NV_polygon_mode
GL_NV_read_buffer
GL_NV_read_depth
GL_NV_read_depth_stencil
GL_NV_read_stencil
GL_NV_sample_locations
GL_NV_sample_mask_override_coverage
GL_NV_secure_context
GL_NV_shader_noperspective_interpolation
GL_NV_shadow_samplers_array
GL_NV_shadow_samplers_cube
GL_NV_sRGB_formats
GL_NV_texture_array
GL_NV_texture_border_clamp
GL_NV_texture_compression_latc
GL_NV_texture_compression_s3tc
GL_NV_texture_compression_s3tc_update
GL_NV_timer_query
GL_NV_viewport_array
GL_NV_viewport_array2
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth_texture
GL_OES_depth_texture_cube_map
GL_OES_depth24
GL_OES_depth32
GL_OES_draw_buffers_indexed
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_sync
GL_OES_element_index_uint
GL_OES_fbo_render_mipmap
GL_OES_geometry_point_size
GL_OES_geometry_shader
GL_OES_get_program_binary
GL_OES_gpu_shader5
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_rgb8_rgba8
GL_OES_sample_shading
GL_OES_sample_variables
GL_OES_shader_image_atomic
GL_OES_shader_io_blocks
GL_OES_shader_multisample_interpolation
GL_OES_standard_derivatives
GL_OES_surfaceless_context
GL_OES_tessellation_point_size
GL_OES_tessellation_shader
GL_OES_texture_border_clamp
GL_OES_texture_buffer
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_texture_stencil8
GL_OES_texture_storage_multisample_2d_array
GL_OES_vertex_array_object
GL_OES_vertex_half_float
Apple A8X
GL_APPLE_clip_distance
GL_APPLE_color_buffer_packed_float
GL_APPLE_copy_texture_levels
GL_APPLE_rgb_422
GL_APPLE_texture_format_BGRA8888
GL_EXT_color_buffer_half_float
GL_EXT_debug_label
GL_EXT_debug_marker
GL_EXT_pvrtc_sRGB
GL_EXT_read_format_bgra
GL_EXT_separate_shader_objects
GL_EXT_shader_framebuffer_fetch
GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers
GL_EXT_texture_filter_anisotropic
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc
GL_KHR_texture_compression_astc_ldr
GL_OES_standard_derivatives
Game developers can do much more with Tegra than with any other mobile GPU. So, the main problem of Tegra is popularity. Technically K1/X1 are superior than PowerVR6, Adreno 4xx, Mali-T8xx etc (and even PowerVR 7). I don't want to say that Apple A8X is a bad SoC, no, it has a great GPU, great drivers, great new API from Apple, perfect SDKs, debuggers and profilers. But for game developers (from technical side) Tegra is better because it has a gaming-oriented GPU architecture. Of course, Tegra has problems with monetization, but it isn't the problem of technology.
Quote:
Originally Posted by Macky the Macky
However, being powerful while being a low power drain is also necessary for the mobile market.
You're right, A8X is slightly more power-efficient than Tegra K1, but that's because Apple used more efficient process node (20nm in A8X vs 28 nm in K1). On the same process node Tegra has equal consumption with better performance.
Quote:
Originally Posted by Macky the Macky
Welcome to the forum!
Thanks!
Quote:
Originally Posted by foggyhill
Considering "only" means 45M+ device a year (for the A8X)
You're right. I don't have information about sales of OpenGL-compatible PCs, but I know that modern AMDs, GeForce 4xx, 5xx, 6xx, 7xx, 8xx, 9xx, Haswell/Broadwell GPUs on Windows XP and higher, Linux and OS X 10.10 support OpenGL 4.* (+Tegra K1/X1 in shield tablet). Maybe A8X has more sales than these PCs/tablets, I don't know.
P. S. I don't have a TK1-powered device, so I talk only about theory.
Good article but I'd like to add a bit of missing history.
No account of Apple and graphics is complete without mentioning late 80s apple spin-off RasterOps, which made RISC processor based graphic processors, graphic cards and displays.
RasterOps eventually acquired AT+T spin-off Truevision and subsequently formed a strategic partnership with Hitachi, which took over hardware development under Hitachi Digital Graphics.
RasterOps approach using RISC processor cores and tons of "VRAM" was actually a good one at the time because acceleration performance was superior to early video processors but was far too expensive to work as a consumer market product (high end cards were more expensive than a PC).
Anyway, add that to the junk pile of history, company is long gone even though some vintage hardware is still available and collectable.
Then you're going to get a kick out of this story. Remember Pong? Well fast forward 35 years, I'm in my garage and I hear this noise, track it down and somehow my old pong set got turned on. Old batteries still good. I'm taking bids.
Comments
Good article! But I'm not agree with this point:
Nvidia's Tegra K1 offers full OpenGL 4.5 support with proprietary extensions, so Tegra K1 has more hardware and software features than PowerVR 6 (and probably PVR7) even with Metal API. Yep, maybe Metal API is a modern API, but FP OpenGL has more features and with AZDO-techs you can achieve similar to Metal API performance. Yes, PVR6XT in iPad Air 2 scores equal results to Tegra K1 in GFXBench T-Rex/Manhattan tests but in more complex tests (for example with tesselation feature) Tegra K1 will be faster.
And with Metal API developers can target only PowerVR6-devices on iOS, but with FP OpenGL 4.* API support developers can target Windows/OSX/Linux on AMD/NVIDIA GPUs + Tegra K1/X1 on Android.
Considering "only" means 45M+ device a year (for the A8X), I think the develloppers will be happy with that....
The K1 is a powerful chip
I think that NVIDIA made a PR-mistake. The main advantage of newest Tegras (like K1 and X1) is hardware/software features, not performance. You can compare GL_extensions in Tegra and A8X.
Tegra:
GL_EXT_base_instance
GL_EXT_blend_minmax
GL_EXT_buffer_storage
GL_EXT_color_buffer_float
GL_EXT_color_buffer_half_float
GL_EXT_copy_image
GL_EXT_debug_label
GL_EXT_debug_marker
GL_EXT_disjoint_timer_query
GL_EXT_draw_buffers_indexed
GL_EXT_draw_elements_base_vertex
GL_EXT_frag_depth
GL_EXT_geometry_point_size
GL_EXT_geometry_shader
GL_EXT_gpu_shader5
GL_EXT_map_buffer_range
GL_EXT_multi_draw_indirect
GL_EXT_occlusion_query_boolean
GL_EXT_post_depth_coverage
GL_EXT_primitive_bounding_box
GL_EXT_raster_multisample
GL_EXT_render_snorm
GL_EXT_robustness
GL_EXT_separate_shader_objects
GL_EXT_shader_implicit_conversions
GL_EXT_shader_integer_mix
GL_EXT_shader_io_blocks
GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers
GL_EXT_sRGB
GL_EXT_sRGB_write_control
GL_EXT_tessellation_point_size
GL_EXT_tessellation_shader
GL_EXT_texture_border_clamp
GL_EXT_texture_buffer
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map_array
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_filter_minmax
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_norm16
GL_EXT_texture_rg
GL_EXT_texture_sRGB_decode
GL_EXT_texture_storage
GL_EXT_texture_view
GL_EXT_unpack_subimage
GL_KHR_blend_equation_advanced
GL_KHR_blend_equation_advanced_coherent
GL_KHR_context_flush_control
GL_KHR_debug
GL_KHR_robust_buffer_access_behavior
GL_KHR_robustness
GL_KHR_texture_compression_astc_ldr
GL_NV_bgr
GL_NV_bindless_texture
GL_NV_blend_equation_advanced
GL_NV_blend_equation_advanced_coherent
GL_NV_conditional_render
GL_NV_conservative_raster
GL_NV_copy_buffer
GL_NV_copy_image
GL_NV_draw_buffers
GL_NV_draw_instanced
GL_NV_draw_texture
GL_NV_EGL_stream_consumer_external
GL_NV_explicit_attrib_location
GL_NV_fbo_color_attachments
GL_NV_fill_rectangle
GL_NV_fragment_coverage_to_color
GL_NV_fragment_shader_interlock
GL_NV_framebuffer_blit
GL_NV_framebuffer_mixed_samples
GL_NV_framebuffer_multisample
GL_NV_generate_mipmap_sRGB
GL_NV_geometry_shader_passthrough
GL_NV_image_formats
GL_NV_instanced_arrays
GL_NV_internalformat_sample_query
GL_NV_non_square_matrices
GL_NV_occlusion_query_samples
GL_NV_pack_subimage
GL_NV_packed_float
GL_NV_packed_float_linear
GL_NV_path_rendering
GL_NV_path_rendering_shared_edge
GL_NV_pixel_buffer_object
GL_NV_polygon_mode
GL_NV_read_buffer
GL_NV_read_depth
GL_NV_read_depth_stencil
GL_NV_read_stencil
GL_NV_sample_locations
GL_NV_sample_mask_override_coverage
GL_NV_secure_context
GL_NV_shader_noperspective_interpolation
GL_NV_shadow_samplers_array
GL_NV_shadow_samplers_cube
GL_NV_sRGB_formats
GL_NV_texture_array
GL_NV_texture_border_clamp
GL_NV_texture_compression_latc
GL_NV_texture_compression_s3tc
GL_NV_texture_compression_s3tc_update
GL_NV_timer_query
GL_NV_viewport_array
GL_NV_viewport_array2
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth_texture
GL_OES_depth_texture_cube_map
GL_OES_depth24
GL_OES_depth32
GL_OES_draw_buffers_indexed
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_sync
GL_OES_element_index_uint
GL_OES_fbo_render_mipmap
GL_OES_geometry_point_size
GL_OES_geometry_shader
GL_OES_get_program_binary
GL_OES_gpu_shader5
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_rgb8_rgba8
GL_OES_sample_shading
GL_OES_sample_variables
GL_OES_shader_image_atomic
GL_OES_shader_io_blocks
GL_OES_shader_multisample_interpolation
GL_OES_standard_derivatives
GL_OES_surfaceless_context
GL_OES_tessellation_point_size
GL_OES_tessellation_shader
GL_OES_texture_border_clamp
GL_OES_texture_buffer
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_texture_stencil8
GL_OES_texture_storage_multisample_2d_array
GL_OES_vertex_array_object
GL_OES_vertex_half_float
Apple A8X
GL_APPLE_color_buffer_packed_float
GL_APPLE_copy_texture_levels
GL_APPLE_rgb_422
GL_APPLE_texture_format_BGRA8888
GL_EXT_color_buffer_half_float
GL_EXT_debug_label
GL_EXT_debug_marker
GL_EXT_pvrtc_sRGB
GL_EXT_read_format_bgra
GL_EXT_separate_shader_objects
GL_EXT_shader_framebuffer_fetch
GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers
GL_EXT_texture_filter_anisotropic
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc
GL_KHR_texture_compression_astc_ldr
GL_OES_standard_derivatives
Game developers can do much more with Tegra than with any other mobile GPU. So, the main problem of Tegra is popularity. Technically K1/X1 are superior than PowerVR6, Adreno 4xx, Mali-T8xx etc (and even PowerVR 7). I don't want to say that Apple A8X is a bad SoC, no, it has a great GPU, great drivers, great new API from Apple, perfect SDKs, debuggers and profilers. But for game developers (from technical side) Tegra is better because it has a gaming-oriented GPU architecture. Of course, Tegra has problems with monetization, but it isn't the problem of technology.
However, being powerful while being a low power drain is also necessary for the mobile market.
You're right, A8X is slightly more power-efficient than Tegra K1, but that's because Apple used more efficient process node (20nm in A8X vs 28 nm in K1). On the same process node Tegra has equal consumption with better performance.
Welcome to the forum!
Thanks!
Considering "only" means 45M+ device a year (for the A8X)
You're right. I don't have information about sales of OpenGL-compatible PCs, but I know that modern AMDs, GeForce 4xx, 5xx, 6xx, 7xx, 8xx, 9xx, Haswell/Broadwell GPUs on Windows XP and higher, Linux and OS X 10.10 support OpenGL 4.* (+Tegra K1/X1 in shield tablet). Maybe A8X has more sales than these PCs/tablets, I don't know.
P. S. I don't have a TK1-powered device, so I talk only about theory.
??l????? s??? uo ????? ??????? ? un? ?s??l?
No account of Apple and graphics is complete without mentioning late 80s apple spin-off RasterOps, which made RISC processor based graphic processors, graphic cards and displays.
RasterOps eventually acquired AT+T spin-off Truevision and subsequently formed a strategic partnership with Hitachi, which took over hardware development under Hitachi Digital Graphics.
RasterOps approach using RISC processor cores and tons of "VRAM" was actually a good one at the time because acceleration performance was superior to early video processors but was far too expensive to work as a consumer market product (high end cards were more expensive than a PC).
Anyway, add that to the junk pile of history, company is long gone even though some vintage hardware is still available and collectable.
Then you're going to get a kick out of this story. Remember Pong? Well fast forward 35 years, I'm in my garage and I hear this noise, track it down and somehow my old pong set got turned on. Old batteries still good. I'm taking bids.