© Copyright 3Dlabs, 2002 - Page 2
Takeaways From Last MeetingTakeaways From Last Meeting•Get agreement between 3Dlabs, ATI, and NVIDIA•Continue to update white papers•Develop a proposal for prioritizing the ARB’s efforts•Highest priority items (from the ARB’s perspective) are:
- High-level shading language- Object management harmonization- Basic memory management features- Basic synchronization features
•Lower priority items can be left to the Khronos Group or for OpenGL 2.1
© Copyright 3Dlabs, 2002 - Page 3
PR ProgressPR Progress•Still a lot of positive buzz about OpenGL 2.0•Numerous appearances in the trade news
- Peddie Report- Jon Peddie white paper- CGW- Tom’s Hardware
•Good discussion threads occurring- OpenGL.org- SlashDot
•OpenGL 2.0 tutorial accepted for SIGGRAPH 2002•Comments and requests for additional features are still coming
© Copyright 3Dlabs, 2002 - Page 4
Cooperative ProgressCooperative Progress•3Dlabs, ATI, and NVIDIA have reached broad agreement on how
we should work towards OpenGL 2.0•Open and positive discussions are underway to agree on a
detailed and realistic implementation plan•We broadly agree that:
- Marketing and perception issues are critical to OpenGL- Work will be prioritized to best address commercial ISV requirements- Goals will be aggressive but realistic- Progress must be rapid!
© Copyright 3Dlabs, 2002 - Page 5
OpenGL 2.0 Cooperative FrameworkOpenGL 2.0 Cooperative Framework•Capitalize on the larger OpenGL 2.0 vision, which provides:
- A coherent goal for the OpenGL community to work towards - A powerful marketing platform
•Break implementation into incremental steps, which allows:- Concurrent specification and implementation work- Reduced time-to-market of high-priority revisions (e.g. programmability)- API, specification, and implementation continuity
•Let developer needs inform the design of the revisions- Clearly identify and prioritize developer issues- Engineer solutions that “fit” OpenGL while simultaneously fulfilling the
OpenGL 2.0 vision
© Copyright 3Dlabs, 2002 - Page 6
Technical ProgressTechnical Progress•Third release of white papers occurred on Feb. 25•Changes to papers were driven primarily by three things:
- Continued incorporation of industry feedback- Efforts to define the high priority list of work items for the ARB- Implementation effort within 3Dlabs
•We believe the design for the highest priority items is holding up well
© Copyright 3Dlabs, 2002 - Page 7
Implementation ProgressImplementation Progress•Parser/intermediate code generator is 98% complete
- All examples in shading language white paper have been compiled using this tool
- Only remaining items are loops, user functions, vector notation, matrix notation
- Intermediate code is suitable for translation into assembly- Parser handles pack/unpack programs too- 3Dlabs is willing to provide this code to others to kick start implementations
•OpenGL API commands in shading language paper are being implemented- We are well into implementing the necessary object management stuff- Insight gained from implementation led to many of the V3 white paper
changes- Program objects- Explicit linking- Binding for attributes and uniform variables
- Interested reviewers also helped to influence these changes
© Copyright 3Dlabs, 2002 - Page 8
Implementation ProgressImplementation Progress• We have successfully executed the “brick” example
© Copyright 3Dlabs, 2002 - Page 9
Proposed Path ForwardProposed Path Forward•The following is 3Dlabs’ proposal•ATI has been involved in refining this proposal•Hoping to build additional consensus at this meeting
© Copyright 3Dlabs, 2002 - Page 10
White Papers White Papers ““GL2GL2”” ExtensionsExtensions•Next steps
- Develop extension specifications for the ARB’s high-priority work items- Turn OpenGL 2.0 shading language description into a language specification
•Allows implementation and usage of OpenGL 2.0 features before OpenGL 2.0 spec is finalized
•First draft by June 2002 ARB meeting•Public review draft by SIGGRAPH•ARB approval at Sept. 2002 ARB meeting
© Copyright 3Dlabs, 2002 - Page 11
“GL2” Extensions“GL2” Extensions•Use “GL2” to differentiate these extensions from “EXT” or “ARB”•Functionality from white papers is grouped into manageable
pieces•Shading language support is the highest priority extension•Other extensions to support object management, basic memory
management, and basic synchronization•Various vendor-specific limitations will exist•Specs may change slightly as implementation efforts proceed•Vendors may choose to only implement some of these extensions•Allows interested developers to begin development before
OpenGL 2.0 spec is finalized
© Copyright 3Dlabs, 2002 - Page 12
GL2 Geometry Shader ExtensionGL2 Geometry Shader Extension•Contains most of the OpenGL 2.0 Shading Language white paper•Contains some of OpenGL 2.0 Objects white paper•Some TBD implementation limitations (e.g., no multipassing)•Includes object management for shader and program objects•Does not include aux data buffer support•Functionality:
- Shaders of subtype VERTEX_SHADER and FRAGMENT_SHADER, Get (implementation dependent values for programmability), CreateShaderObject, LoadShader, AppendShader, CompileShader, GetInfoLog, DeleteObject, DeleteObjects, CreateProgramObject, AttachShaderObject, DetachObject, LinkProgram, UseProgramObject,VertexAttribute*, BindAttributeLocation, GetAttributeLocation, GetUniformLocation, GetHandle, GetObjectParameterfv/iv, LoadUniform*
© Copyright 3Dlabs, 2002 - Page 13
GL2 Basic Memory Management GL2 Basic Memory Management ExtensionExtension
• Includes basic memory management from Memory Management white paper (e.g., chapter 2)
•Builds on basics provided in GL2 Geometry Shaders extension•Should provide enough control that apps can get textures and
vertex array objects stored in video memory•Does not include policies (but perhaps it should?)•Functionality includes:
- ObjectPolicy (usage hints only), ClearObjectPolicy (usage hints only),GetObjectPolicy (usage hints only), ObjectPriority, GetObjectPrioirity, DefaultObjectPolicy, DefaultObjectPriority
© Copyright 3Dlabs, 2002 - Page 14
GL2 Basic Synchronization GL2 Basic Synchronization ExtensionExtension
• Includes basic synchronization support from the Asynchronous OpenGL white paper (e.g., chapter 2)
•Functionality includes:- GLsync data type, SyncAlloc, SyncFree, SyncWait, SyncWaitMultiple,
FlushStream, Fence, QueryFence, ConvertSyncToEvent, ConvertEventToSync, StreamSwapBuffers
© Copyright 3Dlabs, 2002 - Page 15
GL2 Image Object ExtensionGL2 Image Object Extension•Support for GL2-style image, texture, and cube map objects •With memory management extension, allows applications to
provide much better information for texture management•Includes items from:
- OpenGL 2.0 Objects white paper- Memory Management white paper- OpenGL 2.0 Pixel Pipeline (i.e., pack/unpack) white paper
•Does not include support for pack/unpack functionality•Functionality includes:
- ImageType, ImageFormat, ImagePos, CreateImageObject1D/2D/3D, CreateTextureObject, CreateCubeMapObject, GetFormats(except for AUX_DATA), IsObject, ObjectParameterf/I, AttachImageObject, UseTextureObject, AttachTextureObject, ImageMask, LoadImage1D/2D/3D, LoadSubImage1D/2D/3D, CopyImage1D/2D/3D, DrawImageObject
© Copyright 3Dlabs, 2002 - Page 16
GL2 Vertex Array Object ExtensionGL2 Vertex Array Object Extension•Support for vertex array objects•With memory management extension, allows applications to store
vertex arrays in video memory•Includes items from:
- OpenGL 2.0 Objects white paper- Memory Management white paper
•Functionality includes:- CreateVertexArrayObject, UseVertexArrayObject, user defined vertex
attribute arrays, texture coordinate arrays, multiple index arrays, VertexArrayPointer, BindArray, DrawIndexedArrays, DrawRangeIndexedArrays, LoadVertexArrayData, LoadVertexArrayFormattedData, StartVertexArrayFormat, AddElement,EndVertexArrayFormat
© Copyright 3Dlabs, 2002 - Page 17
GL2 Buffer Object ExtensionGL2 Buffer Object Extension•Support for buffer and frame buffer objects•With image objects extension, provides render-to-texture and
pbuffer functionality• Includes items from OpenGL 2.0 Objects white paper•Does not include support for aux data buffer•Functionality includes:
- CreateFrameBufferObject, CreateBufferObject, AttachBufferObject,UseFrameBufferObject
© Copyright 3Dlabs, 2002 - Page 18
GL2 Display List Object ExtensionGL2 Display List Object Extension•Support for OpenGL 2.0-style display list objects•With memory management extension, allows applications to store
display lists in video memory• Includes items from:
- OpenGL 2.0 Objects white paper- Memory Management white paper
•Functionality includes:- CreateDisplayListObject, BeginList, DrawList, DrawLists
© Copyright 3Dlabs, 2002 - Page 19
Other GL2 ExtensionsOther GL2 Extensions•Other GL2 extensions could be defined through Khronos or left
for the next phase within the ARB•GL2 Pixel Pipeline Extension – adds support for pixel packers and
unpackers•GL2 Object Policy Extension – adds support for object policies•GL2 Vblank Extension – adds support for synchronizing with
vblank•GL2 Synchronization2 Extension – adds support for
asynchronous commands•GL2 Aux Data Extension – adds support for aux data buffer•GL2 Direct Access Extension – adds support for direct access for
image and vertex array objects•GL2 Advanced Synchronization Extension – adds support for
stream to stream synchronization and triggered work
© Copyright 3Dlabs, 2002 - Page 20
OpenGL 2.0 Proposed TimelineOpenGL 2.0 Proposed Timeline
Siggraph 2003Siggraph 2002 2H02 1H03
OGL 1.4 SpecOGL2 Shading Language Spec
OGL2 Foundation Extension SpecsInitial Extension Implementations
OGL2 Foundation Extension
Implementations
OGL2 SpecInitial OGL2 Implementations
OGL2 Specification
Work