<div dir="ltr">So, we just pushed a branch containing a Vulkan driver.  Naturally, we<br>would like to incorporate that driver into the upstream mesa tree.  While<br>we work on upstreaming the prerequisites in NIR and the i965 back-end<br>compiler, there is a question that needs answering:  Where do we put it?<br><br>The Vulkan driver challenges the tree-like nature of the way mesa is<br>currently organized.  We now have two drivers that share a lot of the same<br>underlying hardware-specific code (compiler and ISL) but target different<br>APIs and no gallium-like middle layer to hide behind.  Obviously, we don't<br>want to put a Vulkan driver in src/mesa/drivers/dri/i965.  If we start a<br>src/vulkan directory, we don't really want to put the shared parts into<br>src/vulkan/intel.  Where should we put the Intel-specific but API-agnostic<br>bits?  In particular, we need a place to put ISL and the back-end compiler.<br>We don't want to deal with the headaches of making a public API and keeping<br>it stable, so they need to live somewhere in the mesa tree.<br><br>In my personal opinion, the best thing to do is probably to add a src/intel<br>folder with subfolders for vulkan, isl, and the back-end compiler.  The<br>src/mesa/drivers/dri/i965 folder would then basically be just the GL bits<br>of the driver.  It does seem a little odd to have "intel" as a top-level<br>source folder, but I can't come up with anything better.<br><br>Thoughts?  Opinions?  Favorite colors?<br>--Jason<br><br></div>