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. Jacob Lifshay
On Feb 11, 2017 11:11, "Roland Scheidegger" <srol...@vmware.com> wrote: Am 11.02.2017 um 00:03 schrieb Jacob Lifshay: > I would like to write a software implementation of Vulkan for inclusion > in mesa3d. I wanted to use a tiled renderer coupled with llvm and either > write or use a whole-function-vectorization pass. Would anyone be > willing to mentor me for this project? I would probably only need help > getting it committed, and would be able to do the rest with minimal help. > Jacob Lifshay This sounds like a potentially interesting project, though I don't have much of an idea if it's feasible as gsoc. By "using a tiled renderer" do you mean you want to "borrow" that, presumably from either llvmpipe or openswr? The whole-function-vectorization idea for shader execution looks reasonable to me, just not sure if it will deliver good results. I guess it would be nice if that could sort of be used as a replacement for the current gallivm cpu shader execution implementation (used by both llvmpipe and openswr). Roland
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev