Brett Johnson wrote:
| 
| Sure, but these are state changes (like a color change) that don't affect
| the dispatch table.  ...

I had in mind state changes involving the depth test, blending
function, polygon offset, stencilling, and texturing.  But I grant
that those will affect the dispatch table on some machines but not
others, so the performance impact will vary.

| Existing Windows ICDs are a reasonable proof of this.  The cost of updating
| the ICD dispatch table is horrendous, and involves calling MS code which
| replaces the entire table!  Yet most drivers don't have a problem with it
| (or at least they have reasonable workarounds to it).

Hmm.  I'd like to benchmark that.  Now that Johan Smet has glean
running under Windows, it's time to add some new tests.  :-)

| Maybe I don't understand what you've proposed.  It looks to me like your
| proposal trades having a dynamic offset to call the routine for having a
| static offset to modify the dispatch table.

Sorry; that's my fault for not being more clear this time around.  The
reason for having registered dispatch-table offsets for all commands
is so that any command (core or extension) known at the time libGL is
compiled can be dispatched using a static offset.  The code for
dynamic offsets that I mentioned a couple of messages ago is used only
for new extensions that were unknown at the time libGL was compiled.

| One other thing I'm concerned with is the requirement that all drivers must
| use an identical monolithic struct (defined by whom?  The ARB?) to store all
| their entrypoints.

Just like new enumerants.  I'd be inclined to request dispatch-table
offsets at the same time I request a subrange for new enumerants for
my extensions.  Currently SGI handles the bookkeeping for this.

| I'm convinced that context-independent is the way to go.  My vote is to
| close the issue and go on.

Sounds good to me, too.  We'll have to follow up with implementation
concerns in a different forum.

Allen

Reply via email to