OpenGL SC: differences to OpenGL ES

Nakhoon Baek CTO, Mobile Graphics Inc., Korea Professor, Kyungpook National University, Korea

© Copyright , 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

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