3.6.1. Introduction
J721S2 device is enabled with 3D graphics accelerator based on the B-Series BXS-4-64 from Imagination Technologies Inc. It enables the support of 3D graphics rendering using OpenGL® ES API’s. The OpenGL® ES API’s up to and including version 3.2 with render surfaces upto 4k and input textures upto 8k sizes are supported by the hardware. It also supports Vulkan ® up to API version 1.2.
The following extensions are supported:
EGL_EXT_client_extensions |
EGL_EXT_device_base |
EGL_EXT_device_enumeration |
EGL_EXT_device_query |
EGL_EXT_platform_base |
EGL_KHR_client_get_all_proc_addresses |
EGL_KHR_debug |
EGL_EXT_platform_device |
EGL_EXT_platform_wayland |
EGL_KHR_platform_wayland |
EGL_MESA_platform_gbm |
EGL_KHR_platform_gbm |
EGL_MESA_platform_surfaceless |
EGL_ANDROID_native_fence_sync |
EGL_EXT_buffer_age |
EGL_EXT_create_context_robustness |
EGL_EXT_image_dma_buf_import |
EGL_EXT_image_dma_buf_import_modifiers |
EGL_EXT_image_gl_colorspace |
EGL_EXT_yuv_surface |
EGL_IMG_context_priority |
EGL_KHR_cl_event2 |
EGL_KHR_config_attribs |
EGL_KHR_create_context |
EGL_KHR_fence_sync |
EGL_KHR_get_all_proc_addresses |
EGL_KHR_gl_colorspace |
EGL_KHR_gl_renderbuffer_image |
EGL_KHR_gl_texture_2D_image |
EGL_KHR_gl_texture_3D_image |
EGL_KHR_gl_texture_cubemap_image |
EGL_KHR_image |
EGL_KHR_image_base |
EGL_KHR_image_pixmap |
EGL_KHR_no_config_context |
EGL_KHR_partial_update |
EGL_KHR_reusable_sync |
EGL_KHR_surfaceless_context |
EGL_EXT_pixel_format_float |
EGL_KHR_wait_sync |
EGL_MESA_configless_context |
EGL_MESA_drm_image |
EGL_MESA_image_dma_buf_export |
EGL_WL_bind_wayland_display |
EGL_IMG_cl_image |
GL_ANDROID_extension_pack_es31a |
GL_APPLE_texture_format_BGRA8888 |
GL_EXT_EGL_image_array |
GL_EXT_YUV_target |
GL_EXT_blend_minmax |
GL_EXT_buffer_storage |
GL_EXT_clip_control |
GL_EXT_color_buffer_float |
GL_EXT_color_buffer_half_float |
GL_EXT_compressed_ETC1_RGB8_sub_texture |
GL_EXT_conservative_depth |
GL_EXT_copy_image |
GL_EXT_discard_framebuffer |
GL_EXT_draw_buffers |
GL_EXT_draw_buffers_indexed |
GL_EXT_draw_elements_base_vertex |
GL_EXT_float_blend |
GL_EXT_geometry_point_size |
GL_EXT_geometry_shader |
GL_EXT_gpu_shader5 |
GL_EXT_memory_object |
GL_EXT_memory_object_fd |
GL_EXT_multi_draw_arrays |
GL_EXT_multisampled_render_to_texture |
GL_EXT_multisampled_render_to_texture2 |
GL_EXT_occlusion_query_boolean |
GL_EXT_polygon_offset_clamp |
GL_EXT_primitive_bounding_box |
GL_EXT_read_format_bgra |
GL_EXT_robustness |
GL_EXT_sRGB_write_control |
GL_EXT_separate_shader_objects |
GL_EXT_shader_framebuffer_fetch |
GL_EXT_shader_group_vote |
GL_EXT_shader_implicit_conversions |
GL_EXT_shader_io_blocks |
GL_EXT_shader_non_constant_global_initializers |
GL_EXT_shader_pixel_local_storage |
GL_EXT_shader_pixel_local_storage2 |
GL_EXT_shader_texture_lod |
GL_EXT_shadow_samplers |
GL_EXT_sparse_texture |
GL_EXT_tessellation_point_size |
GL_EXT_tessellation_shader |
GL_EXT_texture_border_clamp |
GL_EXT_texture_buffer |
GL_EXT_texture_cube_map_array |
GL_EXT_texture_format_BGRA8888 |
GL_EXT_texture_format_sRGB_override |
GL_EXT_texture_rg |
GL_EXT_texture_sRGB_R8 |
GL_EXT_texture_sRGB_RG8 |
GL_EXT_texture_sRGB_decode |
GL_EXT_texture_shadow_lod |
GL_IMG_framebuffer_downsample |
GL_IMG_multisampled_render_to_texture |
GL_IMG_program_binary |
GL_IMG_read_format |
GL_IMG_shader_binary |
GL_IMG_texture_format_BGRA8888 |
GL_IMG_texture_npot |
GL_KHR_blend_equation_advanced |
GL_KHR_blend_equation_advanced_coherent |
GL_KHR_debug |
GL_KHR_robustness |
GL_KHR_texture_compression_astc_ldr |
GL_OES_EGL_image |
GL_OES_EGL_image_external |
GL_OES_EGL_image_external_essl3 |
GL_OES_EGL_sync |
GL_OES_compressed_ETC1_RGB8_texture |
GL_OES_depth24 |
GL_OES_depth_texture |
GL_OES_draw_buffers_indexed |
GL_OES_draw_elements_base_vertex |
GL_OES_element_index_uint |
GL_OES_fragment_precision_high |
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_required_internalformat |
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_cube_map_array |
GL_OES_texture_float |
GL_OES_texture_half_float |
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 |
GL_OVR_multiview |
GL_OVR_multiview2 |
GL_OVR_multiview_multisampled_render_to_texture |
VK_KHR_device_group_creation |
v1 |
VK_KHR_external_fence_capabilities |
v1 |
VK_KHR_external_memory_capabilities |
v1 |
VK_KHR_external_semaphore_capabilities |
v1 |
VK_KHR_get_physical_device_properties2 |
v2 |
VK_KHR_get_surface_capabilities2 |
v1 |
VK_KHR_surface |
v25 |
VK_KHR_wayland_surface |
v6 |
VK_KHR_xcb_surface |
v6 |
VK_KHR_xlib_surface |
v6 |
VK_EXT_debug_report |
v10 |
VK_EXT_debug_utils |
v2 |
For more information about OpenGL® ES see OpenGL ES.
These devices do not use static memory carve-outs. The only reservations made in device tree are for control registers. Memory is instead dynamically allocated at runtime depending on the task and will scale as needed. Scanout buffers come from the Contiguous Memory Allocation (CMA) pool. Other runtime memory allocations are from standard pages. See the kernel module memory management subsystem for more information.
Note
OpenCL® libraries are also provided, without support, at https://git.ti.com/cgit/graphics/ti-img-rogue-umlibs/
Other features of the Rogue series of GPUs include bilinear and trilinear filtering.
Support for the following pixel formats:
ARGB4444 |
ARGB8888 |
BGRA8888 |
RGB565 |
RGBA5551 |
YUV420 |
YUYV |
NV12 |
|
Surface |
✓ |
✓ |
✓ |
|||||
Texture |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Support for Ericsson Texture Compression (ETC1 and ETC2) on input textures. For an example toolkit to interact with these texture compression mechanisms, see the Khronos KTX-Software project.
Support for OS controlled Active Power Management, enabled by default.
3.6.1.1. Software architecture
The following picture shows the software architecture of Graphics in Processor SDK Linux J721s2.

Fig. 3.2 PSDK Linux Rogue Graphics Software Stack
Please note that the Rogue Graphics Kernel Module (RGX-KM) in this context
refers to pvrsrvkm
, which is currently provided at:
The SDK includes this by default. The kernel module is at:
# /lib/modules/$(uname -r)/extra/pvrsrvkm.ko
Please see the Build guide for more information about integration of this software stack into other ecosystems.
3.6.1.2. Graphics demos
Along with the graphics driver and user space libraries, the SDK also includes example applications. Some demos are from on the Imagination (IMG) Native_SDK examples.
The following 3D Graphics demos are available. The following table provides a list of these demos, with a brief description.
Demo Name |
Details |
---|---|
|
This demo shows a matrix skinned character in combination with bump mapping. |
|
This is a demonstration of a coverflow style effect |
|
This demo shows how to efficiently render sprites and interface elements. |
|
This is a demonstration of how to implement rendering algorithms for Navigation software. |
|
This demo shows how to render and display multi-colored spinning cube |