fbf62659f4
98: Map present modes and more r=kvark a=grovesNL Present modes: - Update to latest gfx - Expose relevant present modes in `gfxGetPhysicalDeviceSurfacePresentModesKHR` - Map present modes to HAL and back Instance/device creation (with these changes we pass 10/13 of `dEQP-VK.api.device_init`, the other 3 are not supported for now): - Handle null instance/device and whether required extensions (although the check is not comprehensive for now) have been enabled in `gfxGet{Instance|Device}ProcAddr` – this fixes `dEQP-VK.api.version_check.entry_points` - Check API version to fix `dEQP-VK.api.device_init.create_instance_invalid_api_version` - Verify that the provided instance/device extension names are valid – fixes a couple more tests in `dEQP-VK.api.device_init` - Verify that the requested features are supported - fixes `dEQP-VK.api.device_init.create_device_unsupported_features` Co-authored-by: Joshua Groves <josh@joshgroves.com> |
||
---|---|---|
conformance | ||
libportability | ||
libportability-gfx | ||
libportability-icd | ||
modules | ||
native | ||
.gitignore | ||
.gitmodules | ||
.lldbinit | ||
.travis.yml | ||
appveyor.yml | ||
bors.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CMakeLists.txt | ||
LICENSE | ||
Makefile | ||
README.md |
gfx-portability
This is a prototype library implementing Vulkan Portability Initiative using gfx-rs low-level core. See gfx-rs meta issue for backend limitations and further details.
Vulkan CTS coverage
gfx-rs Backend | Total cases | Pass | Fail | Quality warning | Compatibility warning | Not supported | Resource error | Internal error | Timeout | Crash |
---|---|---|---|---|---|---|---|---|---|---|
Vulkan | 7759 | 2155 | 131 | 34 | 0 | 5439 | 0 | 0 | 0 | 0 |
DX12 | 3576 | 1258 | 70 | 0 | 0 | 2248 | 0 | 0 | 0 | 0 |
Metal | 7687 | 2072 | 112 | 39 | 0 | 5464 | 0 | 0 | 0 | 0 |
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).
Please visit our wiki 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>
.
Check out
git clone --recursive https://github.com/gfx-rs/portability && cd portability
Build
Makefile (Unix)
make
CMake (Window)
Build the Rust library (portability implementation):
cargo build --manifest-path libportability/Cargo.toml --features <vulkan|dx12|metal>
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
variable and set it to the portability library.
set (VULKAN_LOADER "path/to/portability/library")
Then proceed with the normal build instructions.