The PowerVR SGX
The PowerVR SGX platform is the graphic processor for the BlackBerry PlayBook tablet and BlackBerry 10 Dev Alpha device. It is designed to support OpenGL ES 2.0, and it implements the OpenGL ES 1.1 API more efficiently using OpenGL ES 2.0 shaders. For more information, see the PowerVR SGX OpenGL ES 2.0 Application Development Recommendations.
Tile-based deferred rendering
The PowerVR SGX platform uses tile-based deferred rendering, where rasterization is performed on a per tile basis instead of the entire frame buffer as traditional immediate-mode rendering would. This enables the hardware to only retrieve geometry data when rendering each tile, subsequently minimizing memory bandwidth requirements. Color, depth, and stencil buffers are performed using fast on-chip memory instead of system memory.
Limits on OpenGL ES 1.1 using PowerVR SGX540
| Description | Min value | Max value | Constant |
|---|---|---|---|
| Number of application defined clipping planes | 6 | 6 | GL_MAX_CLIP_PLANES |
| Number of lights | 8 | 8 | GL_MAX_LIGHTS |
| Supported depth of the modelview matrix | 16 matrices | 16 matrices | GL_MAX_MODELVIEW_STACK_DEPTH |
| Supported depth of the projection matrix | 2 matrices | 2 matrices | GL_MAX_PROJECTION_STACK_DEPTH |
| Texture size | 64 pixels by 64 pixels | 2048 pixels by 2048 pixels | GL_MAX_TEXTURE_SIZE |
| Supported depth of the texture matrix | 2 matrices | 4 matrices | GL_MAX_TEXTURE_STACK_DEPTH |
| Number of supported texture units | 1 | 4 | GL_MAX_TEXTURE_UNITS |
For more information on these constants, look at the OpenGL ES 1.1 manual pages.
OpenGL ES 1.1 extensions supported on PowerVR SGX540
- GL_OES_byte_coordinates
- GL_OES_fixed_point
- GL_OES_single_precision
- GL_OES_matrix_get
- GL_OES_read_format
- GL_OES_compressed_paletted_texture
- GL_OES_point_sprite
- GL_OES_point_size_array
- GL_OES_point_size_array
- GL_OES_draw_texture
- GL_OES_query_matrix
- GL_OES_texture_env_crossbar
- GL_OES_texture_mirrored_repeat
- GL_OES_texture_mirrored_repeat
- GL_OES_blend_subtract
- GL_OES_blend_func_separate
- GL_OES_blend_equation_separate
- GL_OES_stencil_wrap
- GL_OES_extended_matrix_palette
- GL_OES_framebuffer_object
- GL_OES_rgb8_rgba8
- GL_OES_depth24
- GL_OES_stencil8
- GL_OES_compressed_ETC1_RGB8_texture
- GL_OES_mapbuffer
- GL_OES_EGL_image
- GL_OES_EGL_image_external
- GL_EXT_multi_draw_arrays
- GL_OES_required_internalformat
- GL_IMG_read_format
- GL_IMG_texture_compression_pvrtc
- GL_IMG_texture_format_BGRA8888
- GL_EXT_texture_format_BGRA8888
- GL_OES_egl_sync
- GL_IMG_vertex_array_object
Limits on OpenGL ES 2.0 using PowerVR SGX540
| Description | Min value | Max value | Constant |
|---|---|---|---|
| Texture image units that can be used to access texture maps from the vertex shader and fragment processor combined | 8 | 8 | GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS |
| Size of cube map texture | 16 | 2048 | GL_MAX_CUBE_MAP_TEXTURE_SIZE |
| Number of uniform vectors | 16 | 64 | GL_MAX_FRAGMENT_UNIFORM_VECTORS |
| Renderbuffer width and height | 1 pixel by 1 pixel | 2048 pixels by 2048 pixels | GL_MAX_RENDERBUFFER_SIZE |
| Number of texture image units accessed by texture maps from the fragment shader | 8 | 8 | GL_MAX_TEXTURE_IMAGE_UNITS |
| Texture size | 64 pixels by 64 pixels | 2048 pixels by 2048 pixels | GL_MAX_TEXTURE_SIZE |
| Number of varying vectors | 8 | 8 | GL_MAX_VARYING_VECTORS |
| Number of vertex attributes | 8 | 16 | GL_MAX_VERTEX_ATTRIBS |
| Number of texture image units accessed by texture maps from the vertex shader | 0 | 8 | GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS |
| Number of uniform vectors that can be held for a vertex shader | 128 | 128 | GL_MAX_VERTEX_UNIFORM_VECTORS |
OpenGL ES 2.0 extensions supported on PowerVR SGX540
- GL_OES_rgb8_rgba8
- GL_OES_depth24
- GL_OES_vertex_half_float
- GL_OES_texture_float
- GL_OES_texture_half_float
- GL_OES_element_index_uint
- GL_OES_mapbuffer
- GL_OES_fragment_precision_high
- GL_OES_compressed_ETC1_RGB8_texture
- GL_OES_EGL_image
- GL_OES_EGL_image_external
- GL_OES_required_internalformat
- GL_OES_depth_texture
- GL_OES_get_program_binary
- GL_OES_packed_depth_stencil
- GL_OES_standard_derivatives
- GL_OES_standard_derivatives
- GL_OES_egl_sync
- GL_EXT_multi_draw_arrays
- GL_EXT_texture_format_BGRA8888
- GL_EXT_discard_framebuffer
- GL_EXT_shader_texture_lod
- GL_IMG_shader_binary
- GL_IMG_texture_compression_pvrtc
- GL_IMG_texture_npot
- GL_IMG_texture_format_BGRA8888
- GL_IMG_read_format
- GL_IMG_program_binary
- GL_IMG_multisampled_render_to_texture