Go to file
bors[bot] 5796b6b158 Merge #185
185: Fixes for gfx HEAD, update Cargo.lock, and add gl backend option r=kvark a=aloucks

Updated Cargo.lock and some minor changes to get portability compiling again using the latest gfx master. 

With these changes I was able to get `vulkaninfo` to run on a GPU-less VM using Mesa. 

```
$ RUST_BACKTRACE=1 VK_ICD_FILENAMES=portability-linux-debug.json vulkaninfo > ~/vulkaninfo.txt

==========
VULKANINFO
==========

Vulkan Instance Version: 1.1.106



Instance Extensions:
====================
Instance Extensions	count = 4
	VK_EXT_debug_report                 : extension revision  9
	VK_EXT_debug_utils                  : extension revision  1
	VK_KHR_get_physical_device_properties2: extension revision  1
	VK_KHR_surface                      : extension revision 25
Layers: count = 15
=======

...

Device Properties and Extensions :
==================================
GPU0
VkPhysicalDeviceProperties:
===========================
	apiVersion     = 0x400042  (1.0.66)
	driverVersion  = 1 (0x1)
	vendorID       = 0x0000
	deviceID       = 0x0000
	deviceType     = CPU
	deviceName     = Mesa OffScreen

...
```

Full output:

https://gist.github.com/aloucks/1a9acfb51adba4bb598ee6de0a213d82

It's probably a long way from being usable, but it would be nice to use portability for unit testing in CI jobs. 

See also: https://github.com/gfx-rs/gfx/pull/2791 for updates to the gl backend. 

Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2019-06-01 01:04:26 +00:00
bench Add new benchmarks, fix benching command line 2018-07-27 11:48:32 -04:00
conformance Conformance testing makefile command 2018-04-02 21:58:48 -04:00
etc vkQuake3 screenshot 2019-03-26 23:59:36 -04:00
libportability Fixes for gfx HEAD, update Cargo.lock, and add gl backend option 2019-06-01 00:16:51 +00:00
libportability-gfx Fixes for gfx HEAD, update Cargo.lock, and add gl backend option 2019-06-01 00:16:51 +00:00
libportability-icd Fixes for gfx HEAD, update Cargo.lock, and add gl backend option 2019-06-01 00:16:51 +00:00
modules Git modules, README, travis, etc 2017-09-06 22:04:18 -04:00
native Metal support, dispatch feature 2018-03-02 06:56:17 -05:00
.gitignore Use git describe to create commit-sha 2018-08-29 12:46:40 -06:00
.gitmodules Git modules, README, travis, etc 2017-09-06 22:04:18 -04:00
.travis.yml Change deploy to overwrite existing release files 2018-09-06 00:20:35 -06:00
appveyor.yml Update dependencies and add CI test for renderdoc 2018-05-31 23:30:02 +02:00
bors.toml Add appveyor CI support 2018-03-01 13:33:14 +01:00
Cargo.lock Fixes for gfx HEAD, update Cargo.lock, and add gl backend option 2019-06-01 00:16:51 +00:00
Cargo.toml Build with panic=abort 2018-08-03 23:48:52 -04:00
CMakeLists.txt Update to latest gfx master 2018-01-02 00:47:47 +01:00
LICENSE Initial commit 2017-09-06 21:53:52 -04:00
Makefile gfx update, copyless handles, signposts 2019-03-19 10:04:07 -04:00
README.md vkQuake3 screenshot 2019-03-26 23:59:36 -04:00

gfx-portability

Build Status Gitter

This is a prototype library implementing Vulkan Portability Initiative using gfx-hal. See gfx-rs meta issue for backend limitations and further details.

Showcase

Dota2:

Dota2

Quake

VkQuake VkQuake3

RPCS3:

RPCS3-cube RPCS3-scogger

Dolphin:

Dolphin-sb Dolphin-pm Dolphin-mk Dolphin-md

Instructions

Despite the fact it's written in Rust, the produced binaries have standard lining interface compatible with any program (written in the language of your choice). There are multiple ways to link to gfx-portability.

Dynamic linking

Typically, you'd need to create a symbolic link with a name that a target application expects, e.g. libvulkan.dylib -> libportability.dylib.

Check out and build:

git clone --recursive https://github.com/gfx-rs/portability && cd portability
cargo build --manifest-path libportability/Cargo.toml --features <vulkan|dx12|metal>

ICD provider

gfx-portability can be used with Vulkan loader like any other Vulkan driver. In order to use it this way, you need to build libportability-icd and point to it from an ICD json file:

VK_ICD_FILENAMES=portability/libportability-icd/portability-macos-debug.json <some_vulkan_app>

Static linking

For C, you'd need to add crate-type = ["cdylib"] to libportability-gfx/Cargo.toml and build it with the backend of your choice. Note: features of this library are fully-qualified crate names, e.g. features gfx-backend-metal. For rust, just point the cargo dependency to libportability-gfx.

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.

Vulkan CTS coverage

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>.