These are some notes I took at the Siggraph 2008 OpenGL BOF, where the final specs for OpenGL 3.0 were announced. Note that these notes are of course biased by what I found interesting/useful to note.
I just put these here in the hope some will find it useful. We can always delete/archive this page when OpenGL 3 becomes a part of our everyday lives.
OpenGL 3.0 Summary
- Deprecation based on profiles, in the hope of streamlining future releases.
- GLSL 1.3
- Support for most 2.x ARB extensions in the core of OpenGL 3.0
- Some features were kept as ARB/EXT extensions for lack of time
More in-depth list of new/updated features
- Requires programmable hardware
- Expanded FBO in the core :
- Multisampling of FBOs
- Blitting
- sRGB FBOs
- Packed formats
- Depth and stencil in FBOs
- Enhanced vertex arrays (MapBufferRange to specify what range of a buffer changed and just re-upload that)
- Capture transformed vertex data in buffer objects (sends result of vertex/geometry shader back to CPU for further processing)
- Int and float texture formats without clamping
- Array texture (array of 1D/2D textures)
- Conditional rendering based on occlusion queries
- Control over blending
- New pixel/texel formats
- GLSL 1.3 (more detail in GLSL 1.3 section below)
- 3.0 ARB extensions (lack of time):
- Geometry shader
- Texture buffer object
- Draw instanced
- Create context (to specify a 3.0 context and forward-compatible context)
- 2.x ARB extensions (backported from 3.0)
- FBO
- sRGB Framebuffer
- Most of the above too, see slides
- Deprecation model (more detail in Ecosystem section below):
- 3.0 does not remove features
- 3.0 marks some features deprecated:
- Fixed function vertex and fragment pipelines
- Color index mode
- Display lists, selection and feedback modes
- GLSL 1.1 and 1.2
GLSL 1.3
- #version 1.30
- 32-bit int and unsigned int
- Texture array samplers (ex: sampler1DArray, sampler1DShadowArray)
- Perspective interpolation and smoothing specified per sampler
- New operators for int types (bitwise &, |, etc.)
- switch statement
- Vectors for int, unsigned int
- Hyperbolic sine, cosine and tangent
Deprecated
- attribute
- varying
- centroid varying
Use instead:
- varying in vertex shader: out (at global scope)
- varying in fragment shader: in (at global scope)
- Built-in attribute, uniform and varying variables are also deprecated
- ftransform() also deprecated
Missed 1.3
- #include
- uniform a = { /*...*/ }
- row-major qualifier for matrices (just change the order of operations...)
Blizzard
- Blizzard develops most of their games cross-platform for Windows and Mac OS X (which means they could probably port them to Linux too for minimal effort, don't know why they don't)
- Past games: Warcraft 3, World of Warcraft
- Upcoming games: Starcraft 2, Diablo 3
- In their opinion, 3.0 unifies and integrates what was essentially an extension "forest" in 2.x
Transgaming
- Explained the new extensions in more detail
Ecosystem
- Update man pages for 3.0
- Leverage OpenGL ES 2.0 work
- Bring the conformance tests into the shader era
- Use the OpenGL ES 2.0 tests as a starting point
Deprecation model
Terms:
- core for version X : in a particular version of the OpenGL spec
- deprecated : reduced support for a given feature
- profile : ARB-defined subset of the spec. Hopefully there will be as few as possible but as many as necessary.
- 3.0 : only one profile.
- Possibilities: entertainment, content creation profiles; desktop versus mobile profiles.
Process:
- Step 0 : core
- Step 1 : deprecated (will possibly be removed in the next release)
- Step 2 : extension (considered for exclusion, query in extension string)
- Step 3 : removed (maybe still available as a vendor extension if the vendor caters to a specific area)
==> Mirrors extension approval process:
- Step -3 : vendor-specific extension
- Step -2 : EXT extension (considered for inclusion, query in extension string)
- Step -1 : ARB extension (accepted, will possibly be included in the next release)
- Step 0 : core
- Step 1 : deprecated (will possibly be removed in the next release)
- Step 2 : extension (considered for exclusion, query in extension string)
- Step 3 : removed (maybe still available as a vendor extension if the vendor caters to a specific area)
This image shows the relationship between the deprecation model and the profiles in a visual way:
- GLSL will deprecate in the same way
Contexts:
- Full context: all features of release and profile
- Forward-compatible context: only non-deprecated features
- Create Context:
- Past: driver gives whatever it wants, most likely a context compatible with the latest release it supports.
- Now: specify parameters to get what you want.
- wgl_ARB_CREATE_CONTEXT / xgl_ARB_CREATE_CONTEXT
- Takes const int* attribList parameter
- MAJOR_VERSION
- MINOR_VERSION
- ATTRIB_FLAGS
- version <= 2.1 --> current behavior (get what the driver wants to give, most likely the most recent 2.x version it supports)
- version >= 3.0 --> version you want if the driver supports it, most recent if not.
- attribList: specify forward-compatible, debug context, profile.
- To reiterate: the old context creation process will not return a 3.0+ context.
- Can create a surface-less context for rendering without a window
Vendor support (2008/08/13)
- AMD / ATI
- Ramping up support for 3.0 in drivers, starting now
- Full 3.0 support expected Q1 2009
- Intel
- Soon is all they could say.
- NVIDIA
- Beta drivers are out now for XP and Vista
- Please file bug reports
- OpenGL 3 driver (see page for features it does not support yet)
OpenCL
- Hybrid computational library to use all computational resources, be they task-parallel (CPUs) or data-parallel (GPUs). Can use X CPUs and Y GPUs transparently.
- Low-level abstraction
- Need domain-specific middleware/languages/tools
- C-based
- Desktop/mobile profiles
- Interoperable with OpenGL (data sharing - no need to copy back and forth)
- Efficient inter-API communication (select whether to compute with OpenGL or OpenCL)
- Normal Khronos process (same as OpenGL)
- Draft specification done, fast track schedule, no date announced.
- Based on initial proposal by Apple
- Open : vendor-neutral, royalty-free
Language spec
- C99-based + parallelism
- IEEE precision
- Platform API
- Runtime API
gDebugger
- OpenGL debugger, profiler
- OpenGL ES and OpenGL 3.0 supported
- Linux, Windows
- Different performance counters:
- Their OpenGL implementation
- Windows/Linux kernel counters
- Vendor-specific counters (NVIDIA, ATI)
- Find bottlenecks by disabling different pipeline stages, replacing textures by 2x2 textures, etc.
SPECgpc
- Graphics performance characterization
- Unbiased benchmarks
- SPECviewperf 10.1
- Updated data sets for 3dsMax, Maya, etc.
- OpenGL 2 shaders
- VBOs (ex: CATIA - mix of VBOs and display lists)
- Application performance characterization (updated applications)
TechSoup
- Training in 3D Computer Graphics
- OpenGL 3.0 courses in Q4 2008
- OpenSceneGraph courses
- OpenGL ES 2.0 courses
- Paul Martz, Bob Kuehne, Alan Millman
- Official web site
Documentation
- Updates for OpenGL 3.0 in the Addison-Wesley OpenGL books
- Programming Guide
- Shading Language
- SuperBible?
- Academic Series
- Upcoming electronic books for the above and more.
More information
Attachments
-
OpenGL3DeprecationProcess.png
(16.6 kB) - added by osg
9 years ago.
OpenGL 3 deprecation process

