mirror of
https://github.com/italicsjenga/portability.git
synced 2024-11-22 07:01:29 +11:00
Switch CI to github actions
This commit is contained in:
parent
8dcbf11d89
commit
cbaf5ba24e
57
.github/workflows/check.yml
vendored
Normal file
57
.github/workflows/check.yml
vendored
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
name: Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches-ignore: [staging.tmp]
|
||||||
|
pull_request:
|
||||||
|
branches-ignore: [staging.tmp]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ios_build:
|
||||||
|
name: iOS Stable
|
||||||
|
runs-on: macos-10.15
|
||||||
|
env:
|
||||||
|
TARGET: aarch64-apple-ios
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- run: rustup target add ${{ env.TARGET }}
|
||||||
|
- run: make check-target
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: ${{ matrix.name }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-18.04, macos-10.15, windows-2019]
|
||||||
|
channel: [stable, nightly]
|
||||||
|
exclude:
|
||||||
|
- os: ubuntu-18.04
|
||||||
|
channel: stable
|
||||||
|
- os: macos-10.15
|
||||||
|
channel: nightly
|
||||||
|
- os: windows-2019
|
||||||
|
channel: nightly
|
||||||
|
include:
|
||||||
|
- name: Ubuntu Nightly
|
||||||
|
os: ubuntu-18.04
|
||||||
|
channel: nightly
|
||||||
|
- name: MacOS Stable
|
||||||
|
os: macos-10.15
|
||||||
|
channel: stable
|
||||||
|
- name: Windows Stable
|
||||||
|
os: windows-2019
|
||||||
|
channel: stable
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- if: matrix.channel == 'nightly'
|
||||||
|
name: Install latest nightly
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly
|
||||||
|
override: true
|
||||||
|
- if: matrix.os == 'windows-2019'
|
||||||
|
name: Install make
|
||||||
|
run: choco install make
|
||||||
|
- run: make all
|
37
.github/workflows/release.yml
vendored
Normal file
37
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
name: Release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: ${{ matrix.name }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [macos-10.15, windows-2019]
|
||||||
|
include:
|
||||||
|
- name: MacOS Stable
|
||||||
|
os: macos-10.15
|
||||||
|
key: macos
|
||||||
|
- name: Windows Stable
|
||||||
|
os: windows-2019
|
||||||
|
key: windows
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- if: matrix.os == 'windows-2019'
|
||||||
|
name: Install make
|
||||||
|
run: choco install make
|
||||||
|
- run: make gfx-portability.zip
|
||||||
|
- name: Upload builds
|
||||||
|
id: upload-release-asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ./gfx-portability.zip
|
||||||
|
asset_name: gfx-portability-${{ matrix.key }}-${{ github.event.release.tag_name }}.zip
|
||||||
|
asset_content_type: application/zip
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
||||||
[submodule "modules/vulkan-docs"]
|
|
||||||
path = modules/vulkan-docs
|
|
||||||
url = https://github.com/KhronosGroup/Vulkan-Docs
|
|
69
.travis.yml
69
.travis.yml
|
@ -1,69 +0,0 @@
|
||||||
sudo: false
|
|
||||||
language: rust
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: linux
|
|
||||||
rust: stable
|
|
||||||
compiler: gcc
|
|
||||||
- os: linux
|
|
||||||
rust: nightly
|
|
||||||
compiler: gcc
|
|
||||||
- os: osx
|
|
||||||
rust: stable
|
|
||||||
osx_image: xcode9
|
|
||||||
compiler: clang
|
|
||||||
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- staging.tmp
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
# Do not run bors builds against the nightly compiler.
|
|
||||||
# We want to find out about nightly bugs, so they're done in master, but we don't block on them.
|
|
||||||
- if [[ $TRAVIS_RUST_VERSION == "nightly" && $TRAVIS_BRANCH == "staging" ]]; then exit; fi
|
|
||||||
- if [[ $TRAVIS_OS_NAME == "osx" ]]; then brew update && brew install sdl2 && brew upgrade cmake && export CXX=clang++ && export MACOSX_DEPLOYMENT_TARGET=10.9; fi
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
# install a newer cmake since at this time Travis only has version 2.8.7
|
|
||||||
- george-edison55-precise-backports
|
|
||||||
- llvm-toolchain-precise-3.8
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
#- ppa:xorg-edgers/ppa # for libosmesa6-dev
|
|
||||||
packages:
|
|
||||||
- xdotool
|
|
||||||
- cmake
|
|
||||||
- cmake-data
|
|
||||||
- libxxf86vm-dev
|
|
||||||
- libxinerama-dev
|
|
||||||
- libxinerama1
|
|
||||||
- libxcursor-dev
|
|
||||||
- libxcursor1
|
|
||||||
- libglfw-dev
|
|
||||||
- libosmesa6-dev
|
|
||||||
- libxi-dev
|
|
||||||
- libxrandr-dev
|
|
||||||
- g++-5
|
|
||||||
- gcc
|
|
||||||
|
|
||||||
script:
|
|
||||||
- if [[ $TRAVIS_RUST_VERSION == "nightly" && $TRAVIS_BRANCH == "staging" ]]; then exit; fi
|
|
||||||
- export PATH=$PATH:$HOME/deps/bin
|
|
||||||
- make
|
|
||||||
- if [[ $TRAVIS_RUST_VERSION == "nightly" ]]; then make debug release; fi
|
|
||||||
- if [[ $TRAVIS_RUST_VERSION == "stable" && $TRAVIS_BRANCH == $TRAVIS_TAG ]]; then make package; fi
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
provider: releases
|
|
||||||
api_key:
|
|
||||||
secure: kS8vjHOnLEknb2qxf2dPxMW8S5KcpjSkSgoi23WXiX3DZ2v8DIJMxVLanJhD3mbr1oI1NGXQHrTeeA/HBEEJcOVzlQo38MgNo/Jyt1k4jLRyCEDL0LjO+M1zAQGoEDWlyyjeu+Alw3SFKqGoZeuYDZ/mxUpEapFMD++8w4IjON2fI6iNumcIMeAg3Ns6Y4wHYQPzfIQQf5svI9dh1lf7PhlFB/btONBPi6rXxU/UwCnHBoOPydl5OwjggaUAjCJSf8i/FDLWt5XpvA2UsML2AbcFNuwFhNGhf6ArwEsqgcMCGL6jACetvI/l3ZL96h5dsgzRLW0ruvnvpEm3y3aw9wCjEAcnQMZCBPlIfOpj5MH/guh526QWCVQ3rwRUJOhua9T2yvwda3ICYspyVShzlbwscA9yLwvsuO+6Hl+upuE2IPfLvS6QpnXVlIWHe/3HqOoQggDdsWvnZhhGNKASKsi9vNgTvec/1iX846/KGcV3nYeHIWFrvP0IgWtEqQrgcWj9w6X7LDdaTFmrkKwKnNn4ClLQYPnlWQS71iX0gwRhONGaSAEfFca6vwVTa8AGSQUEHphe5lT7LtAy6UhlbjZNuKvUR+pn+l0EoWlZzm+uxKMtGR+mG9h6My+GA3hCWWtX/Xc94TvuJ1cg+uRu48+rD21vv3cr2fEVDRq7pGg=
|
|
||||||
file_glob: true
|
|
||||||
file: gfx-portability-*.zip
|
|
||||||
skip_cleanup: true
|
|
||||||
overwrite: true
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
condition: $TRAVIS_RUST_VERSION == "stable" && $TRAVIS_BRANCH == $TRAVIS_TAG
|
|
||||||
skip_cleanup: true
|
|
42
Makefile
42
Makefile
|
@ -1,19 +1,19 @@
|
||||||
VULKAN_DIR=modules/vulkan-docs/src
|
|
||||||
CTS_DIR=../VK-GL-CTS
|
CTS_DIR=../VK-GL-CTS
|
||||||
CHERRY_DIR=../cherry
|
CHERRY_DIR=../cherry
|
||||||
BINDING=target/vulkan.rs
|
BINDING=target/vulkan.rs
|
||||||
NATIVE_DIR=target/native
|
NATIVE_DIR=target/native
|
||||||
NATIVE_TARGET=$(NATIVE_DIR)/test
|
NATIVE_TARGET=$(NATIVE_DIR)/test
|
||||||
NATIVE_OBJECTS=$(NATIVE_DIR)/test.o $(NATIVE_DIR)/window.o
|
NATIVE_OBJECTS=$(NATIVE_DIR)/test.o $(NATIVE_DIR)/window.o
|
||||||
LIB_EXTENSION=
|
LIB_FILE_NAME=
|
||||||
|
LIB_VULKAN_NAME=
|
||||||
TEST_LIST=$(CURDIR)/conformance/deqp.txt
|
TEST_LIST=$(CURDIR)/conformance/deqp.txt
|
||||||
TEST_LIST_SOURCE=$(CTS_DIR)/external/vulkancts/mustpass/1.0.2/vk-default.txt
|
TEST_LIST_SOURCE=$(CTS_DIR)/external/vulkancts/mustpass/1.0.2/vk-default.txt
|
||||||
DEQP_DIR=$(CTS_DIR)/build/external/vulkancts/modules/vulkan/
|
DEQP_DIR=$(CTS_DIR)/build/external/vulkancts/modules/vulkan/
|
||||||
DEQP=cd $(DEQP_DIR) && RUST_LOG=debug LD_LIBRARY_PATH=$(FULL_LIBRARY_PATH) ./deqp-vk
|
DEQP=cd $(DEQP_DIR) && RUST_LOG=debug LD_LIBRARY_PATH=$(FULL_LIBRARY_PATH) ./deqp-vk
|
||||||
CLINK_ARGS=
|
CLINK_ARGS=
|
||||||
GIT_TAG=$(shell git describe --abbrev=0 --tags)
|
|
||||||
GIT_TAG_FULL=$(shell git describe --tags)
|
GIT_TAG_FULL=$(shell git describe --tags)
|
||||||
OS_NAME=
|
OS_NAME=
|
||||||
|
ZIP_COMMAND=
|
||||||
|
|
||||||
DOTA_DIR=../dota2/bin/osx64
|
DOTA_DIR=../dota2/bin/osx64
|
||||||
DOTA_EXE=$(DOTA_DIR)/dota2.app/Contents/MacOS/dota2
|
DOTA_EXE=$(DOTA_DIR)/dota2.app/Contents/MacOS/dota2
|
||||||
|
@ -29,38 +29,43 @@ DEBUGGER=rust-gdb --args
|
||||||
GFX_METAL_RECORDING:=immediate
|
GFX_METAL_RECORDING:=immediate
|
||||||
|
|
||||||
CC=g++
|
CC=g++
|
||||||
CFLAGS=-std=c++11 -ggdb -O0 -I$(VULKAN_DIR)
|
CFLAGS=-std=c++11 -ggdb -O0 -Iheaders
|
||||||
DEPS=
|
DEPS=
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
BACKEND=dx12
|
BACKEND=dx12
|
||||||
LIB_EXTENSION=dll
|
LIB_FILE_NAME=portability.dll
|
||||||
|
LIB_VULKAN_NAME=vulkan.dll
|
||||||
OS_NAME=windows
|
OS_NAME=windows
|
||||||
|
ZIP_COMMAND=7z a -tzip
|
||||||
else
|
else
|
||||||
UNAME_S:=$(shell uname -s)
|
UNAME_S:=$(shell uname -s)
|
||||||
|
ZIP_COMMAND=zip
|
||||||
ifeq ($(UNAME_S),Linux)
|
ifeq ($(UNAME_S),Linux)
|
||||||
LDFLAGS=-lpthread -ldl -lm -lX11 -lxcb
|
LDFLAGS=-lpthread -ldl -lm -lX11 -lxcb
|
||||||
BACKEND=vulkan
|
BACKEND=vulkan
|
||||||
LIB_EXTENSION=so
|
LIB_FILE_NAME=libportability.so
|
||||||
|
LIB_VULKAN_NAME=libvulkan.so
|
||||||
OS_NAME=linux
|
OS_NAME=linux
|
||||||
endif
|
endif
|
||||||
ifeq ($(UNAME_S),Darwin)
|
ifeq ($(UNAME_S),Darwin)
|
||||||
LDFLAGS=-lpthread -ldl -lm
|
LDFLAGS=-lpthread -ldl -lm
|
||||||
BACKEND=metal
|
BACKEND=metal
|
||||||
DEBUGGER=rust-lldb --
|
DEBUGGER=rust-lldb --
|
||||||
LIB_EXTENSION=dylib
|
LIB_FILE_NAME=libportability.dylib
|
||||||
|
LIB_VULKAN_NAME=libvulkan.dylib
|
||||||
CLINK_ARGS=-- -Clink-arg="-current_version 1.0.0" -Clink-arg="-compatibility_version 1.0.0"
|
CLINK_ARGS=-- -Clink-arg="-current_version 1.0.0" -Clink-arg="-compatibility_version 1.0.0"
|
||||||
OS_NAME=macos
|
OS_NAME=macos
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
FULL_LIBRARY_PATH=$(CURDIR)/target/debug
|
FULL_LIBRARY_PATH=$(CURDIR)/target/debug
|
||||||
LIBRARY=target/debug/libportability.$(LIB_EXTENSION)
|
LIBRARY=target/debug/$(LIB_FILE_NAME)
|
||||||
LIBRARY_FAST=target/release/libportability.$(LIB_EXTENSION)
|
LIBRARY_FAST=target/release/$(LIB_FILE_NAME)
|
||||||
|
|
||||||
.PHONY: all dummy rebuild debug release version-debug version-release binding run-native cts clean cherry dota-debug dota-release dota-orig dota-bench-gfx dota-bench-orig dota-bench-gl package memcpy-report
|
.PHONY: all dummy check-target rebuild debug release version-debug version-release binding run-native cts clean cherry dota-debug dota-release dota-orig dota-bench-gfx dota-bench-orig dota-bench-gl memcpy-report
|
||||||
|
|
||||||
all: $(NATIVE_TARGET)
|
all: $(NATIVE_TARGET)
|
||||||
|
|
||||||
|
@ -80,6 +85,9 @@ version-debug:
|
||||||
version-release:
|
version-release:
|
||||||
cargo rustc --release --manifest-path libportability/Cargo.toml --features $(BACKEND) $(CLINK_ARGS)
|
cargo rustc --release --manifest-path libportability/Cargo.toml --features $(BACKEND) $(CLINK_ARGS)
|
||||||
|
|
||||||
|
check-target:
|
||||||
|
cargo check --manifest-path libportability/Cargo.toml --target $(TARGET) --features $(BACKEND)
|
||||||
|
cargo check --manifest-path libportability-icd/Cargo.toml --target $(TARGET) --features $(BACKEND),portability-gfx/env_logger
|
||||||
|
|
||||||
dota-debug: version-debug $(DOTA_EXE)
|
dota-debug: version-debug $(DOTA_EXE)
|
||||||
DYLD_LIBRARY_PATH=$(CURDIR)/target/debug:$(CURDIR)/$(DOTA_DIR) $(DOTA_EXE) $(DOTA_PARAMS)
|
DYLD_LIBRARY_PATH=$(CURDIR)/target/debug:$(CURDIR)/$(DOTA_DIR) $(DOTA_EXE) $(DOTA_PARAMS)
|
||||||
|
@ -116,8 +124,8 @@ endif
|
||||||
|
|
||||||
binding: $(BINDING)
|
binding: $(BINDING)
|
||||||
|
|
||||||
$(BINDING): $(VULKAN_DIR)/vulkan/*.h
|
$(BINDING): headers/vulkan/*.h
|
||||||
bindgen --no-layout-tests --rustfmt-bindings $(VULKAN_DIR)/vulkan/vulkan.h -o $(BINDING)
|
bindgen --no-layout-tests --rustfmt-bindings headers/vulkan/vulkan.h -o $(BINDING)
|
||||||
|
|
||||||
$(LIBRARY): dummy
|
$(LIBRARY): dummy
|
||||||
cargo build --manifest-path libportability/Cargo.toml --features $(BACKEND)
|
cargo build --manifest-path libportability/Cargo.toml --features $(BACKEND)
|
||||||
|
@ -163,16 +171,16 @@ clean:
|
||||||
rm -f $(NATIVE_OBJECTS) $(NATIVE_TARGET) $(BINDING)
|
rm -f $(NATIVE_OBJECTS) $(NATIVE_TARGET) $(BINDING)
|
||||||
cargo clean
|
cargo clean
|
||||||
|
|
||||||
package: version-debug version-release
|
gfx-portability.zip: version-debug version-release
|
||||||
cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND)
|
cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND)
|
||||||
cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND) --release
|
cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND) --release
|
||||||
echo "$(GIT_TAG_FULL)" > commit-sha
|
echo "$(GIT_TAG_FULL)" > commit-sha
|
||||||
zip gfx-portability-$(OS_NAME)-$(GIT_TAG).zip target/*/libportability*.$(LIB_EXTENSION) libportability-icd/portability-$(OS_NAME)-*.json commit-sha
|
$(ZIP_COMMAND) gfx-portability.zip target/*/$(LIB_FILE_NAME) libportability-icd/portability-$(OS_NAME)-*.json commit-sha
|
||||||
|
|
||||||
target/debug/libvulkan.$(LIB_EXTENSION):
|
target/debug/$(LIB_VULKAN_NAME):
|
||||||
cd target/debug && ln -sf libportability.$(LIB_EXTENSION) libvulkan.$(LIB_EXTENSION)
|
cd target/debug && ln -sf $(LIB_FILE_NAME) $(LIB_VULKAN_NAME)
|
||||||
|
|
||||||
cherry: $(LIBRARY) target/debug/libvulkan.$(LIB_EXTENSION)
|
cherry: $(LIBRARY) $(LIB_VULKAN_NAME)
|
||||||
cd $(CHERRY_DIR) && rm -f Cherry.db && RUST_LOG=warn LD_LIBRARY_PATH=$(FULL_LIBRARY_PATH) go run server.go
|
cd $(CHERRY_DIR) && rm -f Cherry.db && RUST_LOG=warn LD_LIBRARY_PATH=$(FULL_LIBRARY_PATH) go run server.go
|
||||||
|
|
||||||
memcpy-report:
|
memcpy-report:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
## gfx-portability
|
## gfx-portability
|
||||||
[![Build Status](https://travis-ci.org/gfx-rs/portability.svg?branch=master)](https://travis-ci.org/gfx-rs/portability)
|
[![Build Status](https://github.com/gfx-rs/portability/workflows/check/badge.svg?branch=master)](https://github.com/gfx-rs/portability/actions)
|
||||||
[![Gitter](https://badges.gitter.im/gfx-rs/portability.svg)](https://gitter.im/gfx-rs/portability)
|
[![Matrix](https://img.shields.io/badge/Matrix-%23gfx%3Amatrix.org-blueviolet.svg)](https://matrix.to/#/#gfx:matrix.org)
|
||||||
|
|
||||||
This is a prototype library implementing [Vulkan Portability Initiative](https://www.khronos.org/blog/khronos-announces-the-vulkan-portability-initiative) using [gfx-hal](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.
|
This is a prototype library implementing [Vulkan Portability Initiative](https://www.khronos.org/blog/khronos-announces-the-vulkan-portability-initiative) using [gfx-hal](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.
|
||||||
|
|
||||||
|
|
23
appveyor.yml
23
appveyor.yml
|
@ -1,23 +0,0 @@
|
||||||
skip_branch_with_pr: true
|
|
||||||
|
|
||||||
environment:
|
|
||||||
global:
|
|
||||||
PATH: '%PATH%;%USERPROFILE%\.cargo\bin'
|
|
||||||
RUST_BACKTRACE: full
|
|
||||||
matrix:
|
|
||||||
- CHANNEL: stable
|
|
||||||
TARGET: x86_64-pc-windows-msvc
|
|
||||||
- CHANNEL: nightly
|
|
||||||
TARGET: x86_64-pc-windows-msvc
|
|
||||||
|
|
||||||
install:
|
|
||||||
- curl -sSf -o rustup-init.exe https://win.rustup.rs
|
|
||||||
- rustup-init -yv --default-toolchain %CHANNEL% --default-host %TARGET%
|
|
||||||
- rustc -vV
|
|
||||||
- cargo -vV
|
|
||||||
|
|
||||||
build: false
|
|
||||||
test_script:
|
|
||||||
- cargo build --manifest-path libportability/Cargo.toml --features vulkan
|
|
||||||
- cargo build --manifest-path libportability/Cargo.toml --features dx12
|
|
||||||
- cargo build --manifest-path libportability-gfx/Cargo.toml --features "gfx-backend-dx12 renderdoc"
|
|
|
@ -1,4 +1,5 @@
|
||||||
status = [
|
status = [
|
||||||
"continuous-integration/travis-ci/push",
|
"Ubuntu Nightly",
|
||||||
"continuous-integration/appveyor/branch"
|
"MacOS Stable",
|
||||||
|
"Windows Stable",
|
||||||
]
|
]
|
||||||
|
|
170
headers/vulkan/vk_icd.h
Normal file
170
headers/vulkan/vk_icd.h
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
//
|
||||||
|
// File: vk_icd.h
|
||||||
|
//
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||||
|
* Copyright (c) 2015-2016 Valve Corporation
|
||||||
|
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VKICD_H
|
||||||
|
#define VKICD_H
|
||||||
|
|
||||||
|
#include "vulkan.h"
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
// Loader-ICD version negotiation API. Versions add the following features:
|
||||||
|
// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr
|
||||||
|
// or vk_icdNegotiateLoaderICDInterfaceVersion.
|
||||||
|
// Version 1 - Add support for vk_icdGetInstanceProcAddr.
|
||||||
|
// Version 2 - Add Loader/ICD Interface version negotiation
|
||||||
|
// via vk_icdNegotiateLoaderICDInterfaceVersion.
|
||||||
|
// Version 3 - Add ICD creation/destruction of KHR_surface objects.
|
||||||
|
// Version 4 - Add unknown physical device extension qyering via
|
||||||
|
// vk_icdGetPhysicalDeviceProcAddr.
|
||||||
|
// Version 5 - Tells ICDs that the loader is now paying attention to the
|
||||||
|
// application version of Vulkan passed into the ApplicationInfo
|
||||||
|
// structure during vkCreateInstance. This will tell the ICD
|
||||||
|
// that if the loader is older, it should automatically fail a
|
||||||
|
// call for any API version > 1.0. Otherwise, the loader will
|
||||||
|
// manually determine if it can support the expected version.
|
||||||
|
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 5
|
||||||
|
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
|
||||||
|
#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4
|
||||||
|
typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
||||||
|
|
||||||
|
// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this
|
||||||
|
// file directly, it won't be found.
|
||||||
|
#ifndef PFN_GetPhysicalDeviceProcAddr
|
||||||
|
typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The ICD must reserve space for a pointer for the loader's dispatch
|
||||||
|
* table, at the start of <each object>.
|
||||||
|
* The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ICD_LOADER_MAGIC 0x01CDC0DE
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
uintptr_t loaderMagic;
|
||||||
|
void *loaderData;
|
||||||
|
} VK_LOADER_DATA;
|
||||||
|
|
||||||
|
static inline void set_loader_magic_value(void *pNewObject) {
|
||||||
|
VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||||
|
loader_info->loaderMagic = ICD_LOADER_MAGIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool valid_loader_magic_value(void *pNewObject) {
|
||||||
|
const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||||
|
return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that
|
||||||
|
* contains the platform-specific connection and surface information.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
VK_ICD_WSI_PLATFORM_MIR,
|
||||||
|
VK_ICD_WSI_PLATFORM_WAYLAND,
|
||||||
|
VK_ICD_WSI_PLATFORM_WIN32,
|
||||||
|
VK_ICD_WSI_PLATFORM_XCB,
|
||||||
|
VK_ICD_WSI_PLATFORM_XLIB,
|
||||||
|
VK_ICD_WSI_PLATFORM_ANDROID,
|
||||||
|
VK_ICD_WSI_PLATFORM_MACOS,
|
||||||
|
VK_ICD_WSI_PLATFORM_IOS,
|
||||||
|
VK_ICD_WSI_PLATFORM_DISPLAY
|
||||||
|
} VkIcdWsiPlatform;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VkIcdWsiPlatform platform;
|
||||||
|
} VkIcdSurfaceBase;
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
MirConnection *connection;
|
||||||
|
MirSurface *mirSurface;
|
||||||
|
} VkIcdSurfaceMir;
|
||||||
|
#endif // VK_USE_PLATFORM_MIR_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
struct wl_display *display;
|
||||||
|
struct wl_surface *surface;
|
||||||
|
} VkIcdSurfaceWayland;
|
||||||
|
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
HINSTANCE hinstance;
|
||||||
|
HWND hwnd;
|
||||||
|
} VkIcdSurfaceWin32;
|
||||||
|
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
xcb_connection_t *connection;
|
||||||
|
xcb_window_t window;
|
||||||
|
} VkIcdSurfaceXcb;
|
||||||
|
#endif // VK_USE_PLATFORM_XCB_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
Display *dpy;
|
||||||
|
Window window;
|
||||||
|
} VkIcdSurfaceXlib;
|
||||||
|
#endif // VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
struct ANativeWindow *window;
|
||||||
|
} VkIcdSurfaceAndroid;
|
||||||
|
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
const void *pView;
|
||||||
|
} VkIcdSurfaceMacOS;
|
||||||
|
#endif // VK_USE_PLATFORM_MACOS_MVK
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
const void *pView;
|
||||||
|
} VkIcdSurfaceIOS;
|
||||||
|
#endif // VK_USE_PLATFORM_IOS_MVK
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
VkDisplayModeKHR displayMode;
|
||||||
|
uint32_t planeIndex;
|
||||||
|
uint32_t planeStackIndex;
|
||||||
|
VkSurfaceTransformFlagBitsKHR transform;
|
||||||
|
float globalAlpha;
|
||||||
|
VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
|
||||||
|
VkExtent2D imageExtent;
|
||||||
|
} VkIcdSurfaceDisplay;
|
||||||
|
|
||||||
|
#endif // VKICD_H
|
195
headers/vulkan/vk_layer.h
Normal file
195
headers/vulkan/vk_layer.h
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
//
|
||||||
|
// File: vk_layer.h
|
||||||
|
//
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||||
|
* Copyright (c) 2015-2017 Valve Corporation
|
||||||
|
* Copyright (c) 2015-2017 LunarG, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Need to define dispatch table
|
||||||
|
* Core struct can then have ptr to dispatch table at the top
|
||||||
|
* Along with object ptrs for current and next OBJ
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vulkan.h"
|
||||||
|
#if defined(__GNUC__) && __GNUC__ >= 4
|
||||||
|
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
|
||||||
|
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
|
||||||
|
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
|
||||||
|
#else
|
||||||
|
#define VK_LAYER_EXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MAX_NUM_UNKNOWN_EXTS 250
|
||||||
|
|
||||||
|
// Loader-Layer version negotiation API. Versions add the following features:
|
||||||
|
// Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr
|
||||||
|
// or vk_icdNegotiateLoaderLayerInterfaceVersion.
|
||||||
|
// Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and
|
||||||
|
// vk_icdNegotiateLoaderLayerInterfaceVersion.
|
||||||
|
#define CURRENT_LOADER_LAYER_INTERFACE_VERSION 2
|
||||||
|
#define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION 1
|
||||||
|
|
||||||
|
#define VK_CURRENT_CHAIN_VERSION 1
|
||||||
|
|
||||||
|
// Typedef for use in the interfaces below
|
||||||
|
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
||||||
|
|
||||||
|
// Version negotiation values
|
||||||
|
typedef enum VkNegotiateLayerStructType {
|
||||||
|
LAYER_NEGOTIATE_UNINTIALIZED = 0,
|
||||||
|
LAYER_NEGOTIATE_INTERFACE_STRUCT = 1,
|
||||||
|
} VkNegotiateLayerStructType;
|
||||||
|
|
||||||
|
// Version negotiation structures
|
||||||
|
typedef struct VkNegotiateLayerInterface {
|
||||||
|
VkNegotiateLayerStructType sType;
|
||||||
|
void *pNext;
|
||||||
|
uint32_t loaderLayerInterfaceVersion;
|
||||||
|
PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr;
|
||||||
|
PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr;
|
||||||
|
PFN_GetPhysicalDeviceProcAddr pfnGetPhysicalDeviceProcAddr;
|
||||||
|
} VkNegotiateLayerInterface;
|
||||||
|
|
||||||
|
// Version negotiation functions
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderLayerInterfaceVersion)(VkNegotiateLayerInterface *pVersionStruct);
|
||||||
|
|
||||||
|
// Function prototype for unknown physical device extension command
|
||||||
|
typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device);
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
// CreateInstance and CreateDevice support structures
|
||||||
|
|
||||||
|
/* Sub type of structure for instance and device loader ext of CreateInfo.
|
||||||
|
* When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
||||||
|
* or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
|
||||||
|
* then VkLayerFunction indicates struct type pointed to by pNext
|
||||||
|
*/
|
||||||
|
typedef enum VkLayerFunction_ {
|
||||||
|
VK_LAYER_LINK_INFO = 0,
|
||||||
|
VK_LOADER_DATA_CALLBACK = 1
|
||||||
|
} VkLayerFunction;
|
||||||
|
|
||||||
|
typedef struct VkLayerInstanceLink_ {
|
||||||
|
struct VkLayerInstanceLink_ *pNext;
|
||||||
|
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||||
|
PFN_GetPhysicalDeviceProcAddr pfnNextGetPhysicalDeviceProcAddr;
|
||||||
|
} VkLayerInstanceLink;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When creating the device chain the loader needs to pass
|
||||||
|
* down information about it's device structure needed at
|
||||||
|
* the end of the chain. Passing the data via the
|
||||||
|
* VkLayerDeviceInfo avoids issues with finding the
|
||||||
|
* exact instance being used.
|
||||||
|
*/
|
||||||
|
typedef struct VkLayerDeviceInfo_ {
|
||||||
|
void *device_info;
|
||||||
|
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||||
|
} VkLayerDeviceInfo;
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance,
|
||||||
|
void *object);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device,
|
||||||
|
void *object);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
||||||
|
const void *pNext;
|
||||||
|
VkLayerFunction function;
|
||||||
|
union {
|
||||||
|
VkLayerInstanceLink *pLayerInfo;
|
||||||
|
PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData;
|
||||||
|
} u;
|
||||||
|
} VkLayerInstanceCreateInfo;
|
||||||
|
|
||||||
|
typedef struct VkLayerDeviceLink_ {
|
||||||
|
struct VkLayerDeviceLink_ *pNext;
|
||||||
|
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||||
|
PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr;
|
||||||
|
} VkLayerDeviceLink;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
|
||||||
|
const void *pNext;
|
||||||
|
VkLayerFunction function;
|
||||||
|
union {
|
||||||
|
VkLayerDeviceLink *pLayerInfo;
|
||||||
|
PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData;
|
||||||
|
} u;
|
||||||
|
} VkLayerDeviceCreateInfo;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct);
|
||||||
|
|
||||||
|
typedef enum VkChainType {
|
||||||
|
VK_CHAIN_TYPE_UNKNOWN = 0,
|
||||||
|
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES = 1,
|
||||||
|
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_LAYER_PROPERTIES = 2,
|
||||||
|
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_VERSION = 3,
|
||||||
|
} VkChainType;
|
||||||
|
|
||||||
|
typedef struct VkChainHeader {
|
||||||
|
VkChainType type;
|
||||||
|
uint32_t version;
|
||||||
|
uint32_t size;
|
||||||
|
} VkChainHeader;
|
||||||
|
|
||||||
|
typedef struct VkEnumerateInstanceExtensionPropertiesChain {
|
||||||
|
VkChainHeader header;
|
||||||
|
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceExtensionPropertiesChain *, const char *, uint32_t *,
|
||||||
|
VkExtensionProperties *);
|
||||||
|
const struct VkEnumerateInstanceExtensionPropertiesChain *pNextLink;
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
inline VkResult CallDown(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) const {
|
||||||
|
return pfnNextLayer(pNextLink, pLayerName, pPropertyCount, pProperties);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} VkEnumerateInstanceExtensionPropertiesChain;
|
||||||
|
|
||||||
|
typedef struct VkEnumerateInstanceLayerPropertiesChain {
|
||||||
|
VkChainHeader header;
|
||||||
|
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceLayerPropertiesChain *, uint32_t *, VkLayerProperties *);
|
||||||
|
const struct VkEnumerateInstanceLayerPropertiesChain *pNextLink;
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
inline VkResult CallDown(uint32_t *pPropertyCount, VkLayerProperties *pProperties) const {
|
||||||
|
return pfnNextLayer(pNextLink, pPropertyCount, pProperties);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} VkEnumerateInstanceLayerPropertiesChain;
|
||||||
|
|
||||||
|
typedef struct VkEnumerateInstanceVersionChain {
|
||||||
|
VkChainHeader header;
|
||||||
|
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceVersionChain *, uint32_t *);
|
||||||
|
const struct VkEnumerateInstanceVersionChain *pNextLink;
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
inline VkResult CallDown(uint32_t *pApiVersion) const {
|
||||||
|
return pfnNextLayer(pNextLink, pApiVersion);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} VkEnumerateInstanceVersionChain;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
92
headers/vulkan/vk_platform.h
Normal file
92
headers/vulkan/vk_platform.h
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
//
|
||||||
|
// File: vk_platform.h
|
||||||
|
//
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef VK_PLATFORM_H_
|
||||||
|
#define VK_PLATFORM_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
/*
|
||||||
|
***************************************************************************************************
|
||||||
|
* Platform-specific directives and type declarations
|
||||||
|
***************************************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Platform-specific calling convention macros.
|
||||||
|
*
|
||||||
|
* Platforms should define these so that Vulkan clients call Vulkan commands
|
||||||
|
* with the same calling conventions that the Vulkan implementation expects.
|
||||||
|
*
|
||||||
|
* VKAPI_ATTR - Placed before the return type in function declarations.
|
||||||
|
* Useful for C++11 and GCC/Clang-style function attribute syntax.
|
||||||
|
* VKAPI_CALL - Placed after the return type in function declarations.
|
||||||
|
* Useful for MSVC-style calling convention syntax.
|
||||||
|
* VKAPI_PTR - Placed between the '(' and '*' in function pointer types.
|
||||||
|
*
|
||||||
|
* Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void);
|
||||||
|
* Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
|
||||||
|
*/
|
||||||
|
#if defined(_WIN32)
|
||||||
|
// On Windows, Vulkan commands use the stdcall convention
|
||||||
|
#define VKAPI_ATTR
|
||||||
|
#define VKAPI_CALL __stdcall
|
||||||
|
#define VKAPI_PTR VKAPI_CALL
|
||||||
|
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
|
||||||
|
#error "Vulkan isn't supported for the 'armeabi' NDK ABI"
|
||||||
|
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
|
||||||
|
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
|
||||||
|
// calling convention, i.e. float parameters are passed in registers. This
|
||||||
|
// is true even if the rest of the application passes floats on the stack,
|
||||||
|
// as it does by default when compiling for the armeabi-v7a NDK ABI.
|
||||||
|
#define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
|
||||||
|
#define VKAPI_CALL
|
||||||
|
#define VKAPI_PTR VKAPI_ATTR
|
||||||
|
#else
|
||||||
|
// On other platforms, use the default calling convention
|
||||||
|
#define VKAPI_ATTR
|
||||||
|
#define VKAPI_CALL
|
||||||
|
#define VKAPI_PTR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#if !defined(VK_NO_STDINT_H)
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
||||||
|
typedef signed __int8 int8_t;
|
||||||
|
typedef unsigned __int8 uint8_t;
|
||||||
|
typedef signed __int16 int16_t;
|
||||||
|
typedef unsigned __int16 uint16_t;
|
||||||
|
typedef signed __int32 int32_t;
|
||||||
|
typedef unsigned __int32 uint32_t;
|
||||||
|
typedef signed __int64 int64_t;
|
||||||
|
typedef unsigned __int64 uint64_t;
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
#endif // !defined(VK_NO_STDINT_H)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
#endif
|
69
headers/vulkan/vk_sdk_platform.h
Normal file
69
headers/vulkan/vk_sdk_platform.h
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
//
|
||||||
|
// File: vk_sdk_platform.h
|
||||||
|
//
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||||
|
* Copyright (c) 2015-2016 Valve Corporation
|
||||||
|
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VK_SDK_PLATFORM_H
|
||||||
|
#define VK_SDK_PLATFORM_H
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define NOMINMAX
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#undef inline
|
||||||
|
#define inline __inline
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/)
|
||||||
|
// C99:
|
||||||
|
// Microsoft didn't implement C99 in Visual Studio; but started adding it with
|
||||||
|
// VS2013. However, VS2013 still didn't have snprintf(). The following is a
|
||||||
|
// work-around (Note: The _CRT_SECURE_NO_WARNINGS macro must be set in the
|
||||||
|
// "CMakeLists.txt" file).
|
||||||
|
// NOTE: This is fixed in Visual Studio 2015.
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define strdup _strdup
|
||||||
|
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
|
// Check for noexcept support using clang, with fallback to Windows or GCC version numbers
|
||||||
|
#ifndef NOEXCEPT
|
||||||
|
#if defined(__clang__)
|
||||||
|
#if __has_feature(cxx_noexcept)
|
||||||
|
#define HAS_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46
|
||||||
|
#define HAS_NOEXCEPT
|
||||||
|
#else
|
||||||
|
#if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS
|
||||||
|
#define HAS_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAS_NOEXCEPT
|
||||||
|
#define NOEXCEPT noexcept
|
||||||
|
#else
|
||||||
|
#define NOEXCEPT
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VK_SDK_PLATFORM_H
|
77
headers/vulkan/vulkan.h
Normal file
77
headers/vulkan/vulkan.h
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
#ifndef VULKAN_H_
|
||||||
|
#define VULKAN_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "vk_platform.h"
|
||||||
|
#include "vulkan_core.h"
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
#include "vulkan_android.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_FUCHSIA
|
||||||
|
#include <zircon/types.h>
|
||||||
|
#include "vulkan_fuchsia.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||||
|
#include "vulkan_ios.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||||
|
#include "vulkan_macos.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_VI_NN
|
||||||
|
#include "vulkan_vi.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
#include <wayland-client.h>
|
||||||
|
#include "vulkan_wayland.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
#include <windows.h>
|
||||||
|
#include "vulkan_win32.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
#include <xcb/xcb.h>
|
||||||
|
#include "vulkan_xcb.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include "vulkan_xlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/extensions/Xrandr.h>
|
||||||
|
#include "vulkan_xlib_xrandr.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_H_
|
54493
headers/vulkan/vulkan.hpp
Normal file
54493
headers/vulkan/vulkan.hpp
Normal file
File diff suppressed because it is too large
Load diff
126
headers/vulkan/vulkan_android.h
Normal file
126
headers/vulkan/vulkan_android.h
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
#ifndef VULKAN_ANDROID_H_
|
||||||
|
#define VULKAN_ANDROID_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_android_surface 1
|
||||||
|
struct ANativeWindow;
|
||||||
|
|
||||||
|
#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
|
||||||
|
#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkAndroidSurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkAndroidSurfaceCreateFlagsKHR flags;
|
||||||
|
struct ANativeWindow* window;
|
||||||
|
} VkAndroidSurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_ANDROID_external_memory_android_hardware_buffer 1
|
||||||
|
struct AHardwareBuffer;
|
||||||
|
|
||||||
|
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3
|
||||||
|
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
|
||||||
|
|
||||||
|
typedef struct VkAndroidHardwareBufferUsageANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint64_t androidHardwareBufferUsage;
|
||||||
|
} VkAndroidHardwareBufferUsageANDROID;
|
||||||
|
|
||||||
|
typedef struct VkAndroidHardwareBufferPropertiesANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkDeviceSize allocationSize;
|
||||||
|
uint32_t memoryTypeBits;
|
||||||
|
} VkAndroidHardwareBufferPropertiesANDROID;
|
||||||
|
|
||||||
|
typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkFormat format;
|
||||||
|
uint64_t externalFormat;
|
||||||
|
VkFormatFeatureFlags formatFeatures;
|
||||||
|
VkComponentMapping samplerYcbcrConversionComponents;
|
||||||
|
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
||||||
|
VkSamplerYcbcrRange suggestedYcbcrRange;
|
||||||
|
VkChromaLocation suggestedXChromaOffset;
|
||||||
|
VkChromaLocation suggestedYChromaOffset;
|
||||||
|
} VkAndroidHardwareBufferFormatPropertiesANDROID;
|
||||||
|
|
||||||
|
typedef struct VkImportAndroidHardwareBufferInfoANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
struct AHardwareBuffer* buffer;
|
||||||
|
} VkImportAndroidHardwareBufferInfoANDROID;
|
||||||
|
|
||||||
|
typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkDeviceMemory memory;
|
||||||
|
} VkMemoryGetAndroidHardwareBufferInfoANDROID;
|
||||||
|
|
||||||
|
typedef struct VkExternalFormatANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint64_t externalFormat;
|
||||||
|
} VkExternalFormatANDROID;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
|
||||||
|
VkDevice device,
|
||||||
|
const struct AHardwareBuffer* buffer,
|
||||||
|
VkAndroidHardwareBufferPropertiesANDROID* pProperties);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
|
||||||
|
VkDevice device,
|
||||||
|
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
|
||||||
|
struct AHardwareBuffer** pBuffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
9135
headers/vulkan/vulkan_core.h
Normal file
9135
headers/vulkan/vulkan_core.h
Normal file
File diff suppressed because it is too large
Load diff
58
headers/vulkan/vulkan_fuchsia.h
Normal file
58
headers/vulkan/vulkan_fuchsia.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#ifndef VULKAN_FUCHSIA_H_
|
||||||
|
#define VULKAN_FUCHSIA_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_FUCHSIA_imagepipe_surface 1
|
||||||
|
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
|
||||||
|
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
|
||||||
|
|
||||||
|
typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkImagePipeSurfaceCreateFlagsFUCHSIA flags;
|
||||||
|
zx_handle_t imagePipeHandle;
|
||||||
|
} VkImagePipeSurfaceCreateInfoFUCHSIA;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
58
headers/vulkan/vulkan_ios.h
Normal file
58
headers/vulkan/vulkan_ios.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#ifndef VULKAN_IOS_H_
|
||||||
|
#define VULKAN_IOS_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_MVK_ios_surface 1
|
||||||
|
#define VK_MVK_IOS_SURFACE_SPEC_VERSION 2
|
||||||
|
#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
|
||||||
|
|
||||||
|
typedef struct VkIOSSurfaceCreateInfoMVK {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkIOSSurfaceCreateFlagsMVK flags;
|
||||||
|
const void* pView;
|
||||||
|
} VkIOSSurfaceCreateInfoMVK;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
58
headers/vulkan/vulkan_macos.h
Normal file
58
headers/vulkan/vulkan_macos.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#ifndef VULKAN_MACOS_H_
|
||||||
|
#define VULKAN_MACOS_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_MVK_macos_surface 1
|
||||||
|
#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2
|
||||||
|
#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
|
||||||
|
|
||||||
|
typedef struct VkMacOSSurfaceCreateInfoMVK {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkMacOSSurfaceCreateFlagsMVK flags;
|
||||||
|
const void* pView;
|
||||||
|
} VkMacOSSurfaceCreateInfoMVK;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
65
headers/vulkan/vulkan_mir.h
Normal file
65
headers/vulkan/vulkan_mir.h
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef VULKAN_MIR_H_
|
||||||
|
#define VULKAN_MIR_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2018 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_mir_surface 1
|
||||||
|
#define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
|
||||||
|
#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkMirSurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkMirSurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkMirSurfaceCreateFlagsKHR flags;
|
||||||
|
MirConnection* connection;
|
||||||
|
MirSurface* mirSurface;
|
||||||
|
} VkMirSurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkMirSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
MirConnection* connection);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
58
headers/vulkan/vulkan_vi.h
Normal file
58
headers/vulkan/vulkan_vi.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#ifndef VULKAN_VI_H_
|
||||||
|
#define VULKAN_VI_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_NN_vi_surface 1
|
||||||
|
#define VK_NN_VI_SURFACE_SPEC_VERSION 1
|
||||||
|
#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkViSurfaceCreateFlagsNN;
|
||||||
|
|
||||||
|
typedef struct VkViSurfaceCreateInfoNN {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkViSurfaceCreateFlagsNN flags;
|
||||||
|
void* window;
|
||||||
|
} VkViSurfaceCreateInfoNN;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkViSurfaceCreateInfoNN* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
65
headers/vulkan/vulkan_wayland.h
Normal file
65
headers/vulkan/vulkan_wayland.h
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef VULKAN_WAYLAND_H_
|
||||||
|
#define VULKAN_WAYLAND_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_wayland_surface 1
|
||||||
|
#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
|
||||||
|
#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkWaylandSurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkWaylandSurfaceCreateFlagsKHR flags;
|
||||||
|
struct wl_display* display;
|
||||||
|
struct wl_surface* surface;
|
||||||
|
} VkWaylandSurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
struct wl_display* display);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
276
headers/vulkan/vulkan_win32.h
Normal file
276
headers/vulkan/vulkan_win32.h
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
#ifndef VULKAN_WIN32_H_
|
||||||
|
#define VULKAN_WIN32_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_win32_surface 1
|
||||||
|
#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
|
||||||
|
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkWin32SurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkWin32SurfaceCreateFlagsKHR flags;
|
||||||
|
HINSTANCE hinstance;
|
||||||
|
HWND hwnd;
|
||||||
|
} VkWin32SurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_KHR_external_memory_win32 1
|
||||||
|
#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
|
||||||
|
|
||||||
|
typedef struct VkImportMemoryWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||||
|
HANDLE handle;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkImportMemoryWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkExportMemoryWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
const SECURITY_ATTRIBUTES* pAttributes;
|
||||||
|
DWORD dwAccess;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkExportMemoryWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkMemoryWin32HandlePropertiesKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint32_t memoryTypeBits;
|
||||||
|
} VkMemoryWin32HandlePropertiesKHR;
|
||||||
|
|
||||||
|
typedef struct VkMemoryGetWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkDeviceMemory memory;
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||||
|
} VkMemoryGetWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
|
||||||
|
VkDevice device,
|
||||||
|
const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||||
|
HANDLE* pHandle);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
|
||||||
|
VkDevice device,
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
||||||
|
HANDLE handle,
|
||||||
|
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_KHR_win32_keyed_mutex 1
|
||||||
|
#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
|
||||||
|
|
||||||
|
typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint32_t acquireCount;
|
||||||
|
const VkDeviceMemory* pAcquireSyncs;
|
||||||
|
const uint64_t* pAcquireKeys;
|
||||||
|
const uint32_t* pAcquireTimeouts;
|
||||||
|
uint32_t releaseCount;
|
||||||
|
const VkDeviceMemory* pReleaseSyncs;
|
||||||
|
const uint64_t* pReleaseKeys;
|
||||||
|
} VkWin32KeyedMutexAcquireReleaseInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_external_semaphore_win32 1
|
||||||
|
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
|
||||||
|
|
||||||
|
typedef struct VkImportSemaphoreWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkSemaphore semaphore;
|
||||||
|
VkSemaphoreImportFlags flags;
|
||||||
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||||
|
HANDLE handle;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkImportSemaphoreWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkExportSemaphoreWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
const SECURITY_ATTRIBUTES* pAttributes;
|
||||||
|
DWORD dwAccess;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkExportSemaphoreWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkD3D12FenceSubmitInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint32_t waitSemaphoreValuesCount;
|
||||||
|
const uint64_t* pWaitSemaphoreValues;
|
||||||
|
uint32_t signalSemaphoreValuesCount;
|
||||||
|
const uint64_t* pSignalSemaphoreValues;
|
||||||
|
} VkD3D12FenceSubmitInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkSemaphoreGetWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkSemaphore semaphore;
|
||||||
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||||
|
} VkSemaphoreGetWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
|
||||||
|
VkDevice device,
|
||||||
|
const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
|
||||||
|
VkDevice device,
|
||||||
|
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||||
|
HANDLE* pHandle);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_KHR_external_fence_win32 1
|
||||||
|
#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
|
||||||
|
|
||||||
|
typedef struct VkImportFenceWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkFence fence;
|
||||||
|
VkFenceImportFlags flags;
|
||||||
|
VkExternalFenceHandleTypeFlagBits handleType;
|
||||||
|
HANDLE handle;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkImportFenceWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkExportFenceWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
const SECURITY_ATTRIBUTES* pAttributes;
|
||||||
|
DWORD dwAccess;
|
||||||
|
LPCWSTR name;
|
||||||
|
} VkExportFenceWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
typedef struct VkFenceGetWin32HandleInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkFence fence;
|
||||||
|
VkExternalFenceHandleTypeFlagBits handleType;
|
||||||
|
} VkFenceGetWin32HandleInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
|
||||||
|
VkDevice device,
|
||||||
|
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
|
||||||
|
VkDevice device,
|
||||||
|
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||||
|
HANDLE* pHandle);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_NV_external_memory_win32 1
|
||||||
|
#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
||||||
|
#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
|
||||||
|
|
||||||
|
typedef struct VkImportMemoryWin32HandleInfoNV {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkExternalMemoryHandleTypeFlagsNV handleType;
|
||||||
|
HANDLE handle;
|
||||||
|
} VkImportMemoryWin32HandleInfoNV;
|
||||||
|
|
||||||
|
typedef struct VkExportMemoryWin32HandleInfoNV {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
const SECURITY_ATTRIBUTES* pAttributes;
|
||||||
|
DWORD dwAccess;
|
||||||
|
} VkExportMemoryWin32HandleInfoNV;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
|
||||||
|
VkDevice device,
|
||||||
|
VkDeviceMemory memory,
|
||||||
|
VkExternalMemoryHandleTypeFlagsNV handleType,
|
||||||
|
HANDLE* pHandle);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_NV_win32_keyed_mutex 1
|
||||||
|
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
|
||||||
|
#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
|
||||||
|
|
||||||
|
typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint32_t acquireCount;
|
||||||
|
const VkDeviceMemory* pAcquireSyncs;
|
||||||
|
const uint64_t* pAcquireKeys;
|
||||||
|
const uint32_t* pAcquireTimeoutMilliseconds;
|
||||||
|
uint32_t releaseCount;
|
||||||
|
const VkDeviceMemory* pReleaseSyncs;
|
||||||
|
const uint64_t* pReleaseKeys;
|
||||||
|
} VkWin32KeyedMutexAcquireReleaseInfoNV;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
66
headers/vulkan/vulkan_xcb.h
Normal file
66
headers/vulkan/vulkan_xcb.h
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#ifndef VULKAN_XCB_H_
|
||||||
|
#define VULKAN_XCB_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_xcb_surface 1
|
||||||
|
#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
|
||||||
|
#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkXcbSurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkXcbSurfaceCreateFlagsKHR flags;
|
||||||
|
xcb_connection_t* connection;
|
||||||
|
xcb_window_t window;
|
||||||
|
} VkXcbSurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
xcb_connection_t* connection,
|
||||||
|
xcb_visualid_t visual_id);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
66
headers/vulkan/vulkan_xlib.h
Normal file
66
headers/vulkan/vulkan_xlib.h
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#ifndef VULKAN_XLIB_H_
|
||||||
|
#define VULKAN_XLIB_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_xlib_surface 1
|
||||||
|
#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
|
||||||
|
#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
|
||||||
|
|
||||||
|
typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
|
||||||
|
|
||||||
|
typedef struct VkXlibSurfaceCreateInfoKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkXlibSurfaceCreateFlagsKHR flags;
|
||||||
|
Display* dpy;
|
||||||
|
Window window;
|
||||||
|
} VkXlibSurfaceCreateInfoKHR;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
Display* dpy,
|
||||||
|
VisualID visualID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
54
headers/vulkan/vulkan_xlib_xrandr.h
Normal file
54
headers/vulkan/vulkan_xlib_xrandr.h
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#ifndef VULKAN_XLIB_XRANDR_H_
|
||||||
|
#define VULKAN_XLIB_XRANDR_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_acquire_xlib_display 1
|
||||||
|
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
Display* dpy,
|
||||||
|
VkDisplayKHR display);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
Display* dpy,
|
||||||
|
RROutput rrOutput,
|
||||||
|
VkDisplayKHR* pDisplay);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -36,7 +36,7 @@ git = "https://github.com/gfx-rs/gfx"
|
||||||
git = "https://github.com/gfx-rs/gfx"
|
git = "https://github.com/gfx-rs/gfx"
|
||||||
#path = "../../gfx/src/backend/empty"
|
#path = "../../gfx/src/backend/empty"
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "macos"))'.dependencies.gfx-backend-vulkan]
|
[target.'cfg(not(any(target_os = "macos", target_os = "ios")))'.dependencies.gfx-backend-vulkan]
|
||||||
features = ["x11", "xcb"]
|
features = ["x11", "xcb"]
|
||||||
git = "https://github.com/gfx-rs/gfx"
|
git = "https://github.com/gfx-rs/gfx"
|
||||||
#path = "../../gfx/src/backend/vulkan"
|
#path = "../../gfx/src/backend/vulkan"
|
||||||
|
@ -52,7 +52,7 @@ git = "https://github.com/gfx-rs/gfx"
|
||||||
#path = "../../gfx/src/backend/dx11"
|
#path = "../../gfx/src/backend/dx11"
|
||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies.gfx-backend-metal]
|
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.gfx-backend-metal]
|
||||||
git = "https://github.com/gfx-rs/gfx"
|
git = "https://github.com/gfx-rs/gfx"
|
||||||
#path = "../../gfx/src/backend/metal"
|
#path = "../../gfx/src/backend/metal"
|
||||||
optional = true
|
optional = true
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 02185a829989e43ea13839ec07532c09915c5de0
|
|
Loading…
Reference in a new issue