> I'm assuming that control barriers in Vulkan are identical to barriers > across a work-group in opencl. I was going to have a work-group be a single > OS thread, with the different work-items mapped to SIMD lanes. If we need to > have additional scheduling, I have written a javascript compiler that > supports generator functions, so I mostly know how to write a llvm pass to > implement that. I was planning on writing the shader compiler using llvm, > using the whole-function-vectorization pass I will write, and using the > pre-existing spir-v to llvm translation layer. I would also write some llvm > passes to translate from texture reads and stuff to basic vector ops.
Well the problem is number of work-groups that gets launched could be quite high, and this can cause a large overhead in number of host threads that have to be launched. There was some discussion on this in mesa-dev archives back when I added softpipe compute shaders. > I have a prototype rasterizer, however I haven't implemented binning for > triangles yet or implemented interpolation. currently, it can handle > triangles in 3D homogeneous and calculate edge equations. > https://github.com/programmerjake/tiled-renderer > A previous 3d renderer that doesn't implement any vectorization and has > opengl 1.x level functionality: > https://github.com/programmerjake/lib3d/blob/master/softrender.cpp Well I think we already have a completely fine rasterizer and binning and whatever else in the llvmpipe code base. I'd much rather any Mesa based project doesn't throw all of that away, there is no reason the same swrast backend couldn't be abstracted to be used for both GL and Vulkan and introducing another just because it's interesting isn't a great fit for long term project maintenance.. If there are improvements to llvmpipe that need to be made, then that is something to possibly consider, but I'm not sure why a swrast vulkan needs a from scratch raster implemented. For a project that is so large in scope, I'd think reusing that code would be of some use. Since most of the fun stuff is all the texture sampling etc. > The scope that I intended to complete is the bare minimum to be vulkan > conformant (i.e. no tessellation and no geometry shaders), so implementing a > loadable ICD for linux and windows that implements a single queue, vertex, > fragment, and compute shaders, implementing events, semaphores, and fences, > implementing images with the minimum requirements, supporting a f32 depth > buffer or a f24 with 8bit stencil, and supporting a yet-to-be-determined > compressed format. For the image optimal layouts, I will probably use the > same chunked layout I use in > https://github.com/programmerjake/tiled-renderer/blob/master2/image.h#L59 , > where I have a linear array of chunks where each chunk has a linear array of > texels. If you think that's too big, we could leave out all of the image > formats except the two depth-stencil formats, the 8-bit and 32-bit integer > and 32-bit float formats. > Seems like a quite large scope, possibly a bit big for a GSoC though, esp one that intends to not use any existing Mesa code. Dave. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev