mirror of
https://github.com/italicsjenga/portability.git
synced 2024-11-22 15:01:31 +11:00
Basic Vulkan header hookup and automation
This commit is contained in:
parent
878a12c594
commit
7f30e22a05
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
/target/
|
||||
native/test
|
||||
native/test.o
|
||||
native/vulkan
|
||||
src/original.rs
|
||||
**/*.rs.bk
|
||||
Cargo.lock
|
12
Cargo.toml
Normal file
12
Cargo.toml
Normal file
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "portability"
|
||||
version = "0.1.0"
|
||||
authors = ["Dzmitry Malyshau <kvark@mozilla.com>"]
|
||||
|
||||
[lib]
|
||||
name = "vulkan"
|
||||
crate-type = ["dylib"]
|
||||
|
||||
[dependencies]
|
||||
gfx_core = { path = "../gfx/src/core" }
|
||||
gfx_backend_vulkan = { path = "../gfx/src/backend/vulkan" }
|
23
Makefile
Normal file
23
Makefile
Normal file
|
@ -0,0 +1,23 @@
|
|||
HEADER=native/vulkan/vulkan.h
|
||||
BINDING=src/original.rs
|
||||
TARGET=native/test
|
||||
OBJECTS=native/test.o
|
||||
OUTPUT_DIR=target/debug
|
||||
OUTPUT=${OUTPUT_DIR}/libvulkan.a
|
||||
|
||||
all: ${TARGET}
|
||||
|
||||
${BINDING}: ${HEADER}
|
||||
bindgen --no-layout-tests --rustfmt-bindings ${HEADER} -o ${BINDING}
|
||||
|
||||
portability: ${BINDING}
|
||||
cargo build
|
||||
|
||||
${TARGET}: portability ${OBJECTS}
|
||||
gcc -o ${TARGET} -L${OUTPUT_DIR} -lvulkan ${OBJECTS}
|
||||
|
||||
run: ${TARGET}
|
||||
${TARGET}
|
||||
|
||||
clean:
|
||||
rm -f ${OBJECTS} ${TARGET} ${BINDING}
|
31
native/test.c
Normal file
31
native/test.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
#include "vulkan/vulkan.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
VkInstanceCreateInfo inst_info = {};
|
||||
inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
||||
inst_info.pNext = NULL;
|
||||
inst_info.flags = 0;
|
||||
inst_info.pApplicationInfo = NULL;
|
||||
inst_info.enabledExtensionCount = 0;
|
||||
inst_info.ppEnabledExtensionNames = NULL;
|
||||
inst_info.enabledLayerCount = 0;
|
||||
inst_info.ppEnabledLayerNames = NULL;
|
||||
|
||||
VkInstance inst;
|
||||
VkResult res;
|
||||
|
||||
res = vkCreateInstance(&inst_info, NULL, &inst);
|
||||
if (res == VK_ERROR_INCOMPATIBLE_DRIVER) {
|
||||
printf("cannot find a compatible Vulkan ICD\n");
|
||||
exit(-1);
|
||||
} else if (res) {
|
||||
printf("unknown error\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
vkDestroyInstance(inst, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
7815
src/lib.rs
Normal file
7815
src/lib.rs
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue