[Mesa-dev] COMPSIZE function in OpenGL XML registry

Ian Romanick idr at freedesktop.org
Wed Jun 10 15:55:37 PDT 2015


On 06/10/2015 03:05 PM, Shervin Sharifi wrote:
> Thanks Ian.
> If I want to implement the actual CompSize function, how should I figure
> out the details? 

The way I did it for the GLX protocol code in Mesa is to make a
glFoo_compsize function for each GL function that has a variable sized
array as input.  Often these functions can be shared (e.g., the function
for glTexParameteriv and glTexParameterfv are the same).

You have to read the docs to figure out that, for example, passing
GL_TEXTURE_BASE_LEVEL to glTexParameteriv means there's 1 value but
passing GL_TEXTURE_BORDER_COLOR means there are 4 values.  I implemented
that in Mesa (many years before the current Khronos XML existed) by
having additional decorations in my XML.  Each enum specifies which
functions can use it and how many values it carries.

The Khronos XML specifies which enums can be passed to which functions
(via <group>), but it doesn't look like it has any information about how
much data goes along with it. :(

> Thanks, 
>    Shervin
> 
> On Wed, Jun 10, 2015 at 2:56 PM, Ian Romanick <idr at freedesktop.org
> <mailto:idr at freedesktop.org>> wrote:
> 
>     On 06/10/2015 11:25 AM, Shervin Sharifi wrote:
>     > Hi,
>     >
>     >  This may not be the right forum to ask this, but I didn't know of a
>     > better forum, so I thought I can ask here.
>     >
>     >  I'm new to OpenGL. I am looking at XML registry for OpenGL and there
>     > are some parameters with attributes containing a function COMPSIZE (I've
>     > pasted an example below).
>     >  I tried to find information on what the COMPSIZE function is, where/how
>     > it is used, etc, but couldn't find documentation or credible information
>     > on the Internet.
>     >  Any information or pointer to that would be really helpful.
> 
>     It's a signal to code generation scripts that the size of the data
>     referenced by the "pointer" parameter depends on the values of "type"
>     and "stride".  For example, GLX protocol code uses this to know how much
>     image data to send to the server for glTexImage2D.
> 
>     >  Thanks,
>     >     Shervin
>     >
>     >
>     >
>     > This example is from gl.xml in the OpenGL registry:
>     >
>     >         <command>
>     >             <proto>void <name>glBinormalPointerEXT</name></proto>
>     >             <param group="BinormalPointerTypeEXT"><ptype>GLenum</ptype>
>     > <name>type</name></param>
>     >             <param><ptype>GLsizei</ptype> <name>stride</name></param>
>     >             <param len="COMPSIZE(type,stride)">const void
>     > *<name>pointer</name></param>
>     >         </command>
>     >
>     >
>     > _______________________________________________
>     > mesa-dev mailing list
>     > mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>     > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 



More information about the mesa-dev mailing list