portability/README.md

60 lines
2.5 KiB
Markdown
Raw Normal View History

2017-09-07 12:01:58 +10:00
## gfx-portability
[![Build Status](https://travis-ci.org/gfx-rs/portability.svg?branch=master)](https://travis-ci.org/gfx-rs/portability)
2018-01-19 04:42:29 +11:00
[![Gitter](https://badges.gitter.im/gfx-rs/portability.svg)](https://gitter.im/gfx-rs/portability)
2017-09-07 12:01:58 +10:00
2018-01-19 04:42:29 +11:00
This is a prototype library implementing [Vulkan Portability Initiative](https://www.khronos.org/blog/khronos-announces-the-vulkan-portability-initiative) using gfx-rs [low-level core](http://gfx-rs.github.io/2017/07/24/low-level.html). See gfx-rs [meta issue](https://github.com/gfx-rs/gfx/issues/1354) for backend limitations and further details.
2017-12-08 08:29:14 +11:00
2018-04-01 11:08:13 +10:00
## Vulkan CTS coverage
| gfx-rs Backend | Total cases | Pass | Fail | Quality warning | Compatibility warning | Not supported | Resource error | Internal error | Timeout | Crash |
| -------- | ---- | ---- | --- | -- | - | ---- | - | - | - | - |
2018-04-19 08:37:23 +10:00
| *Vulkan* | 7759 | 2155 | 131 | 34 | 0 | 5439 | 0 | 0 | 0 | 0 |
2018-04-20 04:15:56 +10:00
| *DX12* | 3576 | 1258 | 70 | 0 | 0 | 2248 | 0 | 0 | 0 | 0 |
2018-04-27 07:55:06 +10:00
| *Metal* | 7687 | 2072 | 112 | 39 | 0 | 5464 | 0 | 0 | 0 | 0 |
2018-04-01 11:08:13 +10:00
2018-04-27 07:55:06 +10:00
Current blockers:
- *Vulkan*: "api.command_buffers.render_pass_continue" (secondary render passes).
- *DX12*: lack of `VkBufferView` implementation.
- *Metal*: "api.buffer_view.access.suballocation.buffer_view_memory_test_complete" (missing R32Uint support).
2018-04-27 07:55:06 +10:00
2018-05-31 11:27:34 +10:00
Please visit [our wiki](https://github.com/gfx-rs/portability/wiki/Vulkan-CTS-status) for CTS hookup instructions. Once everything is set, you can generate the new results by calling `make cts` on Unix systems. When investigating a particular failure, it's handy to do `make cts debug=<test_name>`, which runs a single test under system debugger (gdb/lldb). For simply inspecting the log output, one can also do `make cts pick=<test_name>`.
2018-04-01 11:08:13 +10:00
2018-03-02 14:04:47 +11:00
## Check out
```
git clone --recursive https://github.com/gfx-rs/portability && cd portability
```
2017-12-08 08:29:14 +11:00
## Build
### Makefile (Unix)
```
make
```
### CMake (Window)
Build the Rust library (portability implementation):
```
2018-03-02 14:04:47 +11:00
cargo build --manifest-path libportability/Cargo.toml --features <vulkan|dx12|metal>
2017-12-08 08:29:14 +11:00
```
Build the native example:
```
mkdir build
cd build
cmake ..
cmake --build . --target native_test
```
## Running Samples
### LunarG (API-Samples)
After building `portability` as shown above, grab a copy from https://github.com/LunarG/VulkanSamples.
Manually override the [`VULKAN_LOADER`](https://github.com/LunarG/VulkanSamples/blob/master/API-Samples/CMakeLists.txt#L189-L194) variable and set it to the portability library.
```
set (VULKAN_LOADER "path/to/portability/library")
```
Then proceed with the normal build instructions.