vallium: initial import of the vulkan frontend
This is the initial import of the vallium frontend for gallium. This is only good enough to run the triangle and the gears demo (wrongly) from Sascha demos. Improvements are mostly on the llvmpipe side after this. It contains an implementation of the Vulkan API which is mapped onto the gallium API, and is suitable only for SOFTWARE drivers. Command buffers are recordred into malloced memory, then later they are played back against the gallium API. The command buffers are mostly just Vulkan API marshalling but in some places the information is processed before being put into the command buffer (renderpass stuff). Execution happens on a separate "graphics" thread, againt the gallium API. There is only a single queue which wraps a single gallium context. Resources are allocated via the new resource/memory APIs. Shaders are created via the context and bound/unbound in the second thread. (No HW for reasons - memory management, sw paths for lots of paths, pointless CPU side queue) v2: drop mesa_icd, drop cpp_args, drop extra flags, change meson config (Eric) v2.1: use meson-gallium job meson pieces: Reviewed-by:Eric Engestrom <eric@engestrom.ch> overall: Acked-by:
Roland Scheidegger <sroland@vmware.com> Part-of: <!6082>
- .gitlab-ci.yml 1 addition, 0 deletions.gitlab-ci.yml
- meson.build 6 additions, 2 deletionsmeson.build
- meson_options.txt 1 addition, 1 deletionmeson_options.txt
- src/gallium/frontends/vallium/meson.build 66 additions, 0 deletionssrc/gallium/frontends/vallium/meson.build
- src/gallium/frontends/vallium/val_cmd_buffer.c 1419 additions, 0 deletionssrc/gallium/frontends/vallium/val_cmd_buffer.c
- src/gallium/frontends/vallium/val_conv.h 198 additions, 0 deletionssrc/gallium/frontends/vallium/val_conv.h
- src/gallium/frontends/vallium/val_descriptor_set.c 501 additions, 0 deletionssrc/gallium/frontends/vallium/val_descriptor_set.c
- src/gallium/frontends/vallium/val_device.c 1702 additions, 0 deletionssrc/gallium/frontends/vallium/val_device.c
- src/gallium/frontends/vallium/val_entrypoints_gen.py 816 additions, 0 deletionssrc/gallium/frontends/vallium/val_entrypoints_gen.py
- src/gallium/frontends/vallium/val_execute.c 2471 additions, 0 deletionssrc/gallium/frontends/vallium/val_execute.c
- src/gallium/frontends/vallium/val_extensions.py 166 additions, 0 deletionssrc/gallium/frontends/vallium/val_extensions.py
- src/gallium/frontends/vallium/val_formats.c 442 additions, 0 deletionssrc/gallium/frontends/vallium/val_formats.c
- src/gallium/frontends/vallium/val_image.c 288 additions, 0 deletionssrc/gallium/frontends/vallium/val_image.c
- src/gallium/frontends/vallium/val_lower_input_attachments.c 109 additions, 0 deletionssrc/gallium/frontends/vallium/val_lower_input_attachments.c
- src/gallium/frontends/vallium/val_lower_vulkan_resource.c 176 additions, 0 deletionssrc/gallium/frontends/vallium/val_lower_vulkan_resource.c
- src/gallium/frontends/vallium/val_lower_vulkan_resource.h 36 additions, 0 deletionssrc/gallium/frontends/vallium/val_lower_vulkan_resource.h
- src/gallium/frontends/vallium/val_pass.c 290 additions, 0 deletionssrc/gallium/frontends/vallium/val_pass.c
- src/gallium/frontends/vallium/val_pipeline.c 943 additions, 0 deletionssrc/gallium/frontends/vallium/val_pipeline.c
- src/gallium/frontends/vallium/val_pipeline_cache.c 103 additions, 0 deletionssrc/gallium/frontends/vallium/val_pipeline_cache.c
- src/gallium/frontends/vallium/val_private.h 989 additions, 0 deletionssrc/gallium/frontends/vallium/val_private.h