[Mesa-dev] software implementation of vulkan for gsoc/evoc

Dave Airlie airlied at gmail.com
Sun Feb 12 23:14:23 UTC 2017


On 11 February 2017 at 09:03, Jacob Lifshay <programmerjake at gmail.com> wrote:
> 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.

So I started writing a vulkan->gallium swrast layer

https://cgit.freedesktop.org/~airlied/mesa/log/?h=not-a-vulkan-swrast

with the intention of using it to prove a vulkan swrast driver on top
of llvmpipe eventually.

This was because I was being too lazy to just rewrite llvmpipe as a
vulkan driver,
and it seemed easier to just write the layer to investigate. The thing
about vulkan is it
already very based around the idea of command streams and parallel
building/execution,
so having the gallium/vulkan layer record a CPU command stream and execute that
isn't going to be a large an overhead as doing something similiar with
hw drivers.

I got it working with softpipe after adding a bunch of features to
softpipe, however to
get it going with llvmpipe, there would need to be a lot of work on
improving llvmpipe.

Vulkan really wants images and compute shaders (i.e. it requires
them), and so far we haven't got
image and compute shader support for llvmpipe. There are a few threads
previously on this,
but the main problem with compute shader is getting efficient barriers
working, which needs
some kind of threading model, maybe llvm's coroutine support is useful
for this we won't know
until we try I suppose.

I'd probably be happy to mentor on the project, but you'd want to
define the scope of it pretty
well, as there is a lot of work to get the non-graphics pieces even if
you are just ripping stuff
out of llvmpipe.

Dave.


More information about the mesa-dev mailing list