ARB Meeting Notes

May 12-14, 1997

Hosted by IBM in Austin, TX
Meeting notes taken by Tim Misner, Intel (Day 1)
and Randi Rost, HP (Days 2-3)

Attendees

Dale Kirkland  Intergraph  kirkland@ingr.com 
Randi Rost  HP  rost@fc.hp.com 
Kevin Lefebvre  HP  kevinl@fc.hp.com 
Phil Huxley  3Dlabs  phil.huxley@3dlabs.com 
Bill Sweeney  Sun  sweeney@eng.sun.com 
Henri Warren  DEC  warren@rbc.dec.com 
Igor Sinyak  Intel  Igor_Sinyak@ccm.sc.intel.com 
Pat Brown  IBM  pbrown@austin.ibm.com 
John Schimpf  SGI  jsch@asd.sgi.com 
Drew Bliss  Microsoft  drewb@microsoft.com 
Kurt Akeley  SGI  kurt@sgi.com 
Bimal Poddar  IBM  poddar@austin.ibm.com 
Bill Armstrong  Evans & Sutherland  armstron@es.com 
Bill Clifford  Digital  clifford@bgsdev.zko.dec.com 
Jan "Yon" Hardenbergh  MERL  jch@merl.com 
Rob Putney  IBM  rputney@austin.ibm.com 
Fred Fisher  AccelGraphics  agi-arb@ag3d.com 
Kartik Venkataraman  Intel  kvenkat@gomez.sc.intel.com 
Paula Womack  SGI  womack@sgi.com 
David Blythe  SGI  blythe@sgi.com 
Jon Khazam  Intel  jkhazam@mipos3.intel.com 
Tim Misner  Intel  tim_misner@ccm.sc.intel.com 
Kevin Rushforth  Sun  kcr@eng.sun.com 
Mark Segal  SGI  segal@sgi.com 
Detlef Roettger  Elsa  droettge@elsa.de 
Stefan Seeboth  Elsa  se@elsa.de 
Mike Heck  TGS  mmh@tgs.com 
Jim Cobb  PTC  jcobb@ptc.com 
Tim Kelley  Real3D  kelleyt@real3d.com 
Suzy Deffeyes  IBM  suzyq@austin.ibm.com 
Dave Erb IBM djerb@austin.ibm.com
Dan Brokenshire IBM brokensh@austin.ibm.com

List of Handouts

The handouts in the list below were distributed at the meeting. If the the document title is not linked to the actual document, you can request a copy of the document from the contact person listed.

OpenGL++

Overview of Ogl++ Day

  1. Recap from Feb. and update from members
  2. How do we support multiple APIs?
  3. Process discussion
  4. Brain dump from David/Mark about design status
  5. Spec walk-through with comments

Recap February ARB meeting and update from members

John: Decision was to go forward in off-line e-mail vote. Now, we have to figure out how. Mark: Not workable. Need to find a way to move forward.

Mark: Since last time, we've been investigating things not yet  reflected in the spec such as MP issues,actions, routes — should they intrinsically be built in?  Also fixed spelling of propagate. 

Kevin R.: Since last time, Java3d spec now available to Java licensees. Spec on the web-site. Also definitely plan on creating C++ bindings.

(Promoted by questions from Drew, Bimal, and Mark, Kevin R. coughed up the following...)
Kevin R: In comparing java3d vs ogl++, the following distinctions are noteworthy:

Mark went over goals. These aren't recapped here since they are available in the notes from the Feb 17-19 discussion at http://www.sgi.com/Technology/openGL/arb-feb.html.

Jon K.: Aren't important goals:

Multiple API Discussion

Discussion began a bit around reviewing topics from last time, such as: Mark: Clearly interested in supporting multiple APIs. Difficult question is how.
 
David B.: Fundamental solution space involves: Specification vagueness can raise performance costs for converting to renderer format.  Renderer specific approach either disallows extensibility or throws its difficulties at the application developer

Mark: A variant approach is to specify tightly -- but there will be performance costs in converting to the format of the underlying library.

Jim: It's highly undesirable to throw the problem back at the application. So let's explore neutral approach.

Fred: This is a solvable problem -- if one gives up on flexibility.

Paula: Why not just use D3D retained mode?

[This was followed by a short detour into the issues of concerning D3D's driver coverage and developer acceptance. Active participants were John S., Phil H., and Paula.]

David: One of the highest values of extensibility is for folks to use the latest extensions without a new release of the library. The monolithic Performer approach requires a new release of both libraries. Also, extensibility allows us to give customer's the go-ahead to use mechanisms that "good taste" prevents us from allowing into the library.
 
John: There's been a lot of discussion here. We need to break and then vote so we can move on. The underlying requirement was to "not be exclusionary." The basic choices are:

Bimal: Will anyone step forward to help the specification process for other APIs?

Mark: This does make the specification process more difficult. Willing to do it -- if this is what folks want.  [Silence followed]

Straw pool was taken with the results (pls check w/ Paula):

Process Discussion

[The process discussion took place at several points during  the day. I've rolled them together for the purpose of this write-up.]

Tim: Unlike OpenGL, areas of competition/differentiation aren't as clear for a given implementation. Extensions probably have the value, not the API itself.

Kurt: Areas of possible differentation are in platform  tuning and MP support. With Performer, lots of effort in making it work well for a given platform.

Kurt: In order to keep this moving, we need to call a meeting and have an immersive session. And we need to have on-going interaction. My sense is that we need to see a bound in the number of people involved and figure out how to kick off specification effort. The efforts/results of this group need to be visible to this body -- but to be effective the design group needs to be small as well for their working sessions.

John: Can I just ask where people stand in participating in the working group?

John: Let Mark know if you can give a  presentation of your scene graph efforts and your evaluation of its effectiveness. (Scene graph doesn't have to be implemented or shipping.)

Mark/David's Overview of Current Specification

[Notetaker's injection: I'll pretty much avoid repeating what was said because: (A) lots of things presented, and (B) I didn't understand many of them. I've included bits I found both interesting and grokable.]

David: Inventor went overboard in the object area. Need support for notification (not in spec yet) and set/get.

Valuable to force all geometry and appearance into leaves. OpenInventor programs ended up with lots of separators to wall off state -- which is difficult to optimize around. Performer, on the other hand, was very conscious of how to package state together. They sorted on graphics state to effectively utilize the pipeline.

After David presented the "shape" approach, Jim C. chimed in that the one appearance for multiple geometry approach "works for ProDesigner"

David: Want to allow multi-pass geometry -- or specific ordering or rendering.

David: Traversal model comes from Inventor. Extension mechanism depends on two big things:

Also want to preserver binary compatibility. Need to stay away from new release for new extensions.

Dinner Discussions: IBM rep (Suzy?) proposed and met little opposition with Coyote Cafe as place for the
night's meal.

Spec walk-through with comments

Feng/Kevin R.: Raised issues around traversal mechanism and hierarchy structure. David responded that they are trying hard to avoid doing things behind the back of the application.  Reiterated opposition to a purely static model of the data.

Kurt: Need goal/non-goal for modelling support.

Jan: Leaning away from behavior culling?

[Feng rattled off a series of issues. In general, seemed like Mark agreed that the issues needed further discussion.]

Tim: What about feedback loop? Present in Performer.

Jim C: Doc feedback: couldn't make heads or tails out of spline engine.

Jim C: How does one do highlight traversals? (David suggested inserting callbacks that change between traversals.)

Feng: Indexed triangle strip set docs incorrect. Cut/paste error.

David: Perfomer had limited support for indexing. But people really valued separate color indexing.
 
Phil: Can we turn some of these objects into display lists?

David: Possibly. But OpenInventor had a bad experience with this approach. System design center will by dynamic data over static data.

Feng: No notification mechanism in specification.

End of Day 1

OpenGL 1.2

The tentative list of extensions to be included in OpenGL 1.2 was discussed. For each extension under consideration, the group was queried to see who had implemented it and who had shipped it in a product.
Implementation Status for Extensions Under Consideration for OpenGL 1.2 
Extension 
Implemented By
Shipped By
packed pixels 
 
SGI 
texture3D 
HP, Sun 
SGI, IBM 
paletted texture 
 
Microsoft, 3Dlabs 
texture LOD 
 
SGI 
texture edge clamp 
HP 
SGI 
scene marker 
 
 
lit texture 
 
HP, E&S 
rescale normals 
Sun 
IBM, Intergraph 
range elements 
Microsoft 
 
compile vertex array 
IBM, SGI 
 
occlusion test 
HP 
 

David Blythe described the scene marker extension. The consensus was that this should be moved forward as a common extension by those interested.  ARB vote for including this in 1.2 was 0/8/1 (Aye/Nay/Abstain).

Drew described the status of the range elements extension. He had been asked to go off and think about how this extension could be combined with the compiled vertex array extension. He concluded that this extension really was interesting in its own right, and he recommended against combining it. Microsoft believes this extension is useful, but is willing to move ahead shipping this as an extension. Intergraph, Intel, and AccelGraphics were all interested in this extension. ARB vote for including this in 1.2 was 8/0/1.

We revisited the compiled vertex array extension as well, since the directive at the last meeting had been for Microsoft to go off and try to combine this extension with the range elements extension.  IBM spoke of the need for this extension in an SMP implementation of OpenGL. Bimal passed out a copy of an extension (IBM_vertex_array_object) that goes beyond what is addressed by the compiled vertex extension. After some discussion, we decided to make a list of the problems that the various proposals were trying to solve:

It was agreed to defer the discussion of this functionality until later in the day.  Those interested could participate in the discussion and develop a recommendation for the meeting tomorrow.

Kevin L. described the occlusion culling spec.  It does not currently support multiple objects, but HP would not be opposed to making the necessary changes. The extension has been implemented and is being used by ISV's. HP has applied for a patent for the occlusion culling technology, but a free license to use the technology would be granted to OpenGL licensees for using this in an OpenGL implementation. ARB vote for inclusion in 1.2 was 0/7/2.

Paula described the packed pixels extension. SGI is the only company shipping this. After a lengthy discussion to educate everyone, we came to the understanding that there was a shortcoming in the spec regarding pixel formats for NT. NT has a preference for pixel data in the formats BGR and BGRA rather than the RGB and RGBA currently defined by OpenGL. Microsoft has already defined and shipped an extension to support BGR and BGRA in the Windows environment. It seems like this is a philosophical issue  -- do we want to make changes to OpenGL that make it work better in the Windows environment, or is it sufficient to have Microsoft provide the capabilities through extensions? ARB vote for inclusion of the BGR and BGRA formats in OpenGL 1.2 was 8/1/0.  (SGI owns this extension spec.)

Randi mentioned a couple of issues that have been mentioned regarding the texture_3D extension. The validity of mipmapping 3D textures has been questioned. In the 2D case, mipmapping is used to create subsequently smaller filtered versions of the original image.You would expect a black and white checkerboard pattern to "blur" to gray as it gets filtered to progressively smaller sizes. In the 3D case, it is not clear that this is the right thing to do, since texels can obscure other texels. You could imagine a 3D texture that has a black surface one texel thick and a white interior.  For the top-level mipmap, you get what you would expect.  For subsequent levels, the object would be blurred to gray, when this may be incorrect.  For a solid texture, the black texels should obscure the white ones for all mipmap levels. It was pointed out that applications could derive the mipmap levels independently and preserve the black border rather than downsampling for each subsequent level.  Kurt said that there has been shown to be a lot of utility in this functionality.  There are many cases where you want to pass a plane through a 3D texture and see a properly filtered result at the plane intersection. But applications that use 3D texture mipmaps for non-transparent data sets should realize that they may not get the results that they expect. The max 3D texture size attribute was also questioned.  This number is pretty useless. (SGI owns this extension spec)

Drew described the status of the paletted texture extension. It hasn't been modified since the last meeting.  SGI would like to see support for a more general internal format of COLOR_INDEX. Drew doesn't think that this would be useful to applications since they wouldn't know how their input data would be mapped into pixel values. Kurt suggested that it might be OK if we don't support the generic COLOR_INDEX token in the list of internal formats.  Pat and Drew both stated that the generic token might be useful for the proxy query function. Another issue is whether at least one format should be required (the current spec does not require this). Alternatively, the spec could specify a minimum color index size. A straw poll revealed a consensus that it should be in the spec but to allow the minimum size to be 0. Paula wanted Drew to make sure that the spec included support for 3D textures. Kurt wanted Drew to make sure that the spec emphasized that the palette was part of the texture object. Is it permissible to do a copy texture subimage? (Microsoft owns this spec.)

The next extension discussed was the texture LOD extension. Pat asks if we want to specify some form of minimal precision for the texture clamping values. Kurt didn't think so.  (SGI owns this spec.)

David B. thought that some of the texture clamp spec should be rewritten in terms of u and v instead of in terms of s and t. This would not change the API, but would hopefully add clarity to the spec.  David will do the rewrite. (SGI owns this spec.)

The key issue for the lit texture extension is where the control resides. Bill A.'s current leaning is to extend the glLightModel call to allow the definition of the specular color to be applied post-texturing.  A second issue is whether the emissive color is grouped with the specular or with the ambient/diffuse components. The general feeling is to define the extension such that a second color is defined, along with an enumerant that defines how the second color is applied after texturing. If lighting is disabled, is this second color always 0? (E&S owns this spec.)

Bimal passed out an updated copy of the rescale normal extension. He had received one comment from SGI, and that was to allow an implementation the option of renormalizing normals if rescale normals was enabled.  This would allow an implementation that does not have a performance penalty for renormalizing to "do the right thing". Kurt suggested that we make this spec very simple and say either you apply such-and-such a function to the matrix or you apply such-and-such function to the normal. The first represents the "rescale normals" case and the second represents the "normalize normals" case. Bimal will modify the extension spec to incorporate the comments that were made. (IBM owns this spec.)

Drew described a minor issue with respect to the range elements extensions. Should there be an implementation-dependent limits to index values? Consensus was to provide a limit, but make it a hint. (Microsoft owns this spec.)

Imaging

SGI has an alpha minmax extension as well.  Any interest?  Not really.

Randi went through the list of issues he had compiled for the proposed optional imaging module for OpenGL 1.2.  His recommended resolutions were accepted for all of the issues.  Some of the interesting discussion:

Is there a reason that SGI decided to have pixel transfer operations affect pixel read, write, and transfer operations? David replied that he has seen some applications that use this processing capability (e.g., an electronic light table application that uses processing on readback).  Randi said that it seems like this is a potential source for programming bugs, since the applications generally won't be doing operations like convolution and so on during readback, and so will have to disable all of these operations whenever they call ReadPixels. Kurt suggests that it might be nice to have a single command to enable/disable pixel transfer operations. Since this could be implemented as a utility and since it really isn't feasible to change this behavior at this time, it was agreed to leave it as defined.

The spec says, "If a histogram entry component is incremented beyond its maximum value, its value becomes undefined." The philosophy of OpenGL has been to try very hard to avoid situations where undefined behavior can occur, so do we really want to allow undefined behavior here?  The reason for this statement in the histogram spec was to solve a performance/ease of implementation issue. It was pointed out that if an implementation uses wide enough collectors (e.g., 32-bit counters), there would never be an issue for any practical case.

Kurt observed that the INTENSITY formats are not allowed by the histogram extension. After some discussion, there was consensus that there really was no great need for these, and that is why they were disallowed.

Someone at SGI provided a few written comments on the wording for the convolution border modes extension. Randi will fold these comments into the spec while he is removing the WRAP_BORDER mode.

As far as the mechanism for determining whether the advanced imaging module is present, the consensus was to use the existing extension mechanism. Use ARB_imaging as extension name.  Revs with the spec. Would have a sample implementation and conformance tests. Issue: use ARB prefix or suffix in function and token names? The imaging capabilities would have only upwards compatible changes from this point on.

Kurt would like to weave the descriptions into the document, with an appendix that describes what's been added and what's optional.  Should each occurrence of optional capability be flagged?  This could be onerous.  Is it our intention to make it easy to not implement something or easy to implement it?  Straw poll: 11 favor suffixes, 9 favor no suffixes.  Agreed to add a new token for the extension string that indicates the presence of the imaging capabilities.

End of Day 1

GLX 1.3

Paula led the discussion of the GLX 1.3 issues by going over her issues list sent by email on 5/7/97. For SGIX_fbconfig, issues (A) and (B) were resolved as recommended. It was suggested that SGI make sure that the GLX widget is updated so that it works with the fbconfig capabilities. Issue (C) was not resolved, people were asked to think about it.  For this issue, it was suggested that the API should be changed to glXCreateGLXDrawable (so that windows and pixmaps would be supported) and to create a corresponding glXDestroyGLXDrawable. Issue (D) was resolved as recommended and issue (E) was not resolved (draw buffer errors and copy context were discussed).  Issue (F) was resolved as recommended.It was also suggested that SGI should make sure that the GLX widget works with the fbconfig capabilities. For the SGI_make_current_read and SGIX_pbuffer extensions, all issues were resolved as recommended.

Conformance Tests

Someone at SGI tried to "improve" the conformance tests by making them exercise double-buffering capabilities more thoroughly.  The conformance tests had originally been written to draw into the front buffer and then read back results from the front buffer.  The change resulted in the tests drawing into the back buffer, copying to the front buffer, and then reading from the back buffer. Paula recommends that we just restore the code to the previous state.  Everyone agreed, and there was some encouragement for SGI to add new conformance tests, especially for new capabilities. The general feeling was that the OpenGL 1.1 conformance testing was inadequate.  SGI thinks that something could be done to improve the conformance tests in the OpenGL 1.2 timeframe, and people are encouraged to collect their ideas about what should be added.

Dale reported that the OPC group has undertaken an activity to define the tests that an implementation must pass in order to guarantee a certain level of "goodness" for each performance test. Their motivation was to make sure companies pass the OpenGL conformance tests that cover the capabilities used in the performance test.  For instance, they want to ensure that implementations pass the antialiased line test if they report values on the CDRS performance test. There is a problem because some of the tests the OPC wants to require have previously been thrown out of the list of required tests by the ARB. This proposal will be discussed further at the OPC meeting later in the week.

GLU Issues

IBM thinks the application should be responsible for the locking of quadric and tesselator objects.  They would like to add a section 8 to the GLU specification: Drew commented that this is the same reason that vendors ship two C run-time libraries: one that's threadsafe and one that's not.  Perhaps vendors need to ship two GLU libraries. Dale stated that this isn't a spec issue but it's a decision for companies to make. Fred suggested that what IBM has written could be the basis for the spec for multithreaded GLU (e.g., "GLU-MT"). Given the discussion, it didn't seem that people were comfortable with IBM's proposal.  Bimal will revise it and send out a new version by email.

OpenGL 1.2 Schedule

It might be too aggressive to meet in August, so a fallback meeting date of September 8-10 was established.

The OPC group has come up with the following schedule for their meetings:

Given our OpenGL 1.2 schedule, we decided to stick to the meeting dates we have planned for August  and December. And since we plan on meeting in December, it is unlikely we'd sync up with the OPC folks for a meeting in January.  It may not be until the May '98 meeting that we would coordinate our meetings with the OPC folks. Thus, the ARB meeting schedule for the rest of the year is:

Vertex Set Proposal

Bimal passed out a revised proposal for the vertex array object extension (now called vertex set).  After some discussion, it was agreed that there were enough issues that this should not be considered for OpenGL 1.2.  Bimal will continue to develop the spec for this as a common extension and drive issues to closure.

Extensions

Igor described Intel's proposal for an extension that supports parallel vertex arrays. This extension is motivated by the desire to optimize cache access and to allow parallel rendering. Intel thinks that the parallel rendering that is possible could result in a 25% performance improvement. Several companies indicated some interest in pursuing the definition of this extension, and Intel will develop it into a common extension spec.

Kartik presented Intel's proposed texture scissor extension. SGI has been thinking about similar things but for different reasons (better ways to support non-power of two textures). Again, several companies expressed interest in pursuing the definition of this extension.  Kartik will continue to collect issues.  Paula will make sure this extension spec gets out there with all the other extension specifications.

Drew reported on the status of the multitexture extension.  He got some feedback from E&S but no one else. Microsoft's time frame has changed and they now have more time to work on achieving an extension definition that is unified with the SGI proposal. The place where the two proposals differed the most was in the definition of the texture combine function. Drew believes that his proposal is a superset of the SGI proposal.  Bill A. has some ideas about a really different texture combine function, so he would like to see the proposal as two extensions: one that specifies the combine function and one that specifies all of the stuff that precedes the combine function. The only changes that Drew made to the spec since the last time are nomenclature changes. People should contact Drew with any comments.

FORTRAN90 Bindings for OpenGL

What should we do about the proposal for FORTRAN90 OpenGL bindings? Pat suggests that we put the proposal out for public review and get comments from FORTRAN users.  Dale and Paula commented that we don't want to invest effort into something that nobody is asking for.  Paula suggested that at a minimum, people should go back and talk to their FORTRAN people and find out what they think.

Thanks to IBM for hosting this meeting!


RS/6000 | Solutions | Hardware | Software | Support | ReSource | sitemap
IBM | Order | Search | Contact IBM | Help | © | ®

© Copyright IBM Corp. 1994, 1995, 1996. All rights reserved.
Last modified: Wed Jun 11 08:09:58 CDT 1997