Experimental: Vulkan tool build script.

This commit is contained in:
Syoyo Fujita
2022-12-27 06:09:25 +09:00
parent d22299dacf
commit a778823bdb
3 changed files with 106 additions and 0 deletions

14
sandbox/vulkan/README.md Normal file
View File

@@ -0,0 +1,14 @@
# Setup Vulkan Loaders and Vulkan Validation layers
## Linux
```
$ bash build-vulkan-tools-linux.sh
```
Files will be installed to `dist` directory.
## Windows, macOS, Android
T.B.W.

View File

@@ -0,0 +1,65 @@
#!/bin/bash
# Asssume Cmake 3.20+
glslang_dist_dir=`pwd`/dist
vk_header_dist_dir=`pwd`/dist
vk_loader_dist_dir=`pwd`/dist
function build_vk_headers() {
git clone https://github.com/KhronosGroup/Vulkan-Headers
rm -rf vk_header_build
mkdir vk_header_build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${vk_header_dist_dir}" -B vk_header_build Vulkan-Headers
cmake --build vk_header_build --config Release
cmake --build vk_header_build --config Release --target install
}
function build_validation_layer() {
git clone https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
cd Vulkan-ValidationLayers
rm -rf build
mkdir build
cd build
python3 ../scripts/update_deps.py --dir ../external --arch x64 --config debug
cmake -G Ninja -C ../external/helper.cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . --config Debug
}
function build_glslang() {
git clone https://github.com/KhronosGroup/glslang.git
rm -rf glslang_build
mkdir glslang_build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${glslang_dist_dir}" -B glslang_build glslang
cmake --build glslang_build --config Release
cmake --build glslang_build --config Release --target install
}
function build_vk_loader() {
rm -rf vk_loader_build
mkdir vk_loader_build
git clone https://github.com/KhronosGroup/Vulkan-Loader.git
cmake -S Vulkan-Loader -B vk_loader_build -DCMAKE_INSTALL_PREFIX="${vk_loader_dist_dir}" -DUPDATE_DEPS=On
cmake --build vk_loader_build
cmake --build vk_loader_build --config Debug
cmake --build vk_loader_build --config Debug --target install
}
build_vk_headers
build_validation_layer
build_glslang
build_vk_loader

View File

@@ -30,6 +30,30 @@ using vec3 = value::float3;
using vec4 = value::float4;
using mat2 = value::matrix2f; // float precision
// Simple string <-> id map
struct StringAndIdMap {
void add(uint64_t key, const std::string &val) {
_i_to_s[key] = val;
_s_to_i[val] = key;
}
void add(const std::string &key, uint64_t val) {
_s_to_i[key] = val;
_i_to_s[val] = key;
}
size_t count(uint64_t i) const { return _i_to_s.count(i); }
size_t count(const std::string &s) const { return _s_to_i.count(s); }
std::string at(uint64_t i) const { return _i_to_s.at(i); }
uint64_t at(std::string s) const { return _s_to_i.at(s); }
std::map<uint64_t, std::string> _i_to_s; // index -> string
std::map<std::string, uint64_t> _s_to_i; // string -> index
};
enum class VertexVariability
{
//Constant,
@@ -256,6 +280,9 @@ std::vector<UsdPrimvarReader_float2> ExtractPrimvarReadersFromMaterialNode(const
bool ConvertMaterial(
const Stage &stage,
const tinyusdz::Material &material,
StringAndIdMap materialMap, // [inout]
StringAndIdMap textureMap, // [inout]
StringAndIdMap imageMap, // [inout]
std::vector<RenderMaterial> &materials, // [input]
std::vector<UVTexture> &textures, // [inout]
std::vector<LDRImage> &images); // [inout]