Bug 54 - Kazan Vulkan driver operational
Summary: Kazan Vulkan driver operational
Status: CONFIRMED
Alias: None
Product: Libre-SOC's first SoC
Classification: Unclassified
Component: Source Code (show other bugs)
Version: unspecified
Hardware: PC Linux
: --- enhancement
Assignee: Jacob Lifshay
URL:
Depends on: 161 260 386 405 632 83 451
Blocks: 191
  Show dependency treegraph
 
Reported: 2019-03-21 11:30 GMT by Luke Kenneth Casson Leighton
Modified: 2022-06-16 14:29 BST (History)
2 users (show)

See Also:
NLnet milestone: NLnet.2019.02.012
total budget (EUR) for completion of task and all subtasks: 4400
budget (EUR) for this task, excluding subtasks' budget: 0
parent task for budget allocation: 191
child tasks for budget allocation: 83 161 451 632
The table of payments (in EUR) for this task; TOML format:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Luke Kenneth Casson Leighton 2019-03-21 11:30:12 GMT
running Vulkan applications.  may need to be subdivided into other milestones.
Comment 1 Luke Kenneth Casson Leighton 2019-03-21 17:46:11 GMT
to be broken down into suitable milestones

Subgoals of Vulkan driver (not in any particular order):

getting basic compute shader to compile and run on x86.
getting control barriers to work on x86
getting basic graphics shaders (vertex and fragment only) to compile and run on x86
adding support for required texture formats on x86
adding support for rendering to DRM surfaces on x86
supporting extensions required for zink (mesa opengl to vulkan translator) on x86
running some vulkan games on x86
running some opengl games on x86 using zink
passing vulkan test suite on x86
adding support for running shaders on rv64gc (without SimpleV)
passing vulkan test suite on rv64gc
implementing SimpleV support in llvm
working on upstreaming llvm patches
getting basic compute shaders to compile and run on SimpleV
getting basic graphics shaders to compile and run on SimpleV
running vulkan games on SimpleV
passing vulkan test suite on SimpleV
implementing support for additional custom instructions
passing test suite when using additional custom instructions
work on inclusion of vulkan driver in debian on x86 and riscv
work on inclusion of vulkan driver in fedora on x86 and riscv

completed tasks:
getting support for rv64gc on linux upstream in rust (completed independently by rust community)
Comment 2 Jacob Lifshay 2019-03-21 18:02:28 GMT
edited so each item is on a single line
Comment 3 Luke Kenneth Casson Leighton 2019-04-18 17:23:21 BST
already working:

* Implementing enough of the Vulkan API to successfully execute vulkaninfo,
including implementing (not completely tested yet) X11 interface code.
* Implementing the SPIR-V parser generator
* Implementing enough of the Vulkan API to pass the first 15 or so tests
(all the ones before actual rendering is required) in the Vulkan
Conformance Test Suite (in the process rediscovering a bug in debian's
version of libvulkan1.so)
* Implementing the SPIR-V structure parser (discovering a bug in spirv-opt
https://github.com/KhronosGroup/SPIRV-Tools/issues/2433)
* Implementing enough of the Vulkan API to get to the call of the shader
compiler in https://github.com/programmerjake/vulkan_minimal_compute
* Integrating LLVM's build process into Cargo
Comment 4 Jacob Lifshay 2019-04-27 02:04:28 BST
Milestones completed since Feb 1:
(In reply to Luke Kenneth Casson Leighton from comment #3)
> already working:
> 
> * Implementing the SPIR-V structure parser (discovering a bug in spirv-opt
> https://github.com/KhronosGroup/SPIRV-Tools/issues/2433)
Comment 5 Luke Kenneth Casson Leighton 2019-05-13 04:38:37 BST
TODO for zink, cross-ref here
https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/
Comment 6 Luke Kenneth Casson Leighton 2019-05-13 04:40:21 BST
hi jacob, assigning this one to you, reminder of breakdown
of tasks, NLnet will be temporarily assigning EUR $1000 to
each plus $3000 on completion of all.
Comment 7 Jacob Lifshay 2020-02-05 07:40:10 GMT
The current plan for the shader compiler is to split it into several phases:

* translating SPIR-V into internal IR (bug #161)
* shader linking (matching up interfaces between different stages)
* optimizations
* vectorize IR
* optimizations
* control barrier lowering
* optimizations
* translating internal IR into backend IR (llvm or otherwise)
* backend optimizations
* backend generates machine code