<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - shader_query.cpp:49: error: invalid conversion from 'void*' to 'GLuint'"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=66346#c11">Comment # 11</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - shader_query.cpp:49: error: invalid conversion from 'void*' to 'GLuint'"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=66346">bug 66346</a>
              from <span class="vcard"><a class="email" href="mailto:jeremyhu@freedesktop.org" title="Jeremy Huddleston <jeremyhu@freedesktop.org>"> <span class="fn">Jeremy Huddleston</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=66346#c7">comment #7</a>)
<span class="quote">> > Thanks, Apple!</span >

You should thank the lack of standards regarding what GLhandleARB should've
been defined as back in 2005.  It's no more Apple's fault than it is Mesa's.

Furthermore, we had been dealing with this in src/glx/apple without major
issues through 8.0.5 (which was the last version before src/glx/apple stopped
building in mesa due to the transition to autotools-only builds).  GLhandleARB
was always 'void *' in mesa on OS X.

<span class="quote">> > I think Mesa is just broken on Apple, probably forever, because of this.  We
> > assume *everywhere* that GLhandleARB == GLuint... </span >

Well, that's certainly incorrect and worthy of being fixed.  You can't make
that assumption and should fix any code which does.

<span class="quote">> > to the point that
> > glGetActiveAttrib and glGetActiveAttribARB (and many, many others) are the
> > same function.</span >

An obvious bug that should be straight forward to address.

<span class="quote">> Although Apple's GLhandleARB are void *, I recall reading that only 32bits
> are used.</span >

I don't think you should not assume anything about the implementation.

<span class="quote">> (Unfortunately Apple can't go back in time and replace GLhandleARB
> with uints, as that would break binary compatibility.)</span >

Yes, but fixing this doesn't really have any binary compatibility impact in
mesa since GLhandleARB has always been void * on darwin anyways.  Most of this
is about fixing build failures and fixing correctness for other architectures
to make mesa more robust in genera.

<span class="quote">> Furthermore what Apple does is irrelevant, as Mesa is free to do what it
> wants (ie, it's free to assume using GLhandleARB are always 32bits).</span >

Except for the fact that all the OpenGL functions in OpenGL.framework need to
match the signature of the corresponding functions in mesa, since they're
passed straight through.  That's why GLhandleARB has always been void * in mesa
on darwin.

<span class="quote">> In short, all we have to do we fix the compiler errors, either:

> 1) typedefing GLhandleARB as uintptr_t internally when

>   #ifdef __APPLE__
>   #  ifdef BUILDING_MESA
>   typedef uintptr_t GLhandleARB;
>   #  else
>   typedef void *GLhandleARB;
>   #  endif
>   #else
>   typedef unsigned int GLhandleARB;
>   #endif</span >

Ugly, and this just continues to mask underlying bugs.

<span class="quote">> 2) add intermediate casts to (uintptr_t) between uint<->GLhandleARB
> conversions.</span >

Ugly and also just masks underlying bugs =/

That being said, #2 is possibly the safest option because we are at least
forced to look at every problem point in the API.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>