OpenGL SC: differences to OpenGL ES
Nakhoon Baek CTO, Mobile Graphics Inc., Korea Professor, Kyungpook National University, Korea
© Copyright Khronos Group, 2012 - Page 1 OpenGL SC
© Copyright Khronos Group, 2012 - Page 2 Safety Critical – OpenGL SC 1.0 • targeted at safety-certified avionics and automotive displays - minimum driver size and complexity - DO-178B certification • working group: - Seaweed (now, Presagis) - Barco - ALT Software - Diehl Aerospace - Esmertec (now, Myriad Group) - 3DLabs (now, ZiiLABS) - Quantum3D
http://mobilegraphics.co.kr/ 3 © Copyright Khronos Group, 2012 - Page 3 Military & Avionics: the major market
© Copyright Khronos Group, 2012 - Page 4 OpenGL SC 1.0 • originally, OpenGL ES Security Critical Profile - started as a variation of OpenGL ES • spin out as OpenGL SC 1.0
http://mobilegraphics.co.kr/ 5 © Copyright Khronos Group, 2012 - Page 5 OpenGL SC features
• based on OpenGL 1.3 • extinguished features (w.r.t. OpenGL ES) - glBegin / glEnd paradigm - display support : a kind of script
• recently, - OpenGL SC 1.0 conformance test suites - discussions on the next version (F2F meeting in this Oct.) - OpenGL SC 1.1 ? - OpenGL SC 2.0 ?
http://mobilegraphics.co.kr/ 6 © Copyright Khronos Group, 2012 - Page 6 Relationships
• OpenGL 1.3 OpenGL ES 1.0 OpenGL SC 1.0
• OpenGL 1.5 OpenGL ES 1.1
• OpenGL 2.0 + extra features OpenGL ES 2.0
• OpenGL 3.x OpenGL ES 3.0 (Halti) Expected
http://mobilegraphics.co.kr/ 7 © Copyright Khronos Group, 2012 - Page 7 Certifications for Airborne Systems
mobile graphics lab@KNU 8 © Copyright Khronos Group, 2012 - Page 8 DO-178B • DO-178B, Software Considerations in Airborne Systems and Equipment Certification - from RTCA, Inc. (Radio Technical Commission for Aeronautics) - FAA (Federal Aviation Administration) 인증 - goal: guidance to determine if the software will perform safely and reliably, in an airborne environment
• also known as ED-12B - from EUROCAE (European Organization for Civil Aviation Equipment)
mobile graphics lab@KNU 9 © Copyright Khronos Group, 2012 - Page 9 DO-178B : software levels • Catastrophic - Failure may cause a crash. • Hazardous - Failure has a large negative impact on safety or performance • Major - Failure is significant, but has a lesser impact than a Hazardous failure • Minor - Failure is noticeable, but has a lesser impact than a Major failure • No Effect - Failure has no impact on safety, aircraft operation, or crew workload.
mobile graphics lab@KNU 10 © Copyright Khronos Group, 2012 - Page 10 DO-178B : process • from Software Engineering point of view, • lots of documents ! • at Planning Stage, - Plan for software aspects of certification (PSAC) - Software development plan (SDP) - Software verification plan (SVP) - Software configuration management plan (SCMP) - Software quality assurance plan (SQAP) - System requirements - Software requirements standards - Software design standards (SDS) - Software code standards (SCS)
mobile graphics lab@KNU 11 © Copyright Khronos Group, 2012 - Page 11 DO-178B : process • Development stage, - Software requirements data (SRD) - Software design description (SDD) - Source code - Executable object code • Verification stage, - Software verification cases and procedures (SVCP) - Software verification results (SVR): - Review of all requirements, design and code - Testing of executable object code - Code coverage analysis
mobile graphics lab@KNU 12 © Copyright Khronos Group, 2012 - Page 12 DO-178B : process • Configuration management - Software configuration index (SCI) - Software life cycle environment configuration index (SECI)
• Quality Assurance - Software quality assurance records (SQAR) - Software conformity review (SCR) - Software accomplishment summary (SAS)
mobile graphics lab@KNU 13 © Copyright Khronos Group, 2012 - Page 13 SC components
© Copyright Khronos Group, 2012 - Page 14 OpenGL SC core features
• OpenGL SC core functions: totally 101 functions - 32 functions are completely new features w.r.t. OpenGL ES
- glBegin / glEnd paradigm - glVertex functions
- display list support : a kind of script
http://mobilegraphics.co.kr/ 15 © Copyright Khronos Group, 2012 - Page 15 Core Addition
• OES_single_precision extension - DepthRangef(clampf n, clampf f) - Frustumf(float l, float r, float b, float t, float n, float f) - Orthof(float l, float r, float b, float t, float n, float f) - ClearDepthf(clampf depth)
- allowing float-type parameters, rather than double-type
http://mobilegraphics.co.kr/ 16 © Copyright Khronos Group, 2012 - Page 16 Required Extension
• EXT_paletted_texture - color-indexed texture + color table (or, palette)
- need COLOR_INDEX8_EXT extension support for texturing functions - need some extensions into the TexImage2D function
- ColorTableEXT - ColorSubTableEXT - GetColorTableEXT - GetColorTableParameterivEXT
http://mobilegraphics.co.kr/ 17 © Copyright Khronos Group, 2012 - Page 17 Optional Extension
• EXT_shared_texture_palette - several textures can share a single texture palette
- need some extensions to Enable, Disable, IsEnabled, GetBooleanv, GetFloatv, GetIntegerv functions
- ColorTableEXT - ColorSubTableEXT - GetColorTableEXT - GetColorTableParameterivEXT
http://mobilegraphics.co.kr/ 18 © Copyright Khronos Group, 2012 - Page 18 Technical Issues • new implementations are needed for: - required extension: EXT_paletted_texture - optional extension: EXT_shared_texture_palette
• since year 2004, there is no graphics card supporting the above extensions - old NVIDIA chips such as GeForce 5 series can support it. - no ATI chips support it.
• Conclusively, new implementations are required
http://mobilegraphics.co.kr/ 19 © Copyright Khronos Group, 2012 - Page 19 API Features
© Copyright Khronos Group, 2012 - Page 20 2.5 GL Errors
mobile graphics lab@KNU 21 © Copyright Khronos Group, 2012 - Page 21 Geometric Primitives • All geometric primitives are specified by vertices
GL_LINES GL_POINTS GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON
GL_TRIANGLES GL_TRIANGLE_STRIP GL_QUADS GL_QUAD_STRIP GL_TRIANGLE_FAN http://mobilegraphics.co.kr/ 22 © Copyright Khronos Group, 2012 - Page 22 2.6 Begin/End Paradigm • drawing primitives: - points - line segment, line strip, line loop - triangle, triangle strip, triangle fan
mobile graphics lab@KNU 23 © Copyright Khronos Group, 2012 - Page 23 2.6 Begin/End Paradigm • state machine approach • not supported in OpenGL ES
• glBegin( GL_TRIANGLES ); - glColor4f( 1.0F, 0.5F, 0.5F, 1.0F ); - glVertex2f( 0.0F, 0.0F ); - glVertex2f( 1.0F, 0.0F ); - glVertex2f( 0.0F, 1.0F ); • glEnd( );
mobile graphics lab@KNU 24 © Copyright Khronos Group, 2012 - Page 24 2.7 Vertex Specification • float version only
mobile graphics lab@KNU 25 © Copyright Khronos Group, 2012 - Page 25 2.8 Vertex Arrays • float version only • no stride : always tightly packed arrays
mobile graphics lab@KNU 26 © Copyright Khronos Group, 2012 - Page 26 2.8 Vertex Arrays • DrawArrays, DrawElements : similar to OpenGL ES
mobile graphics lab@KNU 27 © Copyright Khronos Group, 2012 - Page 27 2.10 Coordinate Transformations • corresponds to OpenGL ES 1.1 features
mobile graphics lab@KNU 28 © Copyright Khronos Group, 2012 - Page 28 2.10 Coordinate Transformations • no texture matrix
mobile graphics lab@KNU 29 © Copyright Khronos Group, 2012 - Page 29 2.13 Colors and Coloring • single material properties for front and back faces
mobile graphics lab@KNU 30 © Copyright Khronos Group, 2012 - Page 30 2.13 Colors and Coloring • only 2 lights • no spot light
mobile graphics lab@KNU 31 © Copyright Khronos Group, 2012 - Page 31 2.13 Colors and Coloring • no two side lighting • color material support
mobile graphics lab@KNU 32 © Copyright Khronos Group, 2012 - Page 32 3.2 Antialiasing • no multisampling support
mobile graphics lab@KNU 33 © Copyright Khronos Group, 2012 - Page 33 3.3 Points • minimum requirement: only for point size = 1
mobile graphics lab@KNU 34 © Copyright Khronos Group, 2012 - Page 34 3.4 Line Segments • line stipples are supported
mobile graphics lab@KNU 35 © Copyright Khronos Group, 2012 - Page 35 3.5 Polygons • polygon stipples are also support
mobile graphics lab@KNU 36 © Copyright Khronos Group, 2012 - Page 36 3.8 Texturing • supported image types: unsigned byte only
mobile graphics lab@KNU 37 © Copyright Khronos Group, 2012 - Page 37 3.8 Texturing • texture image formats and types
mobile graphics lab@KNU 38 © Copyright Khronos Group, 2012 - Page 38 3.8 Texturing • 2D texture only
mobile graphics lab@KNU 39 © Copyright Khronos Group, 2012 - Page 39 3.8 Texturing • 2D texture only
mobile graphics lab@KNU 40 © Copyright Khronos Group, 2012 - Page 40 3.8 Texturing • no texture release ! - no garbage collection - i.e., only memory allocations
mobile graphics lab@KNU 41 © Copyright Khronos Group, 2012 - Page 41 3.8 Texturing • texture environment support - limited environment modes: MODULATE, REPLACE, DECAL, BLEND, ADD
mobile graphics lab@KNU 42 © Copyright Khronos Group, 2012 - Page 42 3.9 Fog
• no fog support
mobile graphics lab@KNU 43 © Copyright Khronos Group, 2012 - Page 43
Getting to the Framebuffer
Scissor Alpha Stencil
Test Test Test
Fragment
Depth Logical
Test Blending Dithering Operations Framebuffer
http://mobilegraphics.co.kr/ 44 © Copyright Khronos Group, 2012 - Page 44 Scissor Box, Alpha Test • Additional Clipping Test glScissor( x, y, w, h ) - any fragments outside of box are clipped - useful for updating a small section of a viewport • Reject pixels based on their alpha value glAlphaFunc( func, value ) glEnable( GL_ALPHA_TEST ) - use alpha as a mask in textures
http://mobilegraphics.co.kr/ 45 © Copyright Khronos Group, 2012 - Page 45 Stencil Buffer glStencilFunc( func, ref, mask ) glStencilOp( fail, zfail, zpass ) • controlled drawing based on values in the stencil buffer - Example: create a mask in stencil buffer and draw only objects not in mask area
stencil area for the mirror
http://mobilegraphics.co.kr/ 46 © Copyright Khronos Group, 2012 - Page 46 Blending • Combine pixels with what’s in already in the framebuffer glBlendFunc( src, dst )
Cr src C f dst C p
Blending Equation Blended Fragment Pixel (src) Framebuffer Pixel (dst)
http://mobilegraphics.co.kr/ 47 © Copyright Khronos Group, 2012 - Page 47 4.1 Per-Fragment Operations • restricted alpha functions: LEQUAL, ALWAYS only
mobile graphics lab@KNU 48 © Copyright Khronos Group, 2012 - Page 48 4.1 Per-Fragment Operations • restricted depth function support: LESS, LEQUAL, ALWAYS only
mobile graphics lab@KNU 49 © Copyright Khronos Group, 2012 - Page 49 4.1 Per-Fragment Operations • Blend Factor Combinations
• no other modes are supported
mobile graphics lab@KNU 50 © Copyright Khronos Group, 2012 - Page 50 4.1 Per-Fragment Operations • restricted blend function support
mobile graphics lab@KNU 51 © Copyright Khronos Group, 2012 - Page 51 4.2 Whole Frame-buffer Operations • same to OpenGL ES
mobile graphics lab@KNU 52 © Copyright Khronos Group, 2012 - Page 52 2.12 Current Raster Position • specify the location for glBitmap, glDrawPixels, glCopyPixels
mobile graphics lab@KNU 53 © Copyright Khronos Group, 2012 - Page 53 3.6 Pixel Rectangles / 3.7 Bitmaps • DrawPixels : RGBA image only • Bitmap : B/W image, drawn with current raster color - current raster color = current color when the last glRasterPos( ) called.
mobile graphics lab@KNU 54 © Copyright Khronos Group, 2012 - Page 54 4.3 Pixels • ReadPixels : RGBA, unsigned byte only • CopyPixels : specified region current raster position
mobile graphics lab@KNU 55 © Copyright Khronos Group, 2012 - Page 55 5.4 Display Lists
• no release of allocated lists
mobile graphics lab@KNU 56 © Copyright Khronos Group, 2012 - Page 56 5.5 Flush and Finish
mobile graphics lab@KNU 57 © Copyright Khronos Group, 2012 - Page 57 5.6 Hints • only hints, maybe not working
mobile graphics lab@KNU 58 © Copyright Khronos Group, 2012 - Page 58 6.1 Querying • no double type support
mobile graphics lab@KNU 59 © Copyright Khronos Group, 2012 - Page 59 Core Extension: OES_single_precision
mobile graphics lab@KNU 60 © Copyright Khronos Group, 2012 - Page 60 Required: EXT_paletted_texture • paletted texture
mobile graphics lab@KNU 61 © Copyright Khronos Group, 2012 - Page 61 Required: EXT_paletted_texture • COLOR_INDEX8 are supported
mobile graphics lab@KNU 62 © Copyright Khronos Group, 2012 - Page 62 Required: EXT_paletted_texture • add new functions
mobile graphics lab@KNU 63 © Copyright Khronos Group, 2012 - Page 63 Optional: EXT_shared_texture_palette • affected functions:
mobile graphics lab@KNU 64 © Copyright Khronos Group, 2012 - Page 64 Closing Remarks
mobile graphics lab@KNU 65 © Copyright Khronos Group, 2012 - Page 65 Summary
• OpenGL SC : safety critical profile - based on OpenGL 1.3 - similar to OpenGL ES 1.1 - but, some distinguished features - begin-end paradigm - display lists - texture palettes
• future works - a new version is expected - conformance test passed implementations are expected to be used widely
© Copyright Khronos Group, 2012 - Page 66