Giter Site home page Giter Site logo

nihui / waifu2x-ncnn-vulkan Goto Github PK

View Code? Open in Web Editor NEW
2.9K 45.0 205.0 32.98 MB

waifu2x converter ncnn version, runs fast on intel / amd / nvidia / apple-silicon GPU with vulkan

License: MIT License

C 82.73% C++ 14.17% CMake 3.10%
waifu2x ncnn vulkan gpu amd nvidia intel windows linux macos

waifu2x-ncnn-vulkan's Introduction

waifu2x ncnn Vulkan

CI download

ncnn implementation of waifu2x converter. Runs fast on Intel / AMD / Nvidia / Apple-Silicon with Vulkan API.

waifu2x-ncnn-vulkan uses ncnn project as the universal neural network inference framework.

Download Windows/Linux/MacOS Executable for Intel/AMD/Nvidia GPU

https://github.com/nihui/waifu2x-ncnn-vulkan/releases

This package includes all the binaries and models required. It is portable, so no CUDA or Caffe runtime environment is needed :)

Usages

Example Command

waifu2x-ncnn-vulkan.exe -i input.jpg -o output.png -n 2 -s 2

Full Usages

Usage: waifu2x-ncnn-vulkan -i infile -o outfile [options]...

  -h                   show this help
  -v                   verbose output
  -i input-path        input image path (jpg/png/webp) or directory
  -o output-path       output image path (jpg/png/webp) or directory
  -n noise-level       denoise level (-1/0/1/2/3, default=0)
  -s scale             upscale ratio (1/2/4/8/16/32, default=2)
  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu
  -m model-path        waifu2x model path (default=models-cunet)
  -g gpu-id            gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu
  -j load:proc:save    thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu
  -x                   enable tta mode
  -f format            output image format (jpg/png/webp, default=ext/png)
  • input-path and output-path accept either file path or directory path
  • noise-level = noise level, large value means strong denoise effect, -1 = no effect
  • scale = scale level, 1 = no scaling, 2 = upscale 2x
  • tile-size = tile size, use smaller value to reduce GPU memory usage, default selects automatically
  • load:proc:save = thread count for the three stages (image decoding + waifu2x upscaling + image encoding), using larger values may increase GPU usage and consume more GPU memory. You can tune this configuration with "4:4:4" for many small-size images, and "2:2:2" for large-size images. The default setting usually works fine for most situations. If you find that your GPU is hungry, try increasing thread count to achieve faster processing.
  • format = the format of the image to be output, png is better supported, however webp generally yields smaller file sizes, both are losslessly encoded

If you encounter a crash or error, try upgrading your GPU driver:

Build from Source

  1. Download and setup the Vulkan SDK from https://vulkan.lunarg.com/
  • For Linux distributions, you can either get the essential build requirements from package manager
dnf install vulkan-headers vulkan-loader-devel
apt-get install libvulkan-dev
pacman -S vulkan-headers vulkan-icd-loader
  1. Clone this project with all submodules
git clone https://github.com/nihui/waifu2x-ncnn-vulkan.git
cd waifu2x-ncnn-vulkan
git submodule update --init --recursive
  1. Build with CMake
  • You can pass -DUSE_STATIC_MOLTENVK=ON option to avoid linking the vulkan loader library on MacOS
mkdir build
cd build
cmake ../src
cmake --build . -j 4

Speed Comparison with waifu2x-caffe-cui

Environment

  • Windows 10 1809
  • AMD R7-1700
  • Nvidia GTX-1070
  • Nvidia driver 419.67
  • CUDA 10.1.105
  • cuDNN 10.1
Measure-Command { waifu2x-ncnn-vulkan.exe -i input.png -o output.png -n 2 -s 2 -t [block size] -m [model dir] }
Measure-Command { waifu2x-caffe-cui.exe -t 0 --gpu 0 -b 1 -c [block size] -p cudnn --model_dir [model dir] -s 2 -n 2 -m noise_scale -i input.png -o output.png }

cunet

Image Size Target Size Block Size Total Time(s) GPU Memory(MB)
waifu2x-ncnn-vulkan 200x200 400x400 400/200/100 0.86/0.86/0.82 638/638/197
waifu2x-caffe-cui 200x200 400x400 400/200/100 2.54/2.39/2.36 3017/936/843
waifu2x-ncnn-vulkan 400x400 800x800 400/200/100 1.17/1.04/1.02 2430/638/197
waifu2x-caffe-cui 400x400 800x800 400/200/100 2.91/2.43/2.7 3202/1389/1178
waifu2x-ncnn-vulkan 1000x1000 2000x2000 400/200/100 2.35/2.26/2.46 2430/638/197
waifu2x-caffe-cui 1000x1000 2000x2000 400/200/100 4.04/3.79/4.35 3258/1582/1175
waifu2x-ncnn-vulkan 2000x2000 4000x4000 400/200/100 6.46/6.59/7.49 2430/686/213
waifu2x-caffe-cui 2000x2000 4000x4000 400/200/100 7.01/7.54/10.11 3258/1499/1200
waifu2x-ncnn-vulkan 4000x4000 8000x8000 400/200/100 22.78/23.78/27.61 2448/654/213
waifu2x-caffe-cui 4000x4000 8000x8000 400/200/100 18.45/21.85/31.82 3325/1652/1236

upconv_7_anime_style_art_rgb

Image Size Target Size Block Size Total Time(s) GPU Memory(MB)
waifu2x-ncnn-vulkan 200x200 400x400 400/200/100 0.74/0.75/0.72 482/482/142
waifu2x-caffe-cui 200x200 400x400 400/200/100 2.04/1.99/1.99 995/546/459
waifu2x-ncnn-vulkan 400x400 800x800 400/200/100 0.95/0.83/0.81 1762/482/142
waifu2x-caffe-cui 400x400 800x800 400/200/100 2.08/2.12/2.11 995/546/459
waifu2x-ncnn-vulkan 1000x1000 2000x2000 400/200/100 1.52/1.41/1.44 1778/482/142
waifu2x-caffe-cui 1000x1000 2000x2000 400/200/100 2.72/2.60/2.68 1015/570/459
waifu2x-ncnn-vulkan 2000x2000 4000x4000 400/200/100 3.45/3.42/3.63 1778/482/142
waifu2x-caffe-cui 2000x2000 4000x4000 400/200/100 3.90/4.01/4.35 1015/521/462
waifu2x-ncnn-vulkan 4000x4000 8000x8000 400/200/100 11.16/11.29/12.07 1796/498/158
waifu2x-caffe-cui 4000x4000 8000x8000 400/200/100 9.24/9.81/11.16 995/546/436

Sample Images

Original Image

origin

Upscale 2x with ImageMagick

convert origin.jpg -resize 200% output.png

browser

Upscale 2x with ImageMagick Lanczo4 Filter

convert origin.jpg -filter Lanczos -resize 200% output.png

browser

Upscale 2x with waifu2x noise=2 scale=2

waifu2x-ncnn-vulkan.exe -i origin.jpg -o output.png -n 2 -s 2

waifu2x

Original waifu2x Project

Other Open-Source Code Used

waifu2x-ncnn-vulkan's People

Contributors

akai-katto avatar davidebeatrici avatar ipha avatar k4yt3x avatar kattjevfel avatar nihui avatar nova-aurora avatar sat3ll avatar tilcreator avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

waifu2x-ncnn-vulkan's Issues

Can't build in WSL?

System: Ubuntu 18 LTS

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DVulkan_LIBRARY=/mnt/c/Users/vm/Desktop/Vulkan-Loader-1.1.114 -DVulkan_INCLUDE_DIR=/mnt/c/Users/vm/Desktop/Vulkan-Headers-1.1.114/

-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP: TRUE
-- Found Vulkan: /mnt/c/Users/vm/Desktop/Vulkan-Loader-1.1.114
-- Found glslangValidator: /usr/bin/glslangValidator
-- Configuring done
WARNING: Target "waifu2x-ncnn-vulkan" requests linking to directory "/mnt/c/Users/vm/Desktop/Vulkan-Loader-1.1.114". Targets may link only to libraries. CMake is dropping the item.
-- Generating done
-- Build files have been written to: /mnt/c/Users/vm/Desktop/waifu2x-ncnn-vulkan

cmake --build .

Scanning dependencies of target generate-spirv
[ 12%] Building SPIR-V module waifu2x_preproc.spv
[ 25%] Building SPIR-V module waifu2x_preproc_fp16s.spv
[ 37%] Building SPIR-V module waifu2x_preproc_int8s.spv
SPIR-V is not generated for failed compile or link
CMakeFiles/generate-spirv.dir/build.make:73: recipe for target 'waifu2x_preproc_int8s.spv.hex.h' failed
make[2]: *** [waifu2x_preproc_int8s.spv.hex.h] Error 2
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/generate-spirv.dir/all' failed
make[1]: *** [CMakeFiles/generate-spirv.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

i try to build waifu2x_preproc.comp, get some error:

glslangValidator -DNCNN_fp16_storage=1 -DNCNN_int8_storage=1 -V -e
waifu2x_preproc.comp_int8s --source-entrypoint main -x -o waifu2x_preproc.comp_int8s.spv.hex.h waifu2x_preproc.comp

waifu2x_preproc.comp
ERROR: waifu2x_preproc.comp:65: 'constructor' : can't convert
ERROR: waifu2x_preproc.comp:65: ' temp float' : cannot construct with these arguments
ERROR: waifu2x_preproc.comp:65: '' : missing #endif
ERROR: waifu2x_preproc.comp:65: '' : compilation terminated
ERROR: 4 compilation errors. No code generated.

SPIR-V is not generated for failed compile or link

One-line help unclear

The current one-line help format with [scale=1/2] tends to make users (dumb me) type scale=2 instead of 2 for that value. This... should probably be changed.

[Request] Batch-Upscaling Request

Currently if a user wants to upscale multiple photos using waifu2x-ncnn-vulkan, it works as follows:

for every image in folder
| load vulkan runtime initialization
| load image
| upscale image
| save image

In a previous post you commented:

A really large portion of the consumed time is for the vulkan runtime initialization

If we can instead do

load vulkan runtime initialization
for every image in folder
| load image
| upscale image
| save image

We could save a lot of computational time. It could be used in dandere2x

https://github.com/aka-katto/dandere2x

and k4yt3x's video2x

https://github.com/k4yt3x/video2x

output batch filename

"waifu2x-ncnn-vulkan.exe" -i "F:\out\1\temp\1" -o "E:\out" -n 3 -s 2 -t 200 -m "...waifu2x-caffe\models-upconv_7_anime_style_art_rgb" -g 0

explorer_3drX86r3iD

System crash when using large block sizes

When attempting to use blocksize = 1600 (or higher values) and a large input image (2000x2000 +), this can freeze the entire system/crash the display driver requiring a hard reset (kernel logs recorded going out of VRAM).
Does the program perform some type of check to prevent using more VRAM than available (or soft capping to a safe value) ?

Note: Using reasonable blocksizes (default = 400) does not result in a crash.

System: Fedora 30 Linux
GPU: AMD Fury X (4GB VRAM)

Directory watch mode

The implementation of batch scaling in #21 is useful when resizing several images, but it is difficult to use when the scaling is part of a pipeline. I would like to suggest a directory watch mode. This could simply be a loop where it checks for new files in the input directory for every n-seconds. This way it can shave off the initialization time and can be easily integrated with external script.

intel UHD Graphics 620: Black images

Hello, I am getting black images when running this CLI program. The command I'm using is this:

cd waifu2x-ncnn-vulkan && waifu2x-ncnn-vulkan.exe -i .././images/pfp.jpg -o .././images/upscale/pfp2x.jpg -n 2 -s 2 -t 32

Command line output:

[0 Intel(R) UHD Graphics 620]  queueC=0[1]  queueT=0[1]  memU=0  memDL=0  memHV=0
[0 Intel(R) UHD Graphics 620]  fp16p=1  fp16s=1  fp16a=0  int8s=1  int8a=0

Is my gpu not supported (integrated graphics) in this case?

[Request] JPG / BMP Output

Output Format for slow cpu?

EXT Type CPU Usage File Size
JPG Lossy Low Small
BMP Lossless Very Low Large

CLSID_WICImagingFactory not work on win7

CLSID_WICImagingFactory not work on win7 when compiled on win10 as CLSID_WICImagingFactory will be treated as CLSID_WICImagingFactory2 on win10.
so it might be CLSID_WICImagingFactory1 here.

Segfault during build on Debian 10 Buster / Ryzen 3 2200G

Trying to build this on my Debian 10 / Ryzen 3 2200G system results in a segfault. I am not certain if this is user error or not.

-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so  
-- Found glslangValidator: /home/lstevens/stuff/1.1.114.0/x86_64/bin/glslangValidator
-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lstevens/stuff/waifu2x-ncnn-vulkan/build
lstevens@sjtanrh:~/stuff/waifu2x-ncnn-vulkan/build$ make -j14
Scanning dependencies of target generate-spirv
[ 11%] Building SPIR-V module waifu2x_postproc.spv
[ 22%] Building SPIR-V module waifu2x_preproc_fp16s.spv
[ 33%] Building SPIR-V module waifu2x_preproc_int8s.spv
[ 44%] Building SPIR-V module waifu2x_postproc_fp16s.spv
[ 55%] Building SPIR-V module waifu2x_preproc.spv
[ 66%] Building SPIR-V module waifu2x_postproc_int8s.spv
make[2]: *** [CMakeFiles/generate-spirv.dir/build.make:86: waifu2x_postproc_int8s.spv.hex.h] Segmentation fault
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/generate-spirv.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

dmesg:

[20964.699113] glslangValidato[21872]: segfault at 10 ip 0000000000591bbd sp 00007ffe380df208 error 4 in glslangValidator[400000+4f2000]
[20964.699119] Code: 18 8b 30 eb c8 0f 1f 84 00 00 00 00 00 f3 c3 66 0f 1f 44 00 00 f3 c3 66 0f 1f 44 00 00 48 8b 8f f8 00 00 00 89 f6 48 8b 14 f1 <8b> 42 10 83 f8 1c 74 2b 7e 19 83 f8 1e 75 3c 48 8b 42 20 48 2b 42

I honestly have no idea why it's segfaulting here. Can anyone reproduce? Will try to repro on my other systems later if possible.

edit: bad formatting

Building Issue [Minit 18.04 MATE / Manjaro 18.04 XFCE]

I followed these instructions:

https://github.com/Tencent/ncnn/wiki/how-to-build

and files needed to build waifu2x-ncnn-vulkan were not appearing where they were needed. However, using the AUR package, the files appeared correctly.

Ubuntu

I did this on a fresh build on Mint 18.04, and I took screenshots of the process.

Did I do something wrong? I annotated each picture of what I was doing.

https://imgur.com/a/mPRtiOP

Manjaro

The same issue applied when I tried to follow the build instructions on Manjaro, where the files needed to build the cmake were not there.

When I moved over to Manjaro [arch linux], and I was able to 'solve' the issue by installing ncnn via the AUR package (which worked flawlessly), and then copying over the missing files and folders.

Specifically, the waifu2x-ncnn-cmake errors were telling me the following files were missing in their respective directories, so I copied the files over from the AUR built NCNN into the tutorial-built NCNN.

['export/lib/cmake/ncnn/ncnnConfig.cmake', 'export/lib/libcnn.a', 'export/include/ncnn']

Then I built it waifu2x-ncnn-vulkan using the tutorial-built NCNN, which seemed to fix the issue.

TL;DR

I tried following the ncnn build instructions on ubuntu/arch linux for waifu2x-ncnn-vulkan but ran into issues. I installed the AUR package (which worked) to find what was missing on the instructions-built version, and copied the files over, which fixed the problem.

2 feature requests

I'd like 2 features to be added, which I think should be fairly simple to implement:

1: the ability to log how much time, in MS, was spent to upscale an image. perhaps create a log file if -log was entered as an additional command.

2: the ability to specify which gpu to use if multiple gpus are installed. perhaps add something like -gpu 0 -gpu 1 etc. as an optional command to target a specific gpu.

unable to launch

tried to launch it and it shows a command prompt for half a second then closes. Tried running as admin. Using latest nvidia drivers and supports vulkan #

windows下N卡,输出的图片放大倍率后变黑

WIN10
GTX1050
Intel cpu

D:\waifu2x-ncnn-vulkan-20190408>waifu2x.exe 001.jpg n001.jpg 2 2
[0 GeForce GTX 1050] queueC=2 queueT=1 memU=4294967295 memDL=7 memHV=9
[0 GeForce GTX 1050] fp16s=1 fp16a=0 int8s=1 int8a=1

输出后,输出图片变黑

D:\waifu2x-ncnn-vulkan-20190408>waifu2x.exe 001.jpg n001.jpg 3 1
[0 GeForce GTX 1050] queueC=2 queueT=1 memU=4294967295 memDL=7 memHV=9
[0 GeForce GTX 1050] fp16s=1 fp16a=0 int8s=1 int8a=1

输出图片正常,但是倍率不能放大

[Enchancement] Adding TTA mode

First of all thanks very much for this Excellent Fast program of waifu2x concept
anyway, i would like to suggest adding TTA mode to clean up artifacts of original image AS included in waifu2x-caffe
i tested out your program on very bad JPEG full of artifacts , but the results wasn't cleaned up properly even while setting denoise level on 3 although caffe actually cleaned up everything and produced such an excellent upscaled image but with more time (5 minutes) on the other hand
I hope your program succeed in every result from now on
My Best Regards

Extra options request

  • Is it possible to allow scale to be an arbitrary number or a multiple of 2? Currently we're locked to either 1 or 2.
  • [DONE] Is it possible to specify a directory containing images as input and have it output the images into another directory? This comes useful when converting many images at once. (waifu2x_caffe and waifu2x_converter_cpp have this behavior.) Currently, if I want to upscale 200 images I have to launch waifu2x-ncnn-vulkan 200 times! Launching it only once should improve performance greatly.

Intent to package: Snaps are universal Linux packages

Dear maintainer(s),

Snaps are universal Linux packages that can be installed and run on many GNU+Linux distributions with ease. I've been following the Snapcrafters instructions and have built a snap on the Snap Store, you may try it by running the following commands after installing snapd:

# snap install --channel=edge waifu2x-ncnn-vulkan

This snap ships intel and AMD Vulkan drivers and should be usable on supported hardware, unfortunately the GPU I'm using(Intel® HD Graphics 4600) doesn't have complete Vulkan driver and while it allows the application to launch properly it produces garbled images like the following one(waifu2x-ncnn-vulkan 0.jpg 2.png 0 1 100):

I'm also looking forward to working with you to make the packaging work upstream (if you're interested). You may want to check out the current packaging recipe, the documentation, registering a developer account on the Snap Store, and get in touch with us to transfer the work under your control.

Thanks for your time and attention.

Run out of VRAM: "vkAllocateMemory failed -1"

Thanks for your great job! It's super fast!

"vkAllocateMemory failed -1" happens when I try to convert from 1956x1956 with (Noise 2, Scale2).

Since converting from 978x978 to 1956x1956 (Noise 2, Scale 2) occupies 3.6G VRAM, I think it is reasonable to consider split photos into multiply slices (Like what they did in waifu2x-caffe).

By the way, I think 4G VRAM is an good target for memory usage control. Because most laptop usually equipped with 8G RAM and half of them could be used by Intel's graphic cards. (Since Nivida graphic card may choose cudnn and AMD usually has large VRAM, Intel is an good baseline)

.png.png file extension name issue

When using batch processing, and when exposing the file extension in the windows file explorer, the images in the output folder result in a .png.png file name.
example:
input: image01.png
output: image01.png.png

Upscaling large image on Intel GPU and Linux will get black picture instead

Used the "1.png" as the original image, keep upscaling its upscaled result. The first result (1004 * 720) seems fine, but the second result (2008 * 1440) is a black image.
The first result:
1_2x
The second result:
1_4x

Vulkan info:

===========
VULKAN INFO
===========

Vulkan Instance Version: 1.1.70



Instance Extensions:
====================
Instance Extensions	count = 16
	VK_KHR_device_group_creation        : extension revision  1
	VK_KHR_external_fence_capabilities  : extension revision  1
	VK_KHR_external_memory_capabilities : extension revision  1
	VK_KHR_external_semaphore_capabilities: extension revision  1
	VK_KHR_get_physical_device_properties2: extension revision  1
	VK_KHR_get_surface_capabilities2    : extension revision  1
	VK_KHR_surface                      : extension revision 25
	VK_KHR_wayland_surface              : extension revision  6
	VK_KHR_xcb_surface                  : extension revision  6
	VK_KHR_xlib_surface                 : extension revision  6
	VK_KHR_display                      : extension revision 23
	VK_EXT_direct_mode_display          : extension revision  1
	VK_EXT_acquire_xlib_display         : extension revision  1
	VK_EXT_display_surface_counter      : extension revision  1
	VK_EXT_debug_report                 : extension revision  9
	VK_EXT_debug_utils                  : extension revision  1
Layers: count = 10
=======
VK_LAYER_LUNARG_parameter_validation (LunarG Validation Layer) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 1
		VK_EXT_debug_report                 : extension revision  6
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 1
			VK_EXT_debug_marker                 : extension revision  4

VK_LAYER_LUNARG_core_validation (LunarG Validation Layer) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 1
		VK_EXT_debug_report                 : extension revision  6
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 2
			VK_EXT_debug_marker                 : extension revision  4
			VK_EXT_validation_cache             : extension revision  1

VK_LAYER_LUNARG_object_tracker (LunarG Validation Layer) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 1
		VK_EXT_debug_report                 : extension revision  6
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 1
			VK_EXT_debug_marker                 : extension revision  4

VK_LAYER_GOOGLE_threading (Google Validation Layer) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 1
		VK_EXT_debug_report                 : extension revision  6
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

VK_LAYER_GOOGLE_unique_objects (Google Validation Layer) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 0
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation) Vulkan version 1.1.70, layer version 1
	Layer Extensions	count = 1
		VK_EXT_debug_report                 : extension revision  6
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 2
			VK_EXT_debug_marker                 : extension revision  4
			VK_EXT_validation_cache             : extension revision  1

VK_LAYER_VALVE_steam_overlay_64 (Steam Overlay Layer) Vulkan version 1.1.73, layer version 1
	Layer Extensions	count = 0
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

VK_LAYER_VALVE_steam_fossilize_32 (Steam Pipeline Caching Layer) Vulkan version 1.1.73, layer version 1
	Layer Extensions	count = 0
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

VK_LAYER_VALVE_steam_overlay_32 (Steam Overlay Layer) Vulkan version 1.1.73, layer version 1
	Layer Extensions	count = 0
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

VK_LAYER_VALVE_steam_fossilize_64 (Steam Pipeline Caching Layer) Vulkan version 1.1.73, layer version 1
	Layer Extensions	count = 0
	Devices 	count = 1
		GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
		Layer-Device Extensions	count = 0

Presentable Surfaces:
=====================
GPU id       : 0 (Intel(R) HD Graphics 620 (Kaby Lake GT2))
Surface type : VK_KHR_xcb_surface
Formats:		count = 2
	B8G8R8A8_SRGB
	B8G8R8A8_UNORM
Present Modes:		count = 3
	IMMEDIATE_KHR
	MAILBOX_KHR
	FIFO_KHR

VkSurfaceCapabilitiesKHR:
=========================
	minImageCount       = 2
	maxImageCount       = 0
	currentExtent:
		width       = 256
		height      = 256
	minImageExtent:
		width       = 256
		height      = 256
	maxImageExtent:
		width       = 256
		height      = 256
	maxImageArrayLayers = 1
	supportedTransform:
		VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
	currentTransform:
		VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
	supportedCompositeAlpha:
		VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
		VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
	supportedUsageFlags:
		VK_IMAGE_USAGE_TRANSFER_SRC_BIT
		VK_IMAGE_USAGE_TRANSFER_DST_BIT
		VK_IMAGE_USAGE_SAMPLED_BIT
		VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT

VkSurfaceCapabilities2EXT:
==========================

	supportedSurfaceCounters:
		None


Device Properties and Extensions :
==================================
GPU0
VkPhysicalDeviceProperties:
===========================
	apiVersion     = 0x401050  (1.1.80)
	driverVersion  = 75505672 (0x4802008)
	vendorID       = 0x8086
	deviceID       = 0x5916
	deviceType     = INTEGRATED_GPU
	deviceName     = Intel(R) HD Graphics 620 (Kaby Lake GT2)
	VkPhysicalDeviceLimits:
	-----------------------
		maxImageDimension1D                     = 16384
		maxImageDimension2D                     = 16384
		maxImageDimension3D                     = 2048
		maxImageDimensionCube                   = 16384
		maxImageArrayLayers                     = 2048
		maxTexelBufferElements                  = 0x8000000
		maxUniformBufferRange                   = 0x8000000
		maxStorageBufferRange                   = 0x40000000
		maxPushConstantsSize                    = 128
		maxMemoryAllocationCount                = 4294967295
		maxSamplerAllocationCount               = 65536
		bufferImageGranularity                  = 0x40
		sparseAddressSpaceSize                  = 0x0
		maxBoundDescriptorSets                  = 8
		maxPerStageDescriptorSamplers           = 128
		maxPerStageDescriptorUniformBuffers     = 64
		maxPerStageDescriptorStorageBuffers     = 64
		maxPerStageDescriptorSampledImages      = 128
		maxPerStageDescriptorStorageImages      = 64
		maxPerStageDescriptorInputAttachments   = 64
		maxPerStageResources                    = 250
		maxDescriptorSetSamplers                = 768
		maxDescriptorSetUniformBuffers          = 384
		maxDescriptorSetUniformBuffersDynamic   = 8
		maxDescriptorSetStorageBuffers          = 384
		maxDescriptorSetStorageBuffersDynamic   = 8
		maxDescriptorSetSampledImages           = 768
		maxDescriptorSetStorageImages           = 384
		maxDescriptorSetInputAttachments        = 256
		maxVertexInputAttributes                = 28
		maxVertexInputBindings                  = 28
		maxVertexInputAttributeOffset           = 0x7ff
		maxVertexInputBindingStride             = 0x800
		maxVertexOutputComponents               = 128
		maxTessellationGenerationLevel          = 64
		maxTessellationPatchSize                        = 32
		maxTessellationControlPerVertexInputComponents  = 128
		maxTessellationControlPerVertexOutputComponents = 128
		maxTessellationControlPerPatchOutputComponents  = 128
		maxTessellationControlTotalOutputComponents     = 2048
		maxTessellationEvaluationInputComponents        = 128
		maxTessellationEvaluationOutputComponents       = 128
		maxGeometryShaderInvocations            = 32
		maxGeometryInputComponents              = 64
		maxGeometryOutputComponents             = 128
		maxGeometryOutputVertices               = 256
		maxGeometryTotalOutputComponents        = 1024
		maxFragmentInputComponents              = 112
		maxFragmentOutputAttachments            = 8
		maxFragmentDualSrcAttachments           = 1
		maxFragmentCombinedOutputResources      = 8
		maxComputeSharedMemorySize              = 0x8000
		maxComputeWorkGroupCount[0]             = 65535
		maxComputeWorkGroupCount[1]             = 65535
		maxComputeWorkGroupCount[2]             = 65535
		maxComputeWorkGroupInvocations          = 896
		maxComputeWorkGroupSize[0]              = 896
		maxComputeWorkGroupSize[1]              = 896
		maxComputeWorkGroupSize[2]              = 896
		subPixelPrecisionBits                   = 4
		subTexelPrecisionBits                   = 4
		mipmapPrecisionBits                     = 4
		maxDrawIndexedIndexValue                = 4294967295
		maxDrawIndirectCount                    = 4294967295
		maxSamplerLodBias                       = 16.000000
		maxSamplerAnisotropy                    = 16.000000
		maxViewports                            = 16
		maxViewportDimensions[0]                = 16384
		maxViewportDimensions[1]                = 16384
		viewportBoundsRange[0]                  =-32768.000000
		viewportBoundsRange[1]                  = 32767.000000
		viewportSubPixelBits                    = 13
		minMemoryMapAlignment                   = 4096
		minTexelBufferOffsetAlignment           = 0x1
		minUniformBufferOffsetAlignment         = 0x20
		minStorageBufferOffsetAlignment         = 0x4
		minTexelOffset                          = -8
		maxTexelOffset                          =  7
		minTexelGatherOffset                    =-32
		maxTexelGatherOffset                    = 31
		minInterpolationOffset                  =-0.500000
		maxInterpolationOffset                  = 0.437500
		subPixelInterpolationOffsetBits         = 4
		maxFramebufferWidth                     = 16384
		maxFramebufferHeight                    = 16384
		maxFramebufferLayers                    = 2048
		framebufferColorSampleCounts            = 31
		framebufferDepthSampleCounts            = 31
		framebufferStencilSampleCounts          = 31
		framebufferNoAttachmentsSampleCounts    = 31
		maxColorAttachments                     = 8
		sampledImageColorSampleCounts           = 31
		sampledImageDepthSampleCounts           = 31
		sampledImageStencilSampleCounts         = 31
		sampledImageIntegerSampleCounts         = 1
		storageImageSampleCounts                = 1
		maxSampleMaskWords                      = 1
		timestampComputeAndGraphics             = 0
		timestampPeriod                         = 83.333336
		maxClipDistances                        = 8
		maxCullDistances                        = 8
		maxCombinedClipAndCullDistances         = 8
		discreteQueuePriorities                 = 1
		pointSizeRange[0]                       = 0.125000
		pointSizeRange[1]                       = 255.875000
		lineWidthRange[0]                       = 0.000000
		lineWidthRange[1]                       = 7.992188
		pointSizeGranularity                    = 0.125000
		lineWidthGranularity                    = 0.007812
		strictLines                             = 0
		standardSampleLocations                 = 1
		optimalBufferCopyOffsetAlignment        = 0x80
		optimalBufferCopyRowPitchAlignment      = 0x80
		nonCoherentAtomSize                     = 0x40
	VkPhysicalDeviceSparseProperties:
	---------------------------------
		residencyStandard2DBlockShape            = 0
		residencyStandard2DMultisampleBlockShape = 0
		residencyStandard3DBlockShape            = 0
		residencyAlignedMipSize                  = 0
		residencyNonResidentStrict               = 0

Device Extensions	count = 35
	VK_KHR_16bit_storage                : extension revision  1
	VK_KHR_8bit_storage                 : extension revision  1
	VK_KHR_bind_memory2                 : extension revision  1
	VK_KHR_create_renderpass2           : extension revision  1
	VK_KHR_dedicated_allocation         : extension revision  1
	VK_KHR_descriptor_update_template   : extension revision  1
	VK_KHR_device_group                 : extension revision  1
	VK_KHR_external_fence               : extension revision  1
	VK_KHR_external_fence_fd            : extension revision  1
	VK_KHR_external_memory              : extension revision  1
	VK_KHR_external_memory_fd           : extension revision  1
	VK_KHR_external_semaphore           : extension revision  1
	VK_KHR_external_semaphore_fd        : extension revision  1
	VK_KHR_get_memory_requirements2     : extension revision  1
	VK_KHR_image_format_list            : extension revision  1
	VK_KHR_incremental_present          : extension revision  1
	VK_KHR_maintenance1                 : extension revision  1
	VK_KHR_maintenance2                 : extension revision  1
	VK_KHR_maintenance3                 : extension revision  1
	VK_KHR_push_descriptor              : extension revision  1
	VK_KHR_relaxed_block_layout         : extension revision  1
	VK_KHR_sampler_mirror_clamp_to_edge : extension revision  1
	VK_KHR_sampler_ycbcr_conversion     : extension revision  1
	VK_KHR_shader_draw_parameters       : extension revision  1
	VK_KHR_storage_buffer_storage_class : extension revision  1
	VK_KHR_swapchain                    : extension revision 68
	VK_KHR_variable_pointers            : extension revision  1
	VK_KHR_multiview                    : extension revision  1
	VK_EXT_display_control              : extension revision  1
	VK_EXT_external_memory_dma_buf      : extension revision  1
	VK_EXT_global_priority              : extension revision  1
	VK_EXT_shader_viewport_index_layer  : extension revision  1
	VK_EXT_shader_stencil_export        : extension revision  1
	VK_EXT_vertex_attribute_divisor     : extension revision  3
	VK_EXT_post_depth_coverage          : extension revision  1

VkQueueFamilyProperties[0]:
===========================
	queueFlags         = GRAPHICS | COMPUTE | TRANSFER
	queueCount         = 1
	timestampValidBits = 36
	minImageTransferGranularity = (1, 1, 1)

VkPhysicalDeviceMemoryProperties:
=================================
	memoryHeapCount       = 2
	memoryHeaps[0] :
		size          = 11429983232 (0x2a947b400) (10.65 GiB)
		flags:
			VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
	memoryHeaps[1] :
		size          = 1073741824 (0x40000000) (1024.00 MiB)
		flags:
			VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
	memoryTypeCount       = 2
	memoryTypes[0] :
		heapIndex     = 0
		propertyFlags = 0xf:
			VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
			VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
			VK_MEMORY_PROPERTY_HOST_CACHED_BIT
	memoryTypes[1] :
		heapIndex     = 1
		propertyFlags = 0xf:
			VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
			VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
			VK_MEMORY_PROPERTY_HOST_CACHED_BIT

VkPhysicalDeviceFeatures:
=========================
	alphaToOne                              = 1
	depthBiasClamp                          = 1
	depthBounds                             = 0
	depthClamp                              = 1
	drawIndirectFirstInstance               = 1
	dualSrcBlend                            = 1
	fillModeNonSolid                        = 1
	fragmentStoresAndAtomics                = 1
	fullDrawIndexUint32                     = 1
	geometryShader                          = 1
	imageCubeArray                          = 1
	independentBlend                        = 1
	inheritedQueries                        = 1
	largePoints                             = 1
	logicOp                                 = 1
	multiDrawIndirect                       = 1
	multiViewport                           = 1
	occlusionQueryPrecise                   = 1
	pipelineStatisticsQuery                 = 1
	robustBufferAccess                      = 1
	samplerAnisotropy                       = 1
	sampleRateShading                       = 1
	shaderClipDistance                      = 1
	shaderCullDistance                      = 1
	shaderFloat64                           = 1
	shaderImageGatherExtended               = 1
	shaderInt16                             = 1
	shaderInt64                             = 1
	shaderSampledImageArrayDynamicIndexing  = 1
	shaderStorageBufferArrayDynamicIndexing = 1
	shaderStorageImageArrayDynamicIndexing  = 1
	shaderStorageImageExtendedFormats       = 1
	shaderStorageImageMultisample           = 0
	shaderStorageImageReadWithoutFormat     = 0
	shaderStorageImageWriteWithoutFormat    = 1
	shaderTessellationAndGeometryPointSize  = 1
	shaderUniformBufferArrayDynamicIndexing = 1
	sparseBinding                           = 0
	sparseResidency2Samples                 = 0
	sparseResidency4Samples                 = 0
	sparseResidency8Samples                 = 0
	sparseResidency16Samples                = 0
	sparseResidencyAliased                  = 0
	sparseResidencyBuffer                   = 0
	sparseResidencyImage2D                  = 0
	sparseResidencyImage3D                  = 0
	shaderResourceMinLod                    = 0
	shaderResourceResidency                 = 0
	tessellationShader                      = 1
	textureCompressionASTC_LDR              = 1
	textureCompressionBC                    = 1
	textureCompressionETC2                  = 1
	variableMultisampleRate                 = 1
	vertexPipelineStoresAndAtomics          = 1
	wideLines                               = 1

Format Properties:
==================
FORMAT_UNDEFINED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R4G4_UNORM_PACK8:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R4G4B4A4_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_B4G4R4A4_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_R5G6B5_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_B5G6R5_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_R5G5B5A1_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B5G5R5A1_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_A1R5G5B5_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_R8_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_SRGB:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_R8G8_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8_SRGB:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R8G8B8_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8_SRGB:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_B8G8R8_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_SNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8_SRGB:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R8G8B8A8_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8G8B8A8_SRGB:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_B8G8R8A8_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_B8G8R8A8_SNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8A8_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8A8_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8A8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8A8_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8A8_SRGB:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_A8B8G8R8_UNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_SNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_USCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_SSCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_UINT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_SINT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A8B8G8R8_SRGB_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_A2R10G10B10_UNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_SNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_USCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_SSCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_UINT_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_SINT_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_UNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_SNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_USCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_SSCALED_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_UINT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2B10G10R10_SINT_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_SNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_USCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_SSCALED:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R16G16B16A16_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32A32_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32A32_SINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32A32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64A64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64A64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R64G64B64A64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_B10G11R11_UFLOAT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_E5B9G9R9_UFLOAT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT

FORMAT_D16_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_X8_D24_UNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D16_UNORM_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D24_UNORM_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D32_SFLOAT_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGB_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGB_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGBA_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGBA_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC2_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC2_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC3_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC3_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC4_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC5_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC6H_UFLOAT_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC6H_SFLOAT_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC7_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC7_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11G11_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11G11_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_4x4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_4x4_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x4_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x10_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x10_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x10_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x10_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x12_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x12_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

Show quality of upscaling in comparison

Show difference quality as a numerical value between original (full size) image and upscaled image in the waif2x implementation comparison chart.

Probably using SSIM. Would be a informative comparison.

没有gpu可以运行吗

waifu2x-ncnn-vulkan.exe运行之后没有结果,也没有报错,是因为我在Windows上没有gpu的原因吗

Defects along the spliting edge

During the practice, I noticed that sometimes there are defects along the spliting edge, as shown here:
image

May be this is caused by the CUnet [results changes with blocks size]. Therefore, maybe techniques like blending should be considered. For example, overlapping several pixels at the edge and blend it with some weight.

May be it could be something like this:
X-axis (increases from left to right):
Weight of Block A[390:400]: [1, 0.9, 0.8, 0.7........0.1]
Weight of Block B[0:10]: [0.1, 0.2, 0.3,................1 ]
RGB_Out = RGB_A x Weight_A + RGB_B x Weight_B

Anyway, I am not sure whether this one would works or not. Maybe advanced curve like the Parabola one would be better. But I guess it would works and may applies to future model updates.

(PS: In stead of weighted blending, I think there are other approachs:
Use larger block and corp edge (Assume difference only happens at the edge)
Supervised Blending, which compares the pictures with original one and get something like penalty (Maybe not stable enough of source is noisy.

Thanks for your excellent work!
Best regards,

more model request

when i have a lot of image, i want to go faster(?)

like
upconv_7_anime_style_art_rgb (upRGB)

simple performance test

A really large portion of the consumed time is for the vulkan runtime initialization

The real processing includes three parts, load png + waifu2x inference + save png

For small-size images, it is under 10% of the total time.

For large-size images, it is around 50% of the total time.

If the vulkan runtime and waifu2x instance can be reused for all the images, we can archive great speedup !

Yeah, 2x ~ 10x times faster !

waifu2x 200x200 to 400x400

waifu2x 1000x1000 to 2000x2000

Option to train your own models?

Hi, I was wondering if you could add or make quick model training example, so we can train models ourselves. Also if possible, then to be able to train on Intel, AMD and Nvidia hardware.

how to compile it on Linux? And how about the library policy?

I want to try it on Linux haha. But it seems like Windows only for "wincodec.h" and "layer_type.h" are included.
BTW, I am working on anime2x which aims at upscaling anime videos. If this version of waifu2x is good enough, I would like to include it in my project (with source codes or compiled libraries). Is that ok?

[Enchancement] 16bit Processing & Output

Request to add 16bit support similar to waifu2x-caffe
8bit input > 16bit processing > 16bit output
16bit input > 16bit processing > 16bit output

Optionally you could also add
8bit input > 16bit processing > dither to 8bit > 8bit output

In particular, denoising with Waifu2x in 16bit can yield superior results to processing entirely in 8bit, especially if you are only using Waifu2x as an intermediary step before further editing or processing.

Error: _wfopen ??? failed ← when call waifu2x outside exe folder

Tried to run any image through waifu2x, but get this error:

>waifu2x-ncnn-vulkan -i i.jpg -o o.png -n 2 -s 2
[0 GeForce GTX 1060 6GB]  queueC=2[8]  queueT=1[2]  memU=4294967295  memDL=7  memHV=9
[0 GeForce GTX 1060 6GB]  fp16p=1  fp16s=1  fp16a=0  int8s=1  int8a=1
_wfopen ??? failed

Does I need any external requirements?

CPU: Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz
GPU: GeForce GTX 1060 6GB
NVIDIA Driver version: 436.02
OS: Windows 10.0.17134 x64

EDIT: with help of gnattu I figured out, what I have that error if call waifu2x outside of exe folder (this folder in PATH variable), this issue only when console in different catalog, than waifu2x-ncnn-vulkan.exe.

Core dump

Arch Linux with git mesa dumps core

Stack trace of thread 3166:
#0  0x00007f5e38012755 raise (libc.so.6)
#1  0x00007f5e37ffd851 abort (libc.so.6)
#2  0x00007f5e37983486 n/a (libvulkan_radeon.so)
#3  0x00007f5e37a604c4 n/a (libvulkan_radeon.so)
#4  0x00007f5e37a25528 n/a (libvulkan_radeon.so)
#5  0x00007f5e37a103a4 n/a (libvulkan_radeon.so)
#6  0x00007f5e37a10b30 n/a (libvulkan_radeon.so)
#7  0x00007f5e37a05bd8 n/a (libvulkan_radeon.so)
#8  0x00007f5e37a0669a n/a (libvulkan_radeon.so)
#9  0x00007f5e37a0d004 n/a (libvulkan_radeon.so)
#10 0x00005638f9bbf2df n/a (waifu2x-ncnn-vulkan)
#11 0x00005638f9bbf6f6 n/a (waifu2x-ncnn-vulkan)
#12 0x00005638f9c07190 n/a (waifu2x-ncnn-vulkan)
#13 0x00005638f9bba0d2 n/a (waifu2x-ncnn-vulkan)
#14 0x00005638f9bba22d n/a (waifu2x-ncnn-vulkan)
#15 0x00005638f9b982df _ZN7Waifu2x4loadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_ (waifu2x-ncnn-vulkan)
#16 0x00005638f9b70c43 main (waifu2x-ncnn-vulkan)
#17 0x00007f5e37ffeee3 __libc_start_main (libc.so.6)
#18 0x00005638f9b7194e _start (waifu2x-ncnn-vulkan)

Stack trace of thread 3173:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3170:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3168:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3167:
#0  0x00007f5e38520415 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#1  0x00007f5e37b1368b n/a (libvulkan_radeon.so)
#2  0x00007f5e37b13297 n/a (libvulkan_radeon.so)
#3  0x00007f5e3851a57f start_thread (libpthread.so.0)
#4  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3172:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3171:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3169:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3177:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3175:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3174:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3178:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3180:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3176:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3181:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3182:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

Stack trace of thread 3179:
#0  0x00007f5e3854f7ee futex_wait (libgomp.so.1)
#1  0x00007f5e3854ced8 gomp_simple_barrier_wait (libgomp.so.1)
#2  0x00007f5e3851a57f start_thread (libpthread.so.0)
#3  0x00007f5e380d40e3 __clone (libc.so.6)

编译源码提示缺少 ncnnConfig.cmake&ncnn-config.cmake

如题,我尝试下载源码后使用cmake进行编译, 出现如下提示


CMake Error at CMakeLists.txt:68 (find_package):
By not providing "Findncnn.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "ncnn", but
CMake did not find one.

Could not find a package configuration file provided by "ncnn" with any of
the following names:

ncnnConfig.cmake
ncnn-config.cmake

Add the installation prefix of "ncnn" to CMAKE_PREFIX_PATH or set
"ncnn_DIR" to a directory containing one of the above files. If "ncnn"
provides a separate development package or SDK, be sure it has been
installed.


已经按照ncnn的安装教程"Build for Windows x64 using Visual Studio Community 2017"在Windows 10 x64环境下安装ncnn, 安装时也没有报错, 但是文件夹下的确也找不到ncnnConfig.cmake&ncnn-config.cmake, 请问是什么情况???

注: 已经修改了CMakeLists.txt第67行的路径,但是没有文件,所以改了也没有什么用的样子.....

The enlarged result is different from waifu2x-caffe.

Ryzen 2400G
[0 AMD Radeon(TM) RX Vega 11 Graphics] queueC=1 queueT=2 memU=2 memDL=0 memHV=1
[0 AMD Radeon(TM) RX Vega 11 Graphics] fp16s=1 fp16a=1 int8s=1 int8a=1

input file
test

waifu2x-ncnn-vulkan ver 20190407

waifu2x.exe "%~1" "%~dpn1-ncnn-vulkan-2x.png" -1 2
waifu2x.exe "%~dpn1-ncnn-vulkan-2x.png" "%~dpn1-ncnn-vulkan-4x.png" -1 2

test-ncnn-vulkan-4x

waifu2x-caffe ver 1.2.0.2

waifu2x-caffe-cui.exe -t 0 -b 1 -c 128 -p cpu --model_dir ./models/cunet -s 2 -m scale -i "%~1" -o "%~dpn1-caffe-2x.png"
waifu2x-caffe-cui.exe -t 0 -b 1 -c 128 -p cpu --model_dir ./models/cunet -s 2 -m scale -i "%~dpn1-caffe-2x.png" -o "%~dpn1-caffe-4x.png"

test-caffe-4x

Conversion fails in ver 20190414.

Windows 10
Ryzen 2400G

waifu2x.exe "C:\waifu2x\test.png" "C:\waifu2x\test(CUnet)(noise_scale)(Level1)(x2).png" 1 2 200

[0 AMD Radeon(TM) RX Vega 11 Graphics] queueC=1 queueT=2 memU=2 memDL=0 memHV=1
[0 AMD Radeon(TM) RX Vega 11 Graphics] fp16s=1 fp16a=0 int8s=1 int8a=0
vkCreateShaderModule failed -3
local_shader_module 0000000000000000 waifu2x_preproc_int8s created

Conversion is successful in versions up to efd54ee.
efd54ee までのバージョンでは変換に成功します。

Windows下图片拉伸失败

Nvidia驱动程序版本 435.27,GTX1050
出现问题的waifu2x版本20190630
运行正常的waifu2x版本20190413

PS E:\新建文件夹\waifu2x-ncnn-vulkan-20190630> .\waifu2x-ncnn-vulkan.exe -i xxx.png -o xxx2.png -n 1 -s 2
[0 GeForce GTX 1050]  queueC=2[8]  queueT=1[2]  memU=4294967295  memDL=7  memHV=9
[0 GeForce GTX 1050]  fp16p=1  fp16s=1  fp16a=0  int8s=1  int8a=1
[1 Intel(R) HD Graphics 530]  queueC=0[1]  queueT=0[1]  memU=0  memDL=0  memHV=0
[1 Intel(R) HD Graphics 530]  fp16p=1  fp16s=1  fp16a=1  int8s=1  int8a=1
vkAllocateMemory failed -2
vkQueueSubmit failed -4
vkQueueSubmit failed -4
vkQueueSubmit failed -4
vkQueueSubmit failed -4
vkQueueSubmit failed -4
vkQueueSubmit failed -4
PS E:\新建文件夹\waifu2x-ncnn-vulkan-20190630>

xxx2.png 为纯黑色图片,图片大小为 xxx.png 的2倍

PS E:\新建文件夹\waifu2x-ncnn-vulkan-20190630> .\waifu2x-ncnn-vulkan.exe -i xxx.png -o xxx2.png -n 1 -s 1
[0 GeForce GTX 1050]  queueC=2[8]  queueT=1[2]  memU=4294967295  memDL=7  memHV=9
[0 GeForce GTX 1050]  fp16p=1  fp16s=1  fp16a=0  int8s=1  int8a=1
[1 Intel(R) HD Graphics 530]  queueC=0[1]  queueT=0[1]  memU=0  memDL=0  memHV=0
[1 Intel(R) HD Graphics 530]  fp16p=1  fp16s=1  fp16a=1  int8s=1  int8a=1
PS E:\新建文件夹\waifu2x-ncnn-vulkan-20190630>

xxx2.png 输出正常,未被拉伸,已降噪

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.