<div dir="auto"><div>by tiled renderer, I meant that I would split the render target into small pieces, then, for each triangle, decide which pieces contains the triangle and add that triangle to per-piece render lists. afterwards, I'd use the constructed render lists and render all the parts of triangles in a piece, then go to the next piece. Obviously, I'd use multiple threads that are all rendering their separate pieces simultaneously. I'm not sure if you'd be able to use the whole-function-vectorization pass with gallium3d, you'd need to translate the shader to llvm ir and back. the whole-function-vectorization pass would still output scalar code for statically uniform values, llvm (as of 3.9.1) doesn't have a pass to devectorize vectors where all elements are identical.</div><div dir="auto">Jacob Lifshay<br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On Feb 11, 2017 11:11, "Roland Scheidegger" <<a href="mailto:sroland@vmware.com">sroland@vmware.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="elided-text">Am 11.02.2017 um 00:03 schrieb Jacob Lifshay:<br>
> I would like to write a software implementation of Vulkan for inclusion<br>
> in mesa3d. I wanted to use a tiled renderer coupled with llvm and either<br>
> write or use a whole-function-vectorization pass. Would anyone be<br>
> willing to mentor me for this project? I would probably only need help<br>
> getting it committed, and would be able to do the rest with minimal help.<br>
> Jacob Lifshay<br>
<br>
</div>This sounds like a potentially interesting project, though I don't have<br>
much of an idea if it's feasible as gsoc.<br>
By "using a tiled renderer" do you mean you want to "borrow" that,<br>
presumably from either llvmpipe or openswr?<br>
The whole-function-vectorization idea for shader execution looks<br>
reasonable to me, just not sure if it will deliver good results. I guess<br>
it would be nice if that could sort of be used as a replacement for the<br>
current gallivm cpu shader execution implementation (used by both<br>
llvmpipe and openswr).<br>
<font color="#888888"><br>
Roland<br>
<br>
</font></blockquote></div><br></div></div></div>