<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)">Let's not derail this.</span><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)">If the point is to get Croquet working on a 64 bit VM, then none of this is relevant.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)">The only thing that needs to happen is making the old, but still very functional and efficient enough OpenGL bindings work.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)">- Bert -</span></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 12, 2020 at 6:28 AM Eric Gade <<a href="mailto:eric.gade@gmail.com">eric.gade@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi all,</div><div><br></div><div>Just want to chime in on this briefly. If you decide to go down the Vulkan route, I don't think you need to parse header files. Khronos has conveniently created an XML file describing the API, which it itself used to generate the library's main header file in the first place. You can read about it here:</div><div><a href="https://github.com/KhronosGroup/Vulkan-Docs/blob/master/xml/README.adoc" target="_blank">https://github.com/KhronosGroup/Vulkan-Docs/blob/master/xml/README.adoc</a></div><div>  <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 11, 2020 at 9:51 PM Phil B <<a href="mailto:pbpublist@gmail.com" target="_blank">pbpublist@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Wed, Mar 11, 2020 at 8:52 PM gettimothy <<a href="mailto:gettimothy@zoho.com" target="_blank">gettimothy@zoho.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><i>Hi Phil B</i><br></div><div><br></div><div><i>Thank you. </i><br></div><div><br></div><blockquote style="border:1px solid rgb(204,204,204);padding:7px;background-color:rgb(245,245,245)"><div><div><br></div><div><i><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">I believe the OpenGL API calls were generated by code written by Andreas Raab 15+ years ago against the OpenGL spec files (these are files from the Khronos Group which have not been maintained for modern OpenGL releases).  When I asked about this over a decade ago, he responded indicating what I just wrote and that he no longer had the code he used to generate them.</span></i><br></div></div></blockquote><div><i>Interesting. My current project is on XTreams-Parsing and I wonder if the knowledge gained there can be leveraged here to replicate Raab's work.</i></div></div></div></blockquote><div><br></div><div>It's not that hard to replicate the results: it's just a matter of parsing C header files which is pretty well understood.  Take a look at the squeak-dev mailing list archives and you'll find at least a couple of people who did just that in a couple of different ways.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><br></div><div><br></div><blockquote style="border:1px solid rgb(204,204,204);padding:7px;background-color:rgb(245,245,245)"><div><div>This would not be a trivial task since you'd probably have to rewrite, or at least significantly restructure, most of Croquet to make it work.<br></div></div></blockquote><div><br><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">Do we want Croquet to be stuck with 1.6 openGL?</div></div></div></div></blockquote><div><br></div><div>No, ideally you'd want it updated to use the latest OpenGL (and eventually migrate to something like Vulkan)... but that's easier said than done.  (i.e. it's a fair amount of work)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"> Or are there design patterns to decouple/loosely bind the Croquet app from the api calls?<br></div></div></div></div></blockquote><div><br></div><div>Others may have different ideas, but from my experience poking around with Etoys, Croquet and later the STEPS project I believe that a rewrite is likely easier.  While the designs are reasonably clean and well done, they are very tightly coupled and, while layered, are not very modular.  I suspect that at least part of the reason for this was to maximize the performance they could squeeze out of the systems they had access to/were targeting at the time.</div><div><br></div><div>The approach I've taken with these projects is to pull out the parts I'm interested in  and use them as a starting point.  For example, ~12 years ago I was interested in OpenGL in Squeak so I pulled it out of Croquet and ported it back to Squeak and later Cuis.  However, it took a bit of work to *just* have the OpenGL API as it was originally written to support Croquet so there were bits and pieces of Croquet woven in the code.  Just accept that it's only a starting point rather than a be-all, end-all solution. (If your experience is anything like mine was, you *will* learn a lot about FFI going through this exercise)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">First-things-first...I need to get the existing app  working, understand what Bert is communicating and then revisit this.<br></div></div></div></div></blockquote><div><br></div><div>Yep, get what exists running and then see what you want to do re: modernizing it.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">Recreating Raab's work strikes me as fundamentally important to the project. </div></div></div></div></blockquote><div><br></div><div>While it would have been interesting to see how Andreas approached generating the API calls (he often wrote some pretty clever code), exactly how it was done is likely lost.  I suspect we've got the most important parts of his work in the artifacts of the various projects, including Croquet, that he was part of.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">thank you for your time.<br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">t</div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1"><br></div><div id="gmail-m_-8121564364357450214gmail-m_7344099518013582779gmail-m_8255441118061343493Zm-_Id_-Sgn1">---- On Wed, 11 Mar 2020 19:54:14 -0400 <b>Phil B <<a href="mailto:pbpublist@gmail.com" target="_blank">pbpublist@gmail.com</a>></b> wrote ----<br></div><br><blockquote style="border-left:1px solid rgb(204,204,204);padding-left:6px;margin:0px 0px 0px 5px"><div><div dir="ltr">As Bert indicated, it's not really relevant but since you asked...<div><br></div><div>I believe the OpenGL API calls were generated by code written by Andreas Raab 15+ years ago against the OpenGL spec files (these are files from the Khronos Group which have not been maintained for modern OpenGL releases).  When I asked about this over a decade ago, he responded indicating what I just wrote and that he no longer had the code he used to generate them.<div><br></div><div>If you were to do it again today, you would want to use the OpenGL C header files instead.  But again this is somewhat moot regarding Croquet: it's written against an ancient version of OpenGL (I believe 1.6 + extensions that get it *roughly* to 2.0 feature-wise) which most desktop drivers are still backwards compatible with.  So you can just use the calls already there.  You'd really only need to worry about regenerating the API if you wanted to update Croquet to take advantage of the latest OpenGL/features and/or run it under OpenGL ES.  This would not be a trivial task since you'd probably have to rewrite, or at least significantly restructure, most of Croquet to make it work.<br></div></div></div><br><div><div dir="ltr">On Wed, Mar 11, 2020 at 5:58 PM gettimothy via Squeak-dev <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>> wrote:<br></div><div><br></div></div></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u><div><div style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10pt"><div>btw, the glMatrixMode:mode method tells us that it was automatically generated.<br></div><div><br></div><div>by what? When? against what?<br></div><blockquote style="border:1px solid rgb(204,204,204);padding:7px;background-color:rgb(245,245,245)"><div><div>glMatrixMode: mode<br></div><div><b><u>"This method was automatically generated."</u></b><br></div><div>"void glMatrixMode(GLenum mode);"<br></div><div><apicall: void 'glMatrixMode' (ulong) module: '#openGLLibraryName'><br></div><div>^self externalCallFailed<br></div></div></blockquote><div><br></div><div>Is that "automatic generation"  an example of fundamental work that must be done to make Croquet rock-n-roll?<br></div><div><br></div><div>cheers,<br></div><div><br></div><div>tty<br></div><div><br></div><div><br></div></div><br></div><br></blockquote></blockquote></div><div><br></div></div><br></div></blockquote></div></div>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr"><div dir="ltr"><div>Eric</div></div></div>
<br>
</blockquote></div></div>