diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3e4e445 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# http://editorconfig.org + +root = true + +[*.js] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..41ad922 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "parserOptions": { + "ecmaVersion": 6 + }, + "env": { + "es6": true, + "node": true, + "mocha": true + }, + "extends": "eslint:recommended", + "rules": { + "semi": ["error", "never"], + "indent": ["error", 4], + "linebreak-style": ["error", "unix"], + "comma-dangle": ["error", "always-multiline"], + "quotes": ["error", "single"], + "camelcase": ["error", {"properties": "always"}], + "max-len": ["error", 140], + "strict": ["error", "global"] + } +} diff --git a/.gitignore b/.gitignore index 5148e52..e0c95a1 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ jspm_packages # Optional REPL history .node_repl_history +.vs/LugBench-API/v15/.suo +.vs/ProjectSettings.json +.vs/slnx.sqlite diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index c075a02..0000000 --- a/.jshintignore +++ /dev/null @@ -1,2 +0,0 @@ -# Folders to ignore -node_modules/ diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 800605a..0000000 --- a/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "esversion": 6, - "camelcase": true, - "node": true, - "unused": true, - "undef": true, - "strict": true, - "globals": { - // Globals for tests - "describe": true, - "it": true, - "before": true, - "after": true - } -} diff --git a/README.md b/README.md index 8de5296..a7be334 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ # LugBench-API ## Table of contents +- [Continuous integration](#continuous-integration) - [Prerequisites](#prerequisites) - [Clone the repository](#clone-the-repository) - [Installation](#installation) - [Run the API](#run-the-api) - [Routes](#routes) +# Continuous integration + +### restify-api +[![CircleCI](https://circleci.com/gh/Lugdunum3D/LugBench-API/tree/restify-api.svg?style=shield)](https://circleci.com/gh/Lugdunum3D/LugBench-API/tree/restify-api) + # Prerequisites Program | Version @@ -45,10 +51,17 @@ export PORT=3000 # Routes -Routes | Description ----------------------------- | ----------- -`GET /api/:version/gpus` | Return an array containing all existing gpus -`GET /api/:version/gpus/:id` | Return a specific gpu with a specific id -`PUT /api/:version/gpus` | Add a new gpu - -Details for a Gpu can be found [here](./v1/models/gpu.js) +Routes | Description +--------------------- | ----------- +`GET /devices` | Return an array containing all existing devices +`GET /devices/:id` | Return a specific device with a specific id +`POST /devices` | Add a new device +`GET /scenarios` | Return an array containing all existing scenarios +`GET /scenarios/:id` | Return a specific scenario with a specific id +`GET /scores` | Return an array containing all existing scores +`GET /scores/:id` | Return a specific score with a specific id +`POST /scores` | Add a new score + +Details for a device can be found [here](./models/device.js) +Details for a scenario can be found [here](./models/scenario.js) +Details for a score can be found [here](./models/score.js) diff --git a/assets/mocks/devices/530.json b/assets/mocks/devices/530.json new file mode 100644 index 0000000..abb6aaf --- /dev/null +++ b/assets/mocks/devices/530.json @@ -0,0 +1,3334 @@ +{ + "name": "Intel(R) HD Graphics 530 (Skylake GT2)", + "os": "Linux", + "deviceId": 6427, + "vendorId": 32902, + "driverVersion": 1, + "vulkanInfo": { + "extensions": [{ + "extensionName": "VK_KHR_swapchain", + "specVersion": 68 + }, + { + "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge", + "specVersion": 1 + } + ], + "features": { + "alphaToOne": true, + "depthBiasClamp": true, + "depthBounds": false, + "depthClamp": true, + "drawIndirectFirstInstance": true, + "dualSrcBlend": true, + "fillModeNonSolid": true, + "fragmentStoresAndAtomics": true, + "fullDrawIndexUint32": true, + "geometryShader": true, + "imageCubeArray": true, + "independentBlend": true, + "inheritedQueries": false, + "largePoints": true, + "logicOp": true, + "multiDrawIndirect": false, + "multiViewport": true, + "occlusionQueryPrecise": true, + "pipelineStatisticsQuery": false, + "robustBufferAccess": true, + "sampleRateShading": true, + "samplerAnisotropy": true, + "shaderClipDistance": true, + "shaderCullDistance": true, + "shaderFloat64": true, + "shaderImageGatherExtended": true, + "shaderInt16": false, + "shaderInt64": false, + "shaderResourceMinLod": false, + "shaderResourceResidency": false, + "shaderSampledImageArrayDynamicIndexing": true, + "shaderStorageBufferArrayDynamicIndexing": true, + "shaderStorageImageArrayDynamicIndexing": true, + "shaderStorageImageExtendedFormats": true, + "shaderStorageImageMultisample": false, + "shaderStorageImageReadWithoutFormat": false, + "shaderStorageImageWriteWithoutFormat": false, + "shaderTessellationAndGeometryPointSize": true, + "shaderUniformBufferArrayDynamicIndexing": true, + "sparseBinding": false, + "sparseResidency16Samples": false, + "sparseResidency2Samples": false, + "sparseResidency4Samples": false, + "sparseResidency8Samples": false, + "sparseResidencyAliased": false, + "sparseResidencyBuffer": false, + "sparseResidencyImage2D": false, + "sparseResidencyImage3D": false, + "tessellationShader": true, + "textureCompressionASTC_LDR": true, + "textureCompressionBC": true, + "textureCompressionETC2": true, + "variableMultisampleRate": false, + "vertexPipelineStoresAndAtomics": true, + "wideLines": true + }, + "formats": [ + [ + "VK_FORMAT_ASTC_12x12_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_12x12_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_12x10_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_12x10_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x10_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x10_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_10x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_8x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_6x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_6x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_6x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_6x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_5x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_5x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_5x4_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_5x4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_4x4_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ASTC_4x4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_EAC_R11G11_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_EAC_R11G11_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_EAC_R11_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_EAC_R11_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC7_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC7_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC6H_SFLOAT_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC6H_UFLOAT_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC5_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC4_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC3_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC3_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC2_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC2_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC1_RGBA_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC1_RGBA_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC1_RGB_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_BC1_RGB_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_D32_SFLOAT_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_D24_UNORM_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_D16_UNORM_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_D32_SFLOAT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_X8_D24_UNORM_PACK32", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_D16_UNORM", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [ + "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_E5B9G9R9_UFLOAT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_B10G11R11_UFLOAT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R64G64B64A64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64A64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64A64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R32G32B32A32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32G32B32A32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32G32B32A32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32G32B32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R32G32B32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R32G32B32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R32G32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32G32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32G32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32_SINT", + { + "bufferFeatures": [ + "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" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R32_UINT", + { + "bufferFeatures": [ + "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" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16B16A16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16B16A16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_B8G8R8A8_SNORM", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8B8A8_SRGB", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8B8A8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8B8A8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8B8A8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8A8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8A8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8B8A8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_B8G8R8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SSCALED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_USCALED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SNORM", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_UNORM", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SRGB", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R8G8B8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R8G8B8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R8G8B8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R8G8B8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R8G8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A1R5G5B5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_B5G5R5A1_UNORM_PACK16", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R5G5B5A1_UNORM_PACK16", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B5G6R5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R5G6B5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_UNDEFINED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R4G4_UNORM_PACK8", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R4G4B4A4_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_B4G4R4A4_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R8G8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_B8G8R8A8_USCALED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SSCALED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SRGB", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A8B8G8R8_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A8B8G8R8_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A8B8G8R8_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A8B8G8R8_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A8B8G8R8_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A8B8G8R8_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A8B8G8R8_SRGB_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A2R10G10B10_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A2R10G10B10_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A2B10G10R10_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_A2B10G10R10_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16B16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R16G16B16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R16G16B16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R16G16B16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT" + ] + } + ], + [ + "VK_FORMAT_R16G16B16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + ], + [ + "VK_FORMAT_R16G16B16A16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16B16A16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_R16G16B16A16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16A16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16A16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ] + ], + "memory": { + "memoryHeaps": [{ + "flags": [ + "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT" + ], + "size": 3208289280 + }], + "memoryTypes": [{ + "heapIndex": 0, + "propertyFlags": [ + "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT", + "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", + "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", + "VK_MEMORY_PROPERTY_HOST_CACHED_BIT" + ] + }] + }, + "properties": { + "apiVersion": { + "major": 1, + "minor": 0, + "patch": 5 + }, + "deviceID": 6427, + "deviceName": "Intel(R) HD Graphics 530 (Skylake GT2)", + "deviceType": "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", + "driverVersion": 1, + "limits": { + "bufferImageGranularity": 64, + "discreteQueuePriorities": 1, + "framebufferColorSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "framebufferDepthSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "framebufferNoAttachmentsSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "framebufferStencilSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "lineWidthGranularity": 0.0078125, + "lineWidthRange": [ + 0.0, + 7.9921875 + ], + "maxBoundDescriptorSets": 8, + "maxClipDistances": 8, + "maxColorAttachments": 8, + "maxCombinedClipAndCullDistances": 8, + "maxComputeSharedMemorySize": 32768, + "maxComputeWorkGroupCount": [ + 65535, + 65535, + 65535 + ], + "maxComputeWorkGroupInvocations": 896, + "maxComputeWorkGroupSize": [ + 896, + 896, + 896 + ], + "maxCullDistances": 8, + "maxDescriptorSetInputAttachments": 256, + "maxDescriptorSetSampledImages": 256, + "maxDescriptorSetSamplers": 256, + "maxDescriptorSetStorageBuffers": 256, + "maxDescriptorSetStorageBuffersDynamic": 8, + "maxDescriptorSetStorageImages": 256, + "maxDescriptorSetUniformBuffers": 256, + "maxDescriptorSetUniformBuffersDynamic": 8, + "maxDrawIndexedIndexValue": 4294967295, + "maxDrawIndirectCount": 4294967295, + "maxFragmentCombinedOutputResources": 8, + "maxFragmentDualSrcAttachments": 1, + "maxFragmentInputComponents": 128, + "maxFragmentOutputAttachments": 8, + "maxFramebufferHeight": 16384, + "maxFramebufferLayers": 2048, + "maxFramebufferWidth": 16384, + "maxGeometryInputComponents": 64, + "maxGeometryOutputComponents": 128, + "maxGeometryOutputVertices": 256, + "maxGeometryShaderInvocations": 32, + "maxGeometryTotalOutputComponents": 1024, + "maxImageArrayLayers": 2048, + "maxImageDimension1D": 16384, + "maxImageDimension2D": 16384, + "maxImageDimension3D": 2048, + "maxImageDimensionCube": 16384, + "maxInterpolationOffset": 0.4375, + "maxMemoryAllocationCount": 4294967295, + "maxPerStageDescriptorInputAttachments": 64, + "maxPerStageDescriptorSampledImages": 64, + "maxPerStageDescriptorSamplers": 64, + "maxPerStageDescriptorStorageBuffers": 64, + "maxPerStageDescriptorStorageImages": 64, + "maxPerStageDescriptorUniformBuffers": 64, + "maxPerStageResources": 128, + "maxPushConstantsSize": 128, + "maxSampleMaskWords": 1, + "maxSamplerAllocationCount": 65536, + "maxSamplerAnisotropy": 16.0, + "maxSamplerLodBias": 16.0, + "maxStorageBufferRange": 1073741824, + "maxTessellationControlPerPatchOutputComponents": 128, + "maxTessellationControlPerVertexInputComponents": 128, + "maxTessellationControlPerVertexOutputComponents": 128, + "maxTessellationControlTotalOutputComponents": 2048, + "maxTessellationEvaluationInputComponents": 128, + "maxTessellationEvaluationOutputComponents": 128, + "maxTessellationGenerationLevel": 64, + "maxTessellationPatchSize": 32, + "maxTexelBufferElements": 134217728, + "maxTexelGatherOffset": 31, + "maxTexelOffset": 7, + "maxUniformBufferRange": 134217728, + "maxVertexInputAttributeOffset": 2047, + "maxVertexInputAttributes": 32, + "maxVertexInputBindingStride": 2048, + "maxVertexInputBindings": 32, + "maxVertexOutputComponents": 128, + "maxViewportDimensions": [ + 16384, + 16384 + ], + "maxViewports": 16, + "minInterpolationOffset": -0.5, + "minMemoryMapAlignment": 4096, + "minStorageBufferOffsetAlignment": 4, + "minTexelBufferOffsetAlignment": 1, + "minTexelGatherOffset": -32, + "minTexelOffset": -8, + "minUniformBufferOffsetAlignment": 16, + "mipmapPrecisionBits": 4, + "nonCoherentAtomSize": 64, + "optimalBufferCopyOffsetAlignment": 128, + "optimalBufferCopyRowPitchAlignment": 128, + "pointSizeGranularity": 0.125, + "pointSizeRange": [ + 0.125, + 255.875 + ], + "sampledImageColorSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "sampledImageDepthSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "sampledImageIntegerSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT" + ], + "sampledImageStencilSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "sparseAddressSpaceSize": 0, + "standardSampleLocations": true, + "storageImageSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT" + ], + "strictLines": false, + "subPixelInterpolationOffsetBits": 4, + "subPixelPrecisionBits": 4, + "subTexelPrecisionBits": 4, + "timestampComputeAndGraphics": false, + "timestampPeriod": 83.3330001831055, + "viewportBoundsRange": [-32768.0, + 32767.0 + ], + "viewportSubPixelBits": 13 + }, + "pipelineCacheUUID": [ + 97, + 110, + 118, + 45, + 49, + 52, + 57, + 51, + 52, + 55, + 57, + 49, + 52, + 54, + 0, + 0 + ], + "sparseProperties": { + "residencyAlignedMipSize": false, + "residencyNonResidentStrict": false, + "residencyStandard2DBlockShape": false, + "residencyStandard2DMultisampleBlockShape": false, + "residencyStandard3DBlockShape": false + }, + "vendorID": 32902 + }, + "queues": [{ + "minImageTransferGranularity": { + "depth": 1, + "height": 1, + "width": 1 + }, + "queueCount": 1, + "queueFlags": [ + "VK_QUEUE_GRAPHICS_BIT", + "VK_QUEUE_COMPUTE_BIT", + "VK_QUEUE_TRANSFER_BIT" + ], + "timestampValidBits": 36 + }], + "swapchain": { + "maxImageArrayLayers": 1, + "minImageCount": 2, + "maxImageCount": 0, + "formats": [ + "VK_FORMAT_B8G8R8A8_SRGB", + "VK_FORMAT_" + ], + "presentModes": [ + "VK_PRESENT_MODE_IMMEDIATE_KHR", + "VK_PRESENT_MODE_MAILBOX_KHR", + "VK_PRESENT_MODE_FIFO_KHR" + ], + "supportedTransforms": [ + "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" + ], + "surfaceExtension": "VK_KHR_xlib_surface" + } + } +} diff --git a/assets/mocks/devices/960M.json b/assets/mocks/devices/960M.json new file mode 100644 index 0000000..cde89d7 --- /dev/null +++ b/assets/mocks/devices/960M.json @@ -0,0 +1,3421 @@ +{ + "name": "GeForce GTX 960M", + "os": "Windows", + "deviceId": 5159, + "vendorId": 4318, + "driverVersion": 378520, + "vulkanInfo": { + "extensions": [ + { + "extensionName": "VK_KHR_swapchain", + "specVersion": 1 + }, + { + "extensionName": "VK_KHR_display_swapchain", + "specVersion": 1 + }, + { + "extensionName": "VK_KHR_maintenance1", + "specVersion": 1 + }, + { + "extensionName": "VK_KHR_shader_draw_parameters", + "specVersion": 1 + }, + { + "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge", + "specVersion": 1 + }, + { + "extensionName": "VK_EXT_shader_subgroup_ballot", + "specVersion": 1 + }, + { + "extensionName": "VK_EXT_shader_subgroup_vote", + "specVersion": 1 + }, + { + "extensionName": "VK_NV_dedicated_allocation", + "specVersion": 1 + }, + { + "extensionName": "VK_NV_external_memory", + "specVersion": 1 + }, + { + "extensionName": "VK_NV_glsl_shader", + "specVersion": 1 + }, + { + "extensionName": "VK_NVX_device_generated_commands", + "specVersion": 1 + } + ], + "features": { + "alphaToOne": true, + "depthBiasClamp": true, + "depthBounds": true, + "depthClamp": true, + "drawIndirectFirstInstance": true, + "dualSrcBlend": true, + "fillModeNonSolid": true, + "fragmentStoresAndAtomics": true, + "fullDrawIndexUint32": true, + "geometryShader": true, + "imageCubeArray": true, + "independentBlend": true, + "inheritedQueries": true, + "largePoints": true, + "logicOp": true, + "multiDrawIndirect": true, + "multiViewport": true, + "occlusionQueryPrecise": true, + "pipelineStatisticsQuery": true, + "robustBufferAccess": true, + "sampleRateShading": true, + "samplerAnisotropy": true, + "shaderClipDistance": true, + "shaderCullDistance": true, + "shaderFloat64": true, + "shaderImageGatherExtended": true, + "shaderInt16": false, + "shaderInt64": true, + "shaderResourceMinLod": true, + "shaderResourceResidency": true, + "shaderSampledImageArrayDynamicIndexing": true, + "shaderStorageBufferArrayDynamicIndexing": true, + "shaderStorageImageArrayDynamicIndexing": true, + "shaderStorageImageExtendedFormats": true, + "shaderStorageImageMultisample": true, + "shaderStorageImageReadWithoutFormat": true, + "shaderStorageImageWriteWithoutFormat": true, + "shaderTessellationAndGeometryPointSize": true, + "shaderUniformBufferArrayDynamicIndexing": true, + "sparseBinding": true, + "sparseResidency16Samples": true, + "sparseResidency2Samples": true, + "sparseResidency4Samples": true, + "sparseResidency8Samples": true, + "sparseResidencyAliased": true, + "sparseResidencyBuffer": true, + "sparseResidencyImage2D": true, + "sparseResidencyImage3D": true, + "tessellationShader": true, + "textureCompressionASTC_LDR": false, + "textureCompressionBC": true, + "textureCompressionETC2": false, + "variableMultisampleRate": true, + "vertexPipelineStoresAndAtomics": true, + "wideLines": true + }, + "formats": [ + [ + "VK_FORMAT_ASTC_12x12_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_12x12_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_12x10_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_12x10_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x10_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x10_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_10x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_8x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_6x6_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_6x6_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_6x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_6x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_5x5_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_5x5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_5x4_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_5x4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_4x4_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ASTC_4x4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_EAC_R11G11_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_EAC_R11G11_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_EAC_R11_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_EAC_R11_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_BC7_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC7_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC6H_SFLOAT_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC6H_UFLOAT_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC5_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC5_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC4_SNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC4_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC3_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC3_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC2_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC2_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC1_RGBA_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC1_RGBA_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC1_RGB_SRGB_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_BC1_RGB_UNORM_BLOCK", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_D32_SFLOAT_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" + ] + } + ], + [ + "VK_FORMAT_D24_UNORM_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" + ] + } + ], + [ + "VK_FORMAT_D16_UNORM_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_S8_UINT", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR", + "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" + ] + } + ], + [ + "VK_FORMAT_D32_SFLOAT", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" + ] + } + ], + [ + "VK_FORMAT_X8_D24_UNORM_PACK32", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" + ] + } + ], + [ + "VK_FORMAT_D16_UNORM", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" + ] + } + ], + [ + "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B10G11R11_UFLOAT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R64G64B64A64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64A64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64A64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64B64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64G64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R64_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R32G32B32A32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32G32B32A32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32G32B32A32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32G32B32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R32G32B32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R32G32B32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R32G32_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32G32_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32G32_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32_SFLOAT", + { + "bufferFeatures": [ + "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" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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_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" + ] + } + ], + [ + "VK_FORMAT_R32_SINT", + { + "bufferFeatures": [ + "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" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R32_UINT", + { + "bufferFeatures": [ + "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" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16B16A16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16B16A16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8A8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8B8A8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8B8A8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8B8A8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8B8A8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8A8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8A8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8B8A8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8B8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A1R5G5B5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B5G5R5A1_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R5G5B5A1_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B5G6R5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R5G6B5_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_UNDEFINED", + { + "bufferFeatures": [], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R4G4_UNORM_PACK8", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R4G4B4A4_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B4G4R4A4_UNORM_PACK16", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R8G8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R8G8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8A8_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_B8G8R8A8_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_B8G8R8A8_SRGB", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A8B8G8R8_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A8B8G8R8_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A8B8G8R8_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A8B8G8R8_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A8B8G8R8_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A8B8G8R8_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A8B8G8R8_SRGB_PACK32", + { + "bufferFeatures": [], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A2R10G10B10_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A2R10G10B10_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2R10G10B10_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A2R10G10B10_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_UNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A2B10G10R10_SNORM_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_USCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_SSCALED_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_A2B10G10R10_UINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_A2B10G10R10_SINT_PACK32", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16B16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_SINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16_SFLOAT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16A16_UNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16B16A16_SNORM", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ], + [ + "VK_FORMAT_R16G16B16A16_USCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16A16_SSCALED", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [], + "optimalTilingFeatures": [] + } + ], + [ + "VK_FORMAT_R16G16B16A16_UINT", + { + "bufferFeatures": [ + "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", + "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" + ], + "linearTilingFeatures": [ + "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" + ], + "optimalTilingFeatures": [ + "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" + ] + } + ] + ], + "memory": { + "memoryHeaps": [ + { + "flags": [ + "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT" + ], + "size": 4294967296 + }, + { + "flags": [], + "size": 12537090048 + } + ], + "memoryTypes": [ + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 1, + "propertyFlags": [] + }, + { + "heapIndex": 0, + "propertyFlags": [ + "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" + ] + }, + { + "heapIndex": 0, + "propertyFlags": [ + "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" + ] + }, + { + "heapIndex": 1, + "propertyFlags": [ + "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", + "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" + ] + }, + { + "heapIndex": 1, + "propertyFlags": [ + "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", + "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", + "VK_MEMORY_PROPERTY_HOST_CACHED_BIT" + ] + } + ] + }, + "properties": { + "apiVersion": { + "major": 1, + "minor": 0, + "patch": 37 + }, + "deviceID": 5159, + "deviceName": "GeForce GTX 965M", + "deviceType": "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", + "driverVersion": 378520, + "limits": { + "bufferImageGranularity": 1024, + "discreteQueuePriorities": 2, + "framebufferColorSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "framebufferDepthSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "framebufferNoAttachmentsSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "framebufferStencilSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "lineWidthGranularity": 0.125, + "lineWidthRange": [ + 0.5, + 10.0 + ], + "maxBoundDescriptorSets": 8, + "maxClipDistances": 8, + "maxColorAttachments": 8, + "maxCombinedClipAndCullDistances": 8, + "maxComputeSharedMemorySize": 49152, + "maxComputeWorkGroupCount": [ + 2147483647, + 65535, + 65535 + ], + "maxComputeWorkGroupInvocations": 1536, + "maxComputeWorkGroupSize": [ + 1536, + 1024, + 64 + ], + "maxCullDistances": 8, + "maxDescriptorSetInputAttachments": 8, + "maxDescriptorSetSampledImages": 49152, + "maxDescriptorSetSamplers": 4000, + "maxDescriptorSetStorageBuffers": 96, + "maxDescriptorSetStorageBuffersDynamic": 96, + "maxDescriptorSetStorageImages": 49152, + "maxDescriptorSetUniformBuffers": 72, + "maxDescriptorSetUniformBuffersDynamic": 72, + "maxDrawIndexedIndexValue": 4294967295, + "maxDrawIndirectCount": 4294967295, + "maxFragmentCombinedOutputResources": 16, + "maxFragmentDualSrcAttachments": 1, + "maxFragmentInputComponents": 128, + "maxFragmentOutputAttachments": 8, + "maxFramebufferHeight": 16384, + "maxFramebufferLayers": 2048, + "maxFramebufferWidth": 16384, + "maxGeometryInputComponents": 128, + "maxGeometryOutputComponents": 128, + "maxGeometryOutputVertices": 1024, + "maxGeometryShaderInvocations": 32, + "maxGeometryTotalOutputComponents": 1024, + "maxImageArrayLayers": 2048, + "maxImageDimension1D": 16384, + "maxImageDimension2D": 16384, + "maxImageDimension3D": 2048, + "maxImageDimensionCube": 16384, + "maxInterpolationOffset": 0.4375, + "maxMemoryAllocationCount": 4294967295, + "maxPerStageDescriptorInputAttachments": 8, + "maxPerStageDescriptorSampledImages": 8192, + "maxPerStageDescriptorSamplers": 4000, + "maxPerStageDescriptorStorageBuffers": 16, + "maxPerStageDescriptorStorageImages": 8192, + "maxPerStageDescriptorUniformBuffers": 12, + "maxPerStageResources": 24612, + "maxPushConstantsSize": 256, + "maxSampleMaskWords": 1, + "maxSamplerAllocationCount": 4000, + "maxSamplerAnisotropy": 16.0, + "maxSamplerLodBias": 15.0, + "maxStorageBufferRange": 2147483647, + "maxTessellationControlPerPatchOutputComponents": 120, + "maxTessellationControlPerVertexInputComponents": 128, + "maxTessellationControlPerVertexOutputComponents": 128, + "maxTessellationControlTotalOutputComponents": 4216, + "maxTessellationEvaluationInputComponents": 128, + "maxTessellationEvaluationOutputComponents": 128, + "maxTessellationGenerationLevel": 64, + "maxTessellationPatchSize": 32, + "maxTexelBufferElements": 134217728, + "maxTexelGatherOffset": 31, + "maxTexelOffset": 7, + "maxUniformBufferRange": 65536, + "maxVertexInputAttributeOffset": 2047, + "maxVertexInputAttributes": 32, + "maxVertexInputBindingStride": 2048, + "maxVertexInputBindings": 32, + "maxVertexOutputComponents": 128, + "maxViewportDimensions": [ + 16384, + 16384 + ], + "maxViewports": 16, + "minInterpolationOffset": -0.5, + "minMemoryMapAlignment": 64, + "minStorageBufferOffsetAlignment": 32, + "minTexelBufferOffsetAlignment": 16, + "minTexelGatherOffset": -32, + "minTexelOffset": -8, + "minUniformBufferOffsetAlignment": 256, + "mipmapPrecisionBits": 8, + "nonCoherentAtomSize": 64, + "optimalBufferCopyOffsetAlignment": 1, + "optimalBufferCopyRowPitchAlignment": 1, + "pointSizeGranularity": 0.125, + "pointSizeRange": [ + 1.0, + 189.875 + ], + "sampledImageColorSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "sampledImageDepthSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "sampledImageIntegerSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "sampledImageStencilSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT", + "VK_SAMPLE_COUNT_16_BIT" + ], + "sparseAddressSpaceSize": 18446744073709551615, + "standardSampleLocations": true, + "storageImageSampleCounts": [ + "VK_SAMPLE_COUNT_1_BIT", + "VK_SAMPLE_COUNT_2_BIT", + "VK_SAMPLE_COUNT_4_BIT", + "VK_SAMPLE_COUNT_8_BIT" + ], + "strictLines": true, + "subPixelInterpolationOffsetBits": 4, + "subPixelPrecisionBits": 8, + "subTexelPrecisionBits": 8, + "timestampComputeAndGraphics": true, + "timestampPeriod": 1.0, + "viewportBoundsRange": [ + -32768.0, + 32768.0 + ], + "viewportSubPixelBits": 8 + }, + "pipelineCacheUUID": [ + 241, + 161, + 212, + 194, + 251, + 164, + 211, + 65, + 111, + 27, + 138, + 36, + 240, + 87, + 71, + 227 + ], + "sparseProperties": { + "residencyAlignedMipSize": false, + "residencyNonResidentStrict": true, + "residencyStandard2DBlockShape": true, + "residencyStandard2DMultisampleBlockShape": true, + "residencyStandard3DBlockShape": true + }, + "vendorID": 4318 + }, + "queues": [ + { + "minImageTransferGranularity": { + "depth": 1, + "height": 1, + "width": 1 + }, + "queueCount": 16, + "queueFlags": [ + "VK_QUEUE_GRAPHICS_BIT", + "VK_QUEUE_COMPUTE_BIT", + "VK_QUEUE_TRANSFER_BIT", + "VK_QUEUE_SPARSE_BINDING_BIT" + ], + "timestampValidBits": 64 + }, + { + "minImageTransferGranularity": { + "depth": 1, + "height": 1, + "width": 1 + }, + "queueCount": 1, + "queueFlags": [ + "VK_QUEUE_TRANSFER_BIT" + ], + "timestampValidBits": 64 + } + ], + "swapchain": { + "maxImageArrayLayers": 1, + "minImageCount": 2, + "maxImageCount": 0, + "formats": [ + "VK_FORMAT_B8G8R8A8_SRGB", + "VK_FORMAT_" + ], + "presentModes": [ + "VK_PRESENT_MODE_IMMEDIATE_KHR", + "VK_PRESENT_MODE_MAILBOX_KHR", + "VK_PRESENT_MODE_FIFO_KHR" + ], + "supportedTransforms": [ + "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" + ], + "surfaceExtension": "VK_KHR_win32_surface" + } + } +} diff --git a/assets/mocks/scenarios/enterprise.json b/assets/mocks/scenarios/enterprise.json new file mode 100644 index 0000000..f5a0668 --- /dev/null +++ b/assets/mocks/scenarios/enterprise.json @@ -0,0 +1,4 @@ +{ + "name": "Enterprise scene", + "description": "Nulla nisl." +} diff --git a/assets/mocks/scenarios/force.json b/assets/mocks/scenarios/force.json new file mode 100644 index 0000000..e1d1111 --- /dev/null +++ b/assets/mocks/scenarios/force.json @@ -0,0 +1,4 @@ +{ + "name": "Force scene", + "description": "Suspendisse accumsan tortor quis turpis." +} diff --git a/assets/mocks/scores/120.json b/assets/mocks/scores/120.json new file mode 100644 index 0000000..2ecc94c --- /dev/null +++ b/assets/mocks/scores/120.json @@ -0,0 +1,5 @@ +{ + "nbFrames": 12000, + "averageFps": 120.00, + "date": "2017-07-04T01:38:21.727Z" +} diff --git a/assets/mocks/scores/160.json b/assets/mocks/scores/160.json new file mode 100644 index 0000000..17e051e --- /dev/null +++ b/assets/mocks/scores/160.json @@ -0,0 +1,5 @@ +{ + "nbFrames": 16000, + "averageFps": 160.00, + "date": "2017-07-04T01:38:21.727Z" +} diff --git a/assets/mocks/scores/40.json b/assets/mocks/scores/40.json new file mode 100644 index 0000000..df2e247 --- /dev/null +++ b/assets/mocks/scores/40.json @@ -0,0 +1,5 @@ +{ + "nbFrames": 4000, + "averageFps": 40.00, + "date": "2017-07-04T01:38:21.727Z" +} diff --git a/assets/mocks/scores/80.json b/assets/mocks/scores/80.json new file mode 100644 index 0000000..f524d75 --- /dev/null +++ b/assets/mocks/scores/80.json @@ -0,0 +1,5 @@ +{ + "nbFrames": 8000, + "averageFps": 80.00, + "date": "2017-07-04T01:38:21.727Z" +} diff --git a/circle.yml b/circle.yml deleted file mode 100644 index df269f2..0000000 --- a/circle.yml +++ /dev/null @@ -1,4 +0,0 @@ -machine: - environment: - MONGODB_URI: mongodb://localhost:27017/test - AUTH_TOKEN: tokentest diff --git a/common/userAgent.js b/common/userAgent.js new file mode 100644 index 0000000..40de484 --- /dev/null +++ b/common/userAgent.js @@ -0,0 +1,48 @@ +'use strict' + +/** + * @param {String} family This is the Client Name for us Lugbench + * @param {Int} major This is the major number of client version + * @param {Int} minor This is the minor number of client version + * @param {Int} patch This is the patch number of client version + * @param {String} source This is the actual user agent string + */ +function Agent(family, major, minor, patch, source) { + this.family = family || '' + this.major = major || 0 + this.minor = minor || 0 + this.patch = patch || 0 + this.source = source || '' +} + +/** + * Display a readable version of the user agent + * @returns a String contqining the version + */ +Agent.prototype.version = function version() { + return this.major + '.' + this.minor + '.' + this.patch +} + +/** + * Transform a String to a Agent Object + * @param {String} userAgent This is the string to parse + * @return {Agent} This return an Agent object + */ +function parse(userAgent) { + let userAgentSplited = userAgent.split('/') + if (userAgentSplited.length !== 2 || userAgentSplited[0] !== 'LugBench' ) { + return new Agent('', 0, 0, 0, userAgent) + } + let family = userAgentSplited[0] + let versionSplitted = userAgentSplited[1].split('.') + if (versionSplitted.length !== 3) { + return new Agent('', 0, 0, 0, userAgent) + } + return new Agent(family, + versionSplitted[0], + versionSplitted[1], + versionSplitted[2], + userAgent) +} +module.exports.parse = parse +module.exports.Agent = Agent diff --git a/config.js b/config.js new file mode 100644 index 0000000..c4a3848 --- /dev/null +++ b/config.js @@ -0,0 +1,13 @@ +'use strict' + +module.exports = { + name: 'API', + version: '1.0.0', + env: process.env.NODE_ENV || 'development', + port: process.env.PORT || 5000, + baseUrl: process.env.BASE_URL || 'http://localhost:5000', + clientVersion: process.env.LUGBENCH_CLIENT_VERSION || '0.1.0', + db: { + uri: process.env.MONGODB_URI || 'mongodb://localhost:27017/lugbench', + }, +} diff --git a/config/index.js b/config/index.js deleted file mode 100644 index cf3476f..0000000 --- a/config/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - server: { - port: process.env.PORT || 5000 - }, - mongodbUri: process.env.MONGODB_URI || 'mongodb://localhost:27017/lugbench_localdb', - authToken: process.env.AUTH_TOKEN -}; diff --git a/v1/customTypes/formats.js b/customTypes/formats.js similarity index 61% rename from v1/customTypes/formats.js rename to customTypes/formats.js index f2deb05..45644cf 100644 --- a/v1/customTypes/formats.js +++ b/customTypes/formats.js @@ -1,24 +1,24 @@ -'use strict'; +'use strict' module.exports = (mongoose) => { function Formats(key, options) { - mongoose.SchemaType.call(this, key, options, 'Formats'); + mongoose.SchemaType.call(this, key, options, 'Formats') } - Formats.prototype = Object.create(mongoose.SchemaType.prototype); + Formats.prototype = Object.create(mongoose.SchemaType.prototype) Formats.prototype.cast = (val) => { if (!(val instanceof Array)) { - throw new Error(val + " is not an array"); + throw new Error(val + ' is not an array') } else if (val.length != 2) { - throw new Error('Not enough parameters'); + throw new Error('Not enough parameters') } else if ((typeof val[0].toString()) != 'string') { - throw new Error(val[0] + ` (first parameter of ${val}) is not a String`); + throw new Error(val[0] + ` (first parameter of ${val}) is not a String`) } else if (!(val[1] instanceof Object)) { - throw new Error(val[1] + ` (second parameter of ${val}) is not an Object`); + throw new Error(val[1] + ` (second parameter of ${val}) is not an Object`) } - return val; - }; + return val + } - mongoose.Schema.Types.Formats = Formats; -}; + mongoose.Schema.Types.Formats = Formats +} diff --git a/v1/customTypes/uint10.js b/customTypes/uint10.js similarity index 65% rename from v1/customTypes/uint10.js rename to customTypes/uint10.js index 110e48c..3b8d795 100644 --- a/v1/customTypes/uint10.js +++ b/customTypes/uint10.js @@ -1,25 +1,25 @@ -'use strict'; +'use strict' module.exports = (mongoose) => { function Uint10(key, options) { - mongoose.SchemaType.call(this, key, options, 'Uint10'); + mongoose.SchemaType.call(this, key, options, 'Uint10') } - Uint10.prototype = Object.create(mongoose.SchemaType.prototype); + Uint10.prototype = Object.create(mongoose.SchemaType.prototype) Uint10.prototype.cast = (val) => { - let _val = Number(val); + let _val = Number(val) if (isNaN(_val)) { - throw new Error('Uint10: ' + val + ' is not a number'); + throw new Error('Uint10: ' + val + ' is not a number') } - _val = Math.round(_val); + _val = Math.round(_val) if (_val < 0 || _val > 0x3FF) { throw new Error('Uint10: ' + val + - ' is outside of the range of valid unsigned 10-bit ints'); + ' is outside of the range of valid unsigned 10-bit ints') } - return _val; - }; + return _val + } - mongoose.Schema.Types.Uint10 = Uint10; -}; + mongoose.Schema.Types.Uint10 = Uint10 +} diff --git a/v1/customTypes/uint12.js b/customTypes/uint12.js similarity index 65% rename from v1/customTypes/uint12.js rename to customTypes/uint12.js index e5311ac..34223d5 100644 --- a/v1/customTypes/uint12.js +++ b/customTypes/uint12.js @@ -1,25 +1,25 @@ -'use strict'; +'use strict' module.exports = (mongoose) => { function Uint12(key, options) { - mongoose.SchemaType.call(this, key, options, 'Uint12'); + mongoose.SchemaType.call(this, key, options, 'Uint12') } - Uint12.prototype = Object.create(mongoose.SchemaType.prototype); + Uint12.prototype = Object.create(mongoose.SchemaType.prototype) Uint12.prototype.cast = (val) => { - let _val = Number(val); + let _val = Number(val) if (isNaN(_val)) { - throw new Error('Uint12: ' + val + ' is not a number'); + throw new Error('Uint12: ' + val + ' is not a number') } - _val = Math.round(_val); + _val = Math.round(_val) if (_val < 0 || _val > 0xFFF) { throw new Error('Uint12: ' + val + - ' is outside of the range of valid unsigned 12-bit ints'); + ' is outside of the range of valid unsigned 12-bit ints') } - return _val; - }; + return _val + } - mongoose.Schema.Types.Uint12 = Uint12; -}; + mongoose.Schema.Types.Uint12 = Uint12 +} diff --git a/index.js b/index.js index ae754b6..17cb12d 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,140 @@ -"use strict"; - -module.exports = function(req, res, next) { - try { - let version = require(`./${req.params.version}`); - version(req, res, next); - } catch (e) { - if (e.code == "MODULE_NOT_FOUND") { - res.status(404).send(); - } else { - res.status(e.code).send(); +'use strict' + +/** + * Module Dependencies + */ +const config = require('./config') +const restify = require('restify') +const paginate = require('restify-paginate') +const winston = require('winston') +const bunyanWinston = require('bunyan-winston-adapter') +const mongoose = require('mongoose') +const autoload = require('auto-load') +const validator = require('restify-joi-middleware') +const errors = require('restify-errors') + +const checkClientVersion = require('./middlewares/checkClientVersion').checkClientVersion +const checkContentType = require('./middlewares/checkContentType').checkContentType +const corsMiddleware = require('./middlewares/cors').allowCrossDomain + +const validateDevicesGet = require('./validation/devices/get') +const validateDevicesGetId = require('./validation/devices/get/id') +const validateDevicesPost = require('./validation/devices/post') + +const validateScoresGet = require('./validation/scores/get') +const validateScoresGetId = require('./validation/scores/get/id') +const validateScoresPost = require('./validation/scores/post') + +const validateScenariosGet = require('./validation/scenarios/get') +const validateScenariosGetId = require('./validation/scenarios/get/id') + +/** + * Logging + */ +const log = new winston.Logger({ + transports: [ + new winston.transports.Console({ + level: 'info', + timestamp: () => { + return new Date().toString() + }, + json: true, + }), + ], +}) + +/** + * Validation + */ +const joiOptions = {} +const joiOverrides = { + errorResponder: (err, req, res, next) => { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.BadRequestError(err.body.data[0].message)) + }, +} + +/** + * Initialize Server + */ +const server = restify.createServer({ + name : config.name, + version : config.version, + log : bunyanWinston.createAdapter(log), +}) + +/** + * Middleware + */ +server.use(checkClientVersion) +server.use(checkContentType) +server.use(corsMiddleware) +server.use(restify.jsonBodyParser({ mapParams: true })) +server.use(restify.acceptParser(server.acceptable)) +server.use(restify.queryParser({ mapParams: true })) +server.use(restify.fullResponse()) +server.use(paginate(server)) +server.use(validator(joiOptions, joiOverrides)) + +/** + * Error Handling + */ +server.on('uncaughtException', (req, res, route, err) => { + log.error(err.stack) + res.send(err) +}) + +const configRoutes = function(server, handlers) { + // Devices + server.get({ path: '/devices', validation: validateDevicesGet }, [corsMiddleware], handlers.devices.index.get) + server.post({ path: '/devices', validation: validateDevicesPost }, [corsMiddleware, checkClientVersion], handlers.devices.index.post) + + server.get({ path: '/devices/:id', validation: validateDevicesGetId }, [corsMiddleware], handlers.devices.id.index.get) + + // Scores + server.get({ path: '/scores', validation: validateScoresGet }, [corsMiddleware], handlers.scores.index.get) + server.post({ path: '/scores', validation: validateScoresPost }, [corsMiddleware], handlers.scores.index.post) + + server.get({ path: '/scores/:id', validation: validateScoresGetId }, [corsMiddleware], handlers.scores.id.index.get) + + // Scenarios + server.get({ path: '/scenarios', validation: validateScenariosGet }, [corsMiddleware], handlers.scenarios.index.get) + + server.get({ path: '/scenarios/:id', validation: validateScenariosGetId }, [corsMiddleware], handlers.scenarios.id.index.get) +} + +/** + * Lift Server, Connect to DB & Bind Routes + */ +server.listen(config.port, function() { + mongoose.connection.on('error', function(err) { + log.error('Mongoose default connection error: ' + err) + process.exit(1) + }) + + mongoose.connection.on('open', function(err) { + + if (err) { + log.error('Mongoose default connection error: ' + err) + process.exit(1) } - } -}; + + log.info( + '%s v%s ready to accept connections on port %s in %s environment.', + server.name, + config.version, + config.port, + config.env + ) + + const handlers = autoload(__dirname + '/routes') + configRoutes(server, handlers) + }) + + mongoose.connect(config.db.uri) +}) + +module.exports.log = log +module.exports.server = server diff --git a/middlewares/authentication.js b/middlewares/authentication.js deleted file mode 100644 index 429997a..0000000 --- a/middlewares/authentication.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var config = require('../config'); - -module.exports = (req, res, next) => { - let accessToken = req.headers['x-access-token']; - - if (!accessToken) { - return res.status(401).send('Authentication token is required'); - } else if (accessToken !== config.authToken) { - return res.status(401).send('Authentication token is not correct'); - } - - next(); - -}; diff --git a/middlewares/checkClientVersion.js b/middlewares/checkClientVersion.js new file mode 100644 index 0000000..9d09cad --- /dev/null +++ b/middlewares/checkClientVersion.js @@ -0,0 +1,17 @@ +'use strict' + +const errors = require('restify-errors') +const config = require('../config') + + +module.exports.checkClientVersion = function(req, res, next) { + if (!req.headers['user-agent']) { + return next(new errors.UnauthorizedError('Bad user-agent')) + } + + const elementToCheck = 'LugBench/' + config.clientVersion + if (req.headers['user-agent'].indexOf(elementToCheck) === 0){ + return next() + } + return next(new errors.UnauthorizedError('Bad user-agent: missing Lugbench client version')) +} diff --git a/middlewares/checkContentType.js b/middlewares/checkContentType.js new file mode 100644 index 0000000..3cd8942 --- /dev/null +++ b/middlewares/checkContentType.js @@ -0,0 +1,12 @@ +'use strict' + +const errors = require('restify-errors') + + +module.exports.checkContentType = function(req, res, next) { + const contentType = req.headers['content-type'] + if (!contentType || contentType.indexOf('application/json') !== 0) { + return next(new errors.UnauthorizedError('Bad content-type')) + } + return next() +} diff --git a/middlewares/cors.js b/middlewares/cors.js index 226bb47..7d51bd3 100644 --- a/middlewares/cors.js +++ b/middlewares/cors.js @@ -1,15 +1,8 @@ -'use strict'; +'use strict' -module.exports = (_, res, next) => { - // Website you wish to allow to connect - res.setHeader('Access-Control-Allow-Origin', '*'); - // Request methods you wish to allow - res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); - // Request headers you wish to allow - res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); - // Set to true if you need the website to include cookies in the requests sent - // to the API (e.g. in case you use sessions) - res.setHeader('Access-Control-Allow-Credentials', true); - // Pass to next layer of middleware - next(); -}; +module.exports.allowCrossDomain = function(res, req, next) { + res.header('Access-Control-Allow-Origin', '*') + res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE') + res.header('Access-Control-Allow-Headers', 'Content-Type') + next() +} diff --git a/models/device.js b/models/device.js new file mode 100644 index 0000000..74a334a --- /dev/null +++ b/models/device.js @@ -0,0 +1,251 @@ +'use strict' + +const mongoose = require('mongoose') + +require('../customTypes/uint12.js')(mongoose) +require('../customTypes/uint10.js')(mongoose) +require('../customTypes/formats.js')(mongoose) + +const DeviceSchema = new mongoose.Schema({ + 'name': { type: String, required: true }, + 'os': { type: String, required: true, enum: ['Windows', 'Linux', 'Android'] }, + 'deviceId': { type: Number, required: true }, + 'vendorId': { type: Number, required: true }, + 'driverVersion': { type: Number, required: true }, + 'vulkanInfo': { + 'properties': { + 'apiVersion': { + 'major': { type: mongoose.Schema.Types.Uint10, required: true }, + 'minor': { type: mongoose.Schema.Types.Uint10, required: true }, + 'patch': { type: mongoose.Schema.Types.Uint12, required: true }, + }, + 'driverVersion': { type: Number, required: true }, + 'vendorID': { type: Number, required: true }, + 'deviceID': { type: Number, required: true }, + 'deviceName': { type: String, required: true }, + 'deviceType': { type: String, required: true }, + 'pipelineCacheUUID': { type: [Number], required: true }, + 'limits': { + 'maxImageDimension1D': { type: Number, required: true }, + 'maxImageDimension2D': { type: Number, required: true }, + 'maxImageDimension3D': { type: Number, required: true }, + 'maxImageDimensionCube': { type: Number, required: true }, + 'maxImageArrayLayers': { type: Number, required: true }, + 'maxTexelBufferElements': { type: Number, required: true }, + 'maxUniformBufferRange': { type: Number, required: true }, + 'maxStorageBufferRange': { type: Number, required: true }, + 'maxPushConstantsSize': { type: Number, required: true }, + 'maxMemoryAllocationCount': { type: Number, required: true }, + 'maxSamplerAllocationCount': { type: Number, required: true }, + 'bufferImageGranularity': { type: Number, required: true }, + 'sparseAddressSpaceSize': { type: Number, required: true }, + 'maxBoundDescriptorSets': { type: Number, required: true }, + 'maxPerStageDescriptorSamplers': { type: Number, required: true }, + 'maxPerStageDescriptorUniformBuffers': { type: Number, required: true }, + 'maxPerStageDescriptorStorageBuffers': { type: Number, required: true }, + 'maxPerStageDescriptorSampledImages': { type: Number, required: true }, + 'maxPerStageDescriptorStorageImages': { type: Number, required: true }, + 'maxPerStageDescriptorInputAttachments': { type: Number, required: true }, + 'maxPerStageResources': { type: Number, required: true }, + 'maxDescriptorSetSamplers': { type: Number, required: true }, + 'maxDescriptorSetUniformBuffers': { type: Number, required: true }, + 'maxDescriptorSetUniformBuffersDynamic': { type: Number, required: true }, + 'maxDescriptorSetStorageBuffers': { type: Number, required: true }, + 'maxDescriptorSetStorageBuffersDynamic': { type: Number, required: true }, + 'maxDescriptorSetSampledImages': { type: Number, required: true }, + 'maxDescriptorSetStorageImages': { type: Number, required: true }, + 'maxDescriptorSetInputAttachments': { type: Number, required: true }, + 'maxVertexInputAttributes': { type: Number, required: true }, + 'maxVertexInputBindings': { type: Number, required: true }, + 'maxVertexInputAttributeOffset': { type: Number, required: true }, + 'maxVertexInputBindingStride': { type: Number, required: true }, + 'maxVertexOutputComponents': { type: Number, required: true }, + 'maxTessellationGenerationLevel': { type: Number, required: true }, + 'maxTessellationPatchSize': { type: Number, required: true }, + 'maxTessellationControlPerVertexInputComponents': { type: Number, required: true }, + 'maxTessellationControlPerVertexOutputComponents': { type: Number, required: true }, + 'maxTessellationControlPerPatchOutputComponents': { type: Number, required: true }, + 'maxTessellationControlTotalOutputComponents': { type: Number, required: true }, + 'maxTessellationEvaluationInputComponents': { type: Number, required: true }, + 'maxTessellationEvaluationOutputComponents': { type: Number, required: true }, + 'maxGeometryShaderInvocations': { type: Number, required: true }, + 'maxGeometryInputComponents': { type: Number, required: true }, + 'maxGeometryOutputComponents': { type: Number, required: true }, + 'maxGeometryOutputVertices': { type: Number, required: true }, + 'maxGeometryTotalOutputComponents': { type: Number, required: true }, + 'maxFragmentInputComponents': { type: Number, required: true }, + 'maxFragmentOutputAttachments': { type: Number, required: true }, + 'maxFragmentDualSrcAttachments': { type: Number, required: true }, + 'maxFragmentCombinedOutputResources': { type: Number, required: true }, + 'maxComputeSharedMemorySize': { type: Number, required: true }, + 'maxComputeWorkGroupCount': { type: [Number], required: true }, + 'maxComputeWorkGroupInvocations': { type: Number, required: true }, + 'maxComputeWorkGroupSize': { type: [Number], required: true }, + 'subPixelPrecisionBits': { type: Number, required: true }, + 'subTexelPrecisionBits': { type: Number, required: true }, + 'mipmapPrecisionBits': { type: Number, required: true }, + 'maxDrawIndexedIndexValue': { type: Number, required: true }, + 'maxDrawIndirectCount': { type: Number, required: true }, + 'maxSamplerLodBias': { type: Number, required: true }, + 'maxSamplerAnisotropy': { type: Number, required: true }, + 'maxViewports': { type: Number, required: true }, + 'maxViewportDimensions': { type: [Number], required: true }, + 'viewportBoundsRange': { type: [Number], required: true }, + 'viewportSubPixelBits': { type: Number, required: true }, + 'minMemoryMapAlignment': { type: Number, required: true }, + 'minTexelBufferOffsetAlignment': { type: Number, required: true }, + 'minUniformBufferOffsetAlignment': { type: Number, required: true }, + 'minStorageBufferOffsetAlignment': { type: Number, required: true }, + 'minTexelOffset': { type: Number, required: true }, + 'maxTexelOffset': { type: Number, required: true }, + 'minTexelGatherOffset': { type: Number, required: true }, + 'maxTexelGatherOffset': { type: Number, required: true }, + 'minInterpolationOffset': { type: Number, required: true }, + 'maxInterpolationOffset': { type: Number, required: true }, + 'subPixelInterpolationOffsetBits': { type: Number, required: true }, + 'maxFramebufferWidth': { type: Number, required: true }, + 'maxFramebufferHeight': { type: Number, required: true }, + 'maxFramebufferLayers': { type: Number, required: true }, + 'framebufferColorSampleCounts': { type: [String], required: true }, + 'framebufferDepthSampleCounts': { type: [String], required: true }, + 'framebufferStencilSampleCounts': { type: [String], required: true }, + 'framebufferNoAttachmentsSampleCounts': { type: [String], required: true }, + 'maxColorAttachments': { type: Number, required: true }, + 'sampledImageColorSampleCounts': { type: [String], required: true }, + 'sampledImageIntegerSampleCounts': { type: [String], required: true }, + 'sampledImageDepthSampleCounts': { type: [String], required: true }, + 'sampledImageStencilSampleCounts': { type: [String], required: true }, + 'storageImageSampleCounts': { type: [String], required: true }, + 'maxSampleMaskWords': { type: Number, required: true }, + 'timestampComputeAndGraphics': { type: Boolean, required: true }, + 'timestampPeriod': { type: Number, required: true }, + 'maxClipDistances': { type: Number, required: true }, + 'maxCullDistances': { type: Number, required: true }, + 'maxCombinedClipAndCullDistances': { type: Number, required: true }, + 'discreteQueuePriorities': { type: Number, required: true }, + 'pointSizeRange': { type: [Number], required: true }, + 'lineWidthRange': { type: [Number], required: true }, + 'pointSizeGranularity': { type: Number, required: true }, + 'lineWidthGranularity': { type: Number, required: true }, + 'strictLines': { type: Boolean, required: true }, + 'standardSampleLocations': { type: Boolean, required: true }, + 'optimalBufferCopyOffsetAlignment': { type: Number, required: true }, + 'optimalBufferCopyRowPitchAlignment': { type: Number, required: true }, + 'nonCoherentAtomSize': { type: Number, required: true }, + }, + 'sparseProperties': { + 'residencyStandard2DBlockShape': { type: Boolean, required: true }, + 'residencyStandard2DMultisampleBlockShape': { type: Boolean, required: true }, + 'residencyStandard3DBlockShape': { type: Boolean, required: true }, + 'residencyAlignedMipSize': { type: Boolean, required: true }, + 'residencyNonResidentStrict': { type: Boolean, required: true }, + }, + }, + 'features': { + 'robustBufferAccess': { type: Boolean, required: true }, + 'fullDrawIndexUint32': { type: Boolean, required: true }, + 'imageCubeArray': { type: Boolean, required: true }, + 'independentBlend': { type: Boolean, required: true }, + 'geometryShader': { type: Boolean, required: true }, + 'tessellationShader': { type: Boolean, required: true }, + 'sampleRateShading': { type: Boolean, required: true }, + 'dualSrcBlend': { type: Boolean, required: true }, + 'logicOp': { type: Boolean, required: true }, + 'multiDrawIndirect': { type: Boolean, required: true }, + 'drawIndirectFirstInstance': { type: Boolean, required: true }, + 'depthClamp': { type: Boolean, required: true }, + 'depthBiasClamp': { type: Boolean, required: true }, + 'fillModeNonSolid': { type: Boolean, required: true }, + 'depthBounds': { type: Boolean, required: true }, + 'wideLines': { type: Boolean, required: true }, + 'largePoints': { type: Boolean, required: true }, + 'alphaToOne': { type: Boolean, required: true }, + 'multiViewport': { type: Boolean, required: true }, + 'samplerAnisotropy': { type: Boolean, required: true }, + 'textureCompressionETC2': { type: Boolean, required: true }, + 'textureCompressionASTC_LDR': { type: Boolean, required: true }, + 'textureCompressionBC': { type: Boolean, required: true }, + 'occlusionQueryPrecise': { type: Boolean, required: true }, + 'pipelineStatisticsQuery': { type: Boolean, required: true }, + 'vertexPipelineStoresAndAtomics': { type: Boolean, required: true }, + 'fragmentStoresAndAtomics': { type: Boolean, required: true }, + 'shaderTessellationAndGeometryPointSize': { type: Boolean, required: true }, + 'shaderImageGatherExtended': { type: Boolean, required: true }, + 'shaderStorageImageExtendedFormats': { type: Boolean, required: true }, + 'shaderStorageImageMultisample': { type: Boolean, required: true }, + 'shaderStorageImageReadWithoutFormat': { type: Boolean, required: true }, + 'shaderStorageImageWriteWithoutFormat': { type: Boolean, required: true }, + 'shaderUniformBufferArrayDynamicIndexing': { type: Boolean, required: true }, + 'shaderSampledImageArrayDynamicIndexing': { type: Boolean, required: true }, + 'shaderStorageBufferArrayDynamicIndexing': { type: Boolean, required: true }, + 'shaderStorageImageArrayDynamicIndexing': { type: Boolean, required: true }, + 'shaderClipDistance': { type: Boolean, required: true }, + 'shaderCullDistance': { type: Boolean, required: true }, + 'shaderFloat64': { type: Boolean, required: true }, + 'shaderInt64': { type: Boolean, required: true }, + 'shaderInt16': { type: Boolean, required: true }, + 'shaderResourceResidency': { type: Boolean, required: true }, + 'shaderResourceMinLod': { type: Boolean, required: true }, + 'sparseBinding': { type: Boolean, required: true }, + 'sparseResidencyBuffer': { type: Boolean, required: true }, + 'sparseResidencyImage2D': { type: Boolean, required: true }, + 'sparseResidencyImage3D': { type: Boolean, required: true }, + 'sparseResidency2Samples': { type: Boolean, required: true }, + 'sparseResidency4Samples': { type: Boolean, required: true }, + 'sparseResidency8Samples': { type: Boolean, required: true }, + 'sparseResidency16Samples': { type: Boolean, required: true }, + 'sparseResidencyAliased': { type: Boolean, required: true }, + 'variableMultisampleRate': { type: Boolean, required: true }, + 'inheritedQueries': { type: Boolean, required: true }, + }, + 'memory': { + 'memoryTypes': [{ + 'heapIndex': Number, + 'propertyFlags': [String], + }], + 'memoryHeaps': [{ + 'size': Number, + 'flags': [String], + }], + }, + 'queues': [{ + 'minImageTransferGranularity': { + 'depth': { type: Number, required: true }, + 'height': { type: Number, required: true }, + 'width': { type: Number, required: true }, + }, + 'queueCount': { type: Number, required: true }, + 'queueFlags': { type: [String], required: true }, + 'timestampValidBits': { type: Number, required: true }, + }], + 'swapchain': { + 'maxImageArrayLayers': Number, + 'minImageCount': Number, + 'maxImageCount': Number, + 'formats': [String], + 'presentModes': [String], + 'supportedTransforms': [String], + 'supportedCompositeAlpha': [String], + 'supportedUsageFlags': [String], + 'surfaceExtension': String, + }, + 'extensions': [{ + 'extensionName': { type: String, required: true }, + 'specVersion': { type: Number, required: true }, + }], + 'formats': { type: [mongoose.Schema.Types.Formats], required: true }, + }, +}, { + versionKey: false, +}) + +DeviceSchema.index({ + 'name': 1, + 'os': 1, + 'deviceId': 1, + 'vendorId': 1, + 'driverVersion': 1, +}, { unique: true }) + +const Device = mongoose.model('Device', DeviceSchema) +module.exports = Device diff --git a/models/scenario.js b/models/scenario.js new file mode 100644 index 0000000..ffe2b9e --- /dev/null +++ b/models/scenario.js @@ -0,0 +1,13 @@ +'use strict' + +const mongoose = require('mongoose') + +const ScenarioSchema = new mongoose.Schema({ + 'name': { type: String, required: true, unique: true }, + 'description': { type: String, required: true }, +}, { + versionKey: false, +}) + +const Scenario = mongoose.model('Scenario', ScenarioSchema) +module.exports = Scenario diff --git a/models/score.js b/models/score.js new file mode 100644 index 0000000..abc7a4e --- /dev/null +++ b/models/score.js @@ -0,0 +1,16 @@ +'use strict' + +const mongoose = require('mongoose') + +const ScoreSchema = new mongoose.Schema({ + 'device': { type: mongoose.Schema.ObjectId, required: true, ref: 'Device' }, + 'scenario': { type: mongoose.Schema.ObjectId, required: true, ref: 'Scenario' }, + 'nbFrames': { type: Number, required: true }, + 'averageFps': { type: Number, required: true }, + date: { type: Date, required: true, default: Date.now }, +}, { + versionKey: false, +}) + +const Score = mongoose.model('Score', ScoreSchema) +module.exports = Score diff --git a/notfound.html b/notfound.html deleted file mode 100644 index 2438686..0000000 --- a/notfound.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Not found - - - - -
-
-

This api route doesn't exist

-
- - - diff --git a/package.json b/package.json index d3dee3e..c1571e4 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,33 @@ { - "name": "lugdbench-api", + "name": "lugbench-api", "version": "1.0.0", - "description": "", - "engines": { - "node": ">=6.10x", - "npm": ">=4.5x" - }, - "main": "server.js", + "description": "The API of our solution Lugdunum", + "main": "index.js", "scripts": { - "start": "node server.js", - "test": "mocha test/add-gpu.js" + "lint": "eslint .", + "test": "npm run -s lint && NODE_ENV='test' MONGODB_URI='mongodb://localhost:27017/lugbench-test' mocha", + "start": "node index.js" }, "author": "Lugdunum3D", "license": "MIT", "dependencies": { - "body-parser": "^1.17.1", - "chai": "^3.5.0", - "chai-http": "^3.0.0", - "express": "^4.15.2", - "mocha": "^3.3.0", - "mongoose": "^4.9.7" + "async": "^2.5.0", + "auto-load": "^2.1.2", + "bunyan-winston-adapter": "^0.2.0", + "chai": "^4.0.2", + "joi": "^10.6.0", + "joi-objectid": "^2.0.0", + "lodash": "^4.17.4", + "mocha": "^3.4.2", + "mongoose": "^4.11.6", + "restify": "^4.3.0", + "restify-errors": "^4.3.0", + "restify-joi-middleware": "^2.1.3", + "restify-paginate": "0.0.4", + "supertest": "^3.0.0", + "winston": "^2.3.1" }, - "devDependencies": {} + "devDependencies": { + "eslint": "^4.1.1" + } } diff --git a/routes/devices/id/index.js b/routes/devices/id/index.js new file mode 100644 index 0000000..b989dc8 --- /dev/null +++ b/routes/devices/id/index.js @@ -0,0 +1,22 @@ +'use strict' + +const errors = require('restify-errors') + +const log = require('../../../index').log +const Device = require('../../../models/device') + + +module.exports.get = function get(req, res, next) { + Device.find({ _id: req.params.id }, function(err, device) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + res.send(device) + next() + }) +} diff --git a/routes/devices/index.js b/routes/devices/index.js new file mode 100644 index 0000000..d8810d9 --- /dev/null +++ b/routes/devices/index.js @@ -0,0 +1,69 @@ +'use strict' + +const errors = require('restify-errors') +const _ = require('lodash') + +const log = require('../../index').log +const Device = require('../../models/device') + + +module.exports.get = function get(req, res, next) { + const findParams = _.pick(req.params, ['name', 'os', 'driverVersion', 'vendorId', 'deviceId']) + + Device.find(findParams, function(err, devices) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + if (devices.length > 0) { + res.send(res.paginate.getPaginatedResponse(devices)) + } else { + res.send({}) + } + next() + }) +} + +module.exports.post = function post(req, res, next) { + let data = req.body || {} + let device = new Device(data) + let existingData = _.pick(req.params, ['name', 'os', 'driverVersion', 'vendorId', 'deviceId']) + + Device.findOne(existingData, function(err, existingDevice) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InternalError(err.message)) + } + + if (existingDevice) { + + res.send(409, { id: existingDevice.id }) + + next() + + } else { + device.save(function(err, device) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InternalError(err.message)) + } + + res.send(201, { id: device.id }) + + next() + }) + } + + }) + +} diff --git a/routes/scenarios/id/index.js b/routes/scenarios/id/index.js new file mode 100644 index 0000000..36009f6 --- /dev/null +++ b/routes/scenarios/id/index.js @@ -0,0 +1,22 @@ +'use strict' + +const errors = require('restify-errors') + +const log = require('../../../index').log +const Scenario = require('../../../models/scenario') + + +module.exports.get = function get(req, res, next) { + Scenario.find({ _id: req.params.id }, function(err, scenario) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + res.send(scenario) + next() + }) +} diff --git a/routes/scenarios/index.js b/routes/scenarios/index.js new file mode 100644 index 0000000..b2cc7d4 --- /dev/null +++ b/routes/scenarios/index.js @@ -0,0 +1,22 @@ +'use strict' + +const errors = require('restify-errors') + +const log = require('../../index').log +const Scenario = require('../../models/scenario') + + +module.exports.get = function get(req, res, next) { + Scenario.find({}, function(err, scenarios) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + res.send(res.paginate.getPaginatedResponse(scenarios)) + next() + }) +} diff --git a/routes/scores/id/index.js b/routes/scores/id/index.js new file mode 100644 index 0000000..5d33fac --- /dev/null +++ b/routes/scores/id/index.js @@ -0,0 +1,22 @@ +'use strict' + +const errors = require('restify-errors') + +const log = require('../../../index').log +const Score = require('../../../models/score') + + +module.exports.get = function get(req, res, next) { + Score.find({ _id: req.params.id }, function(err, score) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + res.send(score) + next() + }) +} diff --git a/routes/scores/index.js b/routes/scores/index.js new file mode 100644 index 0000000..2eb4b88 --- /dev/null +++ b/routes/scores/index.js @@ -0,0 +1,136 @@ +'use strict' + +const errors = require('restify-errors') +const _ = require('lodash') + +const log = require('../../index').log +const Device = require('../../models/device') +const Scenario = require('../../models/scenario') +const Score = require('../../models/score') + + +function getIdFromGroupParams(groupParams) { + let groupId = {} + + if (_.isString(groupParams)) { + groupId[groupParams] = '$' + groupParams + } else if (_.isArray(groupParams)) { + _.map(groupParams, function(group) { + groupId[group] = '$' + group + }) + } + return groupId +} + +function getAggregateFromParams(aggregateParams, populateParams) { + let aggregateRequest = [ + { + $group: { + _id: getIdFromGroupParams(aggregateParams.group), + averageFps: { + $avg: '$averageFps', + }, + }, + }, + ] + + if (_.isString(populateParams.populate)) { + aggregateRequest.push({ + $lookup: { + from: `${populateParams.populate}s`, + localField: `_id.${populateParams.populate}`, + foreignField: '_id', + as: `${populateParams.populate}`, + }, + }) + aggregateRequest.push({ + $unwind: { + path: `$${populateParams.populate}`, + preserveNullAndEmptyArrays: true, + }, + }) + } else if (_.isArray(populateParams.populate)) { + _.forEach(populateParams.populate, function(value) { + aggregateRequest.push({ + $lookup: { + from: `${value}s`, + localField: `_id.${value}`, + foreignField: '_id', + as: `${value}`, + }, + }) + aggregateRequest.push({ + $unwind: { + path: `$${value}`, + preserveNullAndEmptyArrays: true, + }, + }) + }) + } + return aggregateRequest +} + +function reqFromParams(params) { + const findParams = _.pick(params, ['device', 'scenario']) + const populateParams = _.pick(params, ['populate']) + const aggregateParams = _.pick(params, ['group']) + let scoreRequest + + if (aggregateParams.group) { + scoreRequest = Score.aggregate(getAggregateFromParams(aggregateParams, populateParams)) + } else { + scoreRequest = Score.find(findParams) + if (populateParams.populate) { + scoreRequest = scoreRequest.populate(populateParams.populate) + } + } + + scoreRequest = scoreRequest.sort({ averageFps: 'desc' }) + + return scoreRequest +} + +module.exports.get = function get(req, res, next) { + reqFromParams(req.params).exec(function(err, scores) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InvalidContentError(err.errors.name.message)) + } + + if (scores && scores.length > 0) { + res.send(res.paginate.getPaginatedResponse(scores)) + } else { + res.send({}) + } + next() + }) +} + +module.exports.post = function post(req, res, next) { + let data = req.body || {} + + Device.count({ _id: data.device }, function (err, deviceCount) { + Scenario.count({ _id: data.scenario }, function (err, scenarioCount) { + if (deviceCount > 0 && scenarioCount > 0) { + let score = new Score(data) + score.save(function(err, score) { + + if (err) { + if (process.env.NODE_ENV !== 'test') { + log.error(err) + } + return next(new errors.InternalError(err.message)) + } + + res.send(201, { id: score.id }) + next() + }) + } else { + return next(new errors.ForbiddenError('missing device or scenario')) + } + }) + }) +} diff --git a/server.js b/server.js deleted file mode 100644 index 251aeb7..0000000 --- a/server.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -var express = require('express'); -var bodyparser = require('body-parser'); -var mongoose = require('mongoose'); -var morgan = require('morgan'); - -var config = require('./config'); -var server = express(); - -var api = require('./index'); -var middlewareCORS = require('./middlewares/cors'); - -mongoose.Promise = global.Promise; -mongoose.connect(config.mongodbUri, (err) => { - - if (!config.authToken) { - throw 'Missing environment token'; - } - - if (err) { - throw err; - } - - server.use(middlewareCORS); - server.use(morgan(':method :url | :status | :response-time ms')); - server.use(express.static(__dirname)); - server.use(bodyparser.json({ - limit: '50mb' - })); - server.use('/api/:version', api); - - server.get('/', (req, res) => res.sendFile('./index.html')); - - server.listen(config.server.port, (err) => console.log(err || ('API is listening on port ' + config.server.port))); -}); - -module.exports = server; diff --git a/test/add-gpu.js b/test/add-gpu.js deleted file mode 100644 index 5d6b99a..0000000 --- a/test/add-gpu.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -var chai = require('chai'); -var chaiHttp = require('chai-http'); -var Gpu = require('../v1/models/gpu'); -var gpuTest = require('./gputest.js'); -var server = require('../server.js'); - -/* jshint ignore:start*/ -var should = chai.should(); -/* jshint ignore:end*/ - -chai.use(chaiHttp); - -before(done => { - Gpu.remove({}, done); -}); -after(done => { - Gpu.remove({}, done); -}); - -describe('Gpus', () => { - var id = ''; - - describe('PUT /api/v1/gpus', () => { - it('should PUT a new gpu into the database', done => { - chai.request(server).put('/api/v1/gpus').send(gpuTest).end((err, res) => { - res.should.have.status(200); - res.body.data.should.be.a('object'); - id = res.body.data._id; - done(); - }); - }); - }); - - describe('GET /api/v1/gpus', () => { - it('should GET all gpus', done => { - chai.request(server).get('/api/v1/gpus').end((err, res) => { - res.should.have.status(200); - res.body.data.should.be.a('array'); - res.body.data.length.should.be.eql(1); - done(); - }); - }); - }); - - describe(`GET /api/v1/gpus/${id}`, () => { - it('should GET specific gpus', done => { - chai.request(server).get(`/api/v1/gpus/${id}`).end((err, res) => { - res.should.have.status(200); - res.body.data.should.be.a('object'); - done(); - }); - }); - }); - -}); diff --git a/test/device.spec.js b/test/device.spec.js new file mode 100644 index 0000000..75dd4f0 --- /dev/null +++ b/test/device.spec.js @@ -0,0 +1,225 @@ +'use strict' + +require('../index.js') + +const _ = require('lodash') +const chai = require('chai') +const supertest = require('supertest') +const mongoose = require('mongoose') +const waterfall = require('async/waterfall') + +const expect = chai.expect +const app = supertest.agent('http://localhost:5000') +const db = mongoose.connection + +const device530 = require('../assets/mocks/devices/530.json') +const device960M = require('../assets/mocks/devices/960M.json') + +const pageUrlPattern = /^(http:\/\/localhost:5000\/devices\?per_page=.&page=.)/ +const requestHeaders = { + 'content-type': 'application/json', + 'user-agent': 'LugBench/0.1.0', +} + +describe('Device', function() { + beforeEach(function (done) { + waterfall([ + function (callback){ + db.collection('devices').drop(function () { + callback() + }) + }, + function (callback) { + db.collection('devices').insert(device530, function() { + callback() + }) + }, + function (callback) { + db.collection('devices').insert(device960M, function() { + callback() + }) + }, + ], function () { + done() + }) + }) + + describe('GET /devices', function() { + it('should return a list of devices', function(done) { + app.get('/devices') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(2) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should search the devices by name', function(done) { + app + .get(`/devices?name=${device530.name}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.data[0]._id).to.have.string(device530._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should search the devices by os', function(done) { + app + .get(`/devices?os=${device960M.os}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.data[0]._id).to.have.string(device960M._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should search the devices by driverVersion', function(done) { + app + .get(`/devices?driverVersion=${device530.driverVersion}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.data[0]._id).to.have.string(device530._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should search the devices by vendorId', function(done) { + app + .get(`/devices?vendorId=${device960M.vendorId}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.data[0]._id).to.have.string(device960M._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should search the devices by deviceId', function(done) { + app + .get(`/devices?deviceId=${device530.deviceId}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.data[0]._id).to.have.string(device530._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should paginate the devices', function(done) { + app + .get('/devices?per_page=1&page=1') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.pages.last).to.match(pageUrlPattern) + expect(res.body.pages.next).to.match(pageUrlPattern) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) + + describe('GET /devices/:id', function() { + it('should return one device', function(done) { + app + .get(`/devices/${device960M._id}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.length).to.be.equal(1) + expect(res.body[0]._id).to.have.string(device960M._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) + + describe('POST /devices', function() { + beforeEach(function (done) { + waterfall([ + function (callback){ + db.collection('devices').drop(function () { + callback() + }) + }, + ], function () { + done() + }) + }) + + it('should create a device', function(done) { + app + .post('/devices') + .send(device960M) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body._id).to.not.be.null + expect(res.statusCode).to.be.equal(201) + done() + }) + }) + + it('should reject a bad request', function(done) { + let wrongDevice960M = _.cloneDeep(device960M) + delete wrongDevice960M.driverVersion + app + .post('/devices') + .send(wrongDevice960M) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.code).to.be.equal('BadRequest') + expect(res.body.message).to.be.equal('"driverVersion" is required') + expect(res.statusCode).to.be.equal(400) + done() + }) + }) + + it('should reject a bad request from vulkanInfo', function(done) { + let wrongDevice960M = _.cloneDeep(device960M) + delete wrongDevice960M.vulkanInfo.features.alphaToOne + app + .post('/devices') + .send(wrongDevice960M) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.code).to.be.equal('BadRequest') + expect(res.body.message).to.be.equal('"alphaToOne" is required') + expect(res.statusCode).to.be.equal(400) + done() + }) + }) + + it('should detect a device duplication', function(done) { + waterfall([ + function (callback){ + app + .post('/devices') + .send(device960M) + .set(requestHeaders) + .end(function() { + callback() + }) + }, + ], function () { + app + .post('/devices') + .send(device960M) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body._id).to.not.be.null + expect(res.statusCode).to.be.equal(409) + done() + }) + }) + }) + }) +}) diff --git a/test/gputest.js b/test/gputest.js deleted file mode 100644 index 7045c2d..0000000 --- a/test/gputest.js +++ /dev/null @@ -1,3455 +0,0 @@ -module.exports = { - "extension": [ - { - "extensionName": "VK_KHR_swapchain", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 68 - } - }, - { - "extensionName": "VK_KHR_display_swapchain", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 9 - } - }, - { - "extensionName": "VK_KHR_maintenance1", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_KHR_shader_draw_parameters", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_KHR_sampler_mirror_clamp_to_edge", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_EXT_shader_subgroup_ballot", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_EXT_shader_subgroup_vote", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_NV_dedicated_allocation", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_NV_external_memory", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_NV_glsl_shader", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - }, - { - "extensionName": "VK_NVX_device_generated_commands", - "specVersion": { - "major": 0, - "minor": 0, - "patch": 1 - } - } - ], - "features": { - "alphaToOne": true, - "depthBiasClamp": true, - "depthBounds": true, - "depthClamp": true, - "drawIndirectFirstInstance": true, - "dualSrcBlend": true, - "fillModeNonSolid": true, - "fragmentStoresAndAtomics": true, - "fullDrawIndexUint32": true, - "geometryShader": true, - "imageCubeArray": true, - "independentBlend": true, - "inheritedQueries": true, - "largePoints": true, - "logicOp": true, - "multiDrawIndirect": true, - "multiViewport": true, - "occlusionQueryPrecise": true, - "pipelineStatisticsQuery": true, - "robustBufferAccess": true, - "sampleRateShading": true, - "samplerAnisotropy": true, - "shaderClipDistance": true, - "shaderCullDistance": true, - "shaderFloat64": true, - "shaderImageGatherExtended": true, - "shaderInt16": false, - "shaderInt64": true, - "shaderResourceMinLod": true, - "shaderResourceResidency": true, - "shaderSampledImageArrayDynamicIndexing": true, - "shaderStorageBufferArrayDynamicIndexing": true, - "shaderStorageImageArrayDynamicIndexing": true, - "shaderStorageImageExtendedFormats": true, - "shaderStorageImageMultisample": true, - "shaderStorageImageReadWithoutFormat": true, - "shaderStorageImageWriteWithoutFormat": true, - "shaderTessellationAndGeometryPointSize": true, - "shaderUniformBufferArrayDynamicIndexing": true, - "sparseBinding": true, - "sparseResidency16Samples": true, - "sparseResidency2Samples": true, - "sparseResidency4Samples": true, - "sparseResidency8Samples": true, - "sparseResidencyAliased": true, - "sparseResidencyBuffer": true, - "sparseResidencyImage2D": true, - "sparseResidencyImage3D": true, - "tessellationShader": true, - "textureCompressionASTC_LDR": false, - "textureCompressionBC": true, - "textureCompressionETC2": false, - "variableMultisampleRate": true, - "vertexPipelineStoresAndAtomics": true, - "wideLines": true - }, - "formats": [ - [ - "VK_FORMAT_ASTC_12x12_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_12x12_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_12x10_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_12x10_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x10_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x10_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x8_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x8_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x6_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x6_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x5_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_10x5_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x8_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x8_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x6_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x6_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x5_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_8x5_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_6x6_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_6x6_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_6x5_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_6x5_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_5x5_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_5x5_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_5x4_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_5x4_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_4x4_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ASTC_4x4_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_EAC_R11G11_SNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_EAC_R11G11_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_EAC_R11_SNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_EAC_R11_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_BC7_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC7_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC6H_SFLOAT_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC6H_UFLOAT_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC5_SNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC5_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC4_SNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC4_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC3_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC3_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC2_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC2_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC1_RGBA_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC1_RGBA_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC1_RGB_SRGB_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_BC1_RGB_UNORM_BLOCK", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_D32_SFLOAT_S8_UINT", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" - ] - } - ], - [ - "VK_FORMAT_D24_UNORM_S8_UINT", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" - ] - } - ], - [ - "VK_FORMAT_D16_UNORM_S8_UINT", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_S8_UINT", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", - "VK_FORMAT_FEATURE_BLIT_SRC_BIT", - "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR", - "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" - ] - } - ], - [ - "VK_FORMAT_D32_SFLOAT", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" - ] - } - ], - [ - "VK_FORMAT_X8_D24_UNORM_PACK32", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" - ] - } - ], - [ - "VK_FORMAT_D16_UNORM", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", - "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_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" - ] - } - ], - [ - "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B10G11R11_UFLOAT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R64G64B64A64_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64B64A64_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64B64A64_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64B64_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64B64_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64B64_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64G64_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R64_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R32G32B32A32_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32G32B32A32_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32G32B32A32_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32G32B32_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R32G32B32_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R32G32B32_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R32G32_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32G32_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32G32_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32_SFLOAT", - { - "bufferFeatures": [ - "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" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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_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" - ] - } - ], - [ - "VK_FORMAT_R32_SINT", - { - "bufferFeatures": [ - "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" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R32_UINT", - { - "bufferFeatures": [ - "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" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16B16A16_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16B16A16_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8A8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8A8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8B8A8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8B8A8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8B8A8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8B8A8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8A8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8A8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8B8A8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8B8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A1R5G5B5_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B5G5R5A1_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R5G5B5A1_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B5G6R5_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R5G6B5_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_UNDEFINED", - { - "bufferFeatures": [], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R4G4_UNORM_PACK8", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R4G4B4A4_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B4G4R4A4_UNORM_PACK16", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R8G8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R8G8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8A8_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8A8_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_B8G8R8A8_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8A8_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_B8G8R8A8_SRGB", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A8B8G8R8_UNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A8B8G8R8_SNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A8B8G8R8_USCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A8B8G8R8_SSCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A8B8G8R8_UINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A8B8G8R8_SINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A8B8G8R8_SRGB_PACK32", - { - "bufferFeatures": [], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A2R10G10B10_UNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A2R10G10B10_SNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2R10G10B10_USCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2R10G10B10_SSCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2R10G10B10_UINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A2R10G10B10_SINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2B10G10R10_UNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A2B10G10R10_SNORM_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2B10G10R10_USCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2B10G10R10_SSCALED_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_A2B10G10R10_UINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_A2B10G10R10_SINT_PACK32", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16B16_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_SINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16_SFLOAT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16A16_UNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16B16A16_SNORM", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ], - [ - "VK_FORMAT_R16G16B16A16_USCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16A16_SSCALED", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [], - "optimalTilingFeatures": [] - } - ], - [ - "VK_FORMAT_R16G16B16A16_UINT", - { - "bufferFeatures": [ - "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", - "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" - ], - "linearTilingFeatures": [ - "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" - ], - "optimalTilingFeatures": [ - "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" - ] - } - ] - ], - "memory": { - "memoryHeapCount": 2, - "memoryHeaps": [ - { - "flags": [ - "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT" - ], - "size": 4294967296 - }, - { - "flags": [], - "size": 12537090048 - } - ], - "memoryTypeCount": 11, - "memoryTypes": [ - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 1, - "propertyFlags": [] - }, - { - "heapIndex": 0, - "propertyFlags": [ - "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" - ] - }, - { - "heapIndex": 0, - "propertyFlags": [ - "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" - ] - }, - { - "heapIndex": 1, - "propertyFlags": [ - "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", - "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" - ] - }, - { - "heapIndex": 1, - "propertyFlags": [ - "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", - "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", - "VK_MEMORY_PROPERTY_HOST_CACHED_BIT" - ] - } - ] - }, - "properties": { - "apiVersion": { - "major": 1, - "minor": 0, - "patch": 37 - }, - "deviceID": 5159, - "deviceName": "GeForce GTX 965M", - "deviceType": "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", - "driverVersion": { - "major": 378, - "minor": 52, - "patch": 0 - }, - "limits": { - "bufferImageGranularity": 1024, - "discreteQueuePriorities": 2, - "framebufferColorSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "framebufferDepthSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "framebufferNoAttachmentsSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "framebufferStencilSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT", - "VK_SAMPLE_COUNT_16_BIT" - ], - "lineWidthGranularity": 0.125, - "lineWidthRange": [ - 0.5, - 10.0 - ], - "maxBoundDescriptorSets": 8, - "maxClipDistances": 8, - "maxColorAttachments": 8, - "maxCombinedClipAndCullDistances": 8, - "maxComputeSharedMemorySize": 49152, - "maxComputeWorkGroupCount": [ - 2147483647, - 65535, - 65535 - ], - "maxComputeWorkGroupInvocations": 1536, - "maxComputeWorkGroupSize": [ - 1536, - 1024, - 64 - ], - "maxCullDistances": 8, - "maxDescriptorSetInputAttachments": 8, - "maxDescriptorSetSampledImages": 49152, - "maxDescriptorSetSamplers": 4000, - "maxDescriptorSetStorageBuffers": 96, - "maxDescriptorSetStorageBuffersDynamic": 96, - "maxDescriptorSetStorageImages": 49152, - "maxDescriptorSetUniformBuffers": 72, - "maxDescriptorSetUniformBuffersDynamic": 72, - "maxDrawIndexedIndexValue": 4294967295, - "maxDrawIndirectCount": 4294967295, - "maxFragmentCombinedOutputResources": 16, - "maxFragmentDualSrcAttachments": 1, - "maxFragmentInputComponents": 128, - "maxFragmentOutputAttachments": 8, - "maxFramebufferHeight": 16384, - "maxFramebufferLayers": 2048, - "maxFramebufferWidth": 16384, - "maxGeometryInputComponents": 128, - "maxGeometryOutputComponents": 128, - "maxGeometryOutputVertices": 1024, - "maxGeometryShaderInvocations": 32, - "maxGeometryTotalOutputComponents": 1024, - "maxImageArrayLayers": 2048, - "maxImageDimension1D": 16384, - "maxImageDimension2D": 16384, - "maxImageDimension3D": 2048, - "maxImageDimensionCube": 16384, - "maxInterpolationOffset": 0.4375, - "maxMemoryAllocationCount": 4294967295, - "maxPerStageDescriptorInputAttachments": 8, - "maxPerStageDescriptorSampledImages": 8192, - "maxPerStageDescriptorSamplers": 4000, - "maxPerStageDescriptorStorageBuffers": 16, - "maxPerStageDescriptorStorageImages": 8192, - "maxPerStageDescriptorUniformBuffers": 12, - "maxPerStageResources": 24612, - "maxPushConstantsSize": 256, - "maxSampleMaskWords": 1, - "maxSamplerAllocationCount": 4000, - "maxSamplerAnisotropy": 16.0, - "maxSamplerLodBias": 15.0, - "maxStorageBufferRange": 2147483647, - "maxTessellationControlPerPatchOutputComponents": 120, - "maxTessellationControlPerVertexInputComponents": 128, - "maxTessellationControlPerVertexOutputComponents": 128, - "maxTessellationControlTotalOutputComponents": 4216, - "maxTessellationEvaluationInputComponents": 128, - "maxTessellationEvaluationOutputComponents": 128, - "maxTessellationGenerationLevel": 64, - "maxTessellationPatchSize": 32, - "maxTexelBufferElements": 134217728, - "maxTexelGatherOffset": 31, - "maxTexelOffset": 7, - "maxUniformBufferRange": 65536, - "maxVertexInputAttributeOffset": 2047, - "maxVertexInputAttributes": 32, - "maxVertexInputBindingStride": 2048, - "maxVertexInputBindings": 32, - "maxVertexOutputComponents": 128, - "maxViewportDimensions": [ - 16384, - 16384 - ], - "maxViewports": 16, - "minInterpolationOffset": -0.5, - "minMemoryMapAlignment": 64, - "minStorageBufferOffsetAlignment": 32, - "minTexelBufferOffsetAlignment": 16, - "minTexelGatherOffset": -32, - "minTexelOffset": -8, - "minUniformBufferOffsetAlignment": 256, - "mipmapPrecisionBits": 8, - "nonCoherentAtomSize": 64, - "optimalBufferCopyOffsetAlignment": 1, - "optimalBufferCopyRowPitchAlignment": 1, - "pointSizeGranularity": 0.125, - "pointSizeRange": [ - 1.0, - 189.875 - ], - "sampledImageColorSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "sampledImageDepthSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "sampledImageIntegerSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "sampledImageStencilSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT", - "VK_SAMPLE_COUNT_16_BIT" - ], - "sparseAddressSpaceSize": 18446744073709551615, - "standardSampleLocations": true, - "storageImageSampleCounts": [ - "VK_SAMPLE_COUNT_1_BIT", - "VK_SAMPLE_COUNT_2_BIT", - "VK_SAMPLE_COUNT_4_BIT", - "VK_SAMPLE_COUNT_8_BIT" - ], - "strictLines": true, - "subPixelInterpolationOffsetBits": 4, - "subPixelPrecisionBits": 8, - "subTexelPrecisionBits": 8, - "timestampComputeAndGraphics": true, - "timestampPeriod": 1.0, - "viewportBoundsRange": [ - -32768.0, - 32768.0 - ], - "viewportSubPixelBits": 8 - }, - "pipelineCacheUUID": [ - 241, - 161, - 212, - 194, - 251, - 164, - 211, - 65, - 111, - 27, - 138, - 36, - 240, - 87, - 71, - 227 - ], - "sparseProperties": { - "residencyAlignedMipSize": false, - "residencyNonResidentStrict": true, - "residencyStandard2DBlockShape": true, - "residencyStandard2DMultisampleBlockShape": true, - "residencyStandard3DBlockShape": true - }, - "vendorID": 4318 - }, - "queues": [ - { - "minImageTransferGranularity": { - "depth": 1, - "height": 1, - "width": 1 - }, - "queueCount": 16, - "queueFlags": [ - "VK_QUEUE_GRAPHICS_BIT", - "VK_QUEUE_COMPUTE_BIT", - "VK_QUEUE_TRANSFER_BIT", - "VK_QUEUE_SPARSE_BINDING_BIT" - ], - "timestampValidBits": 64 - }, - { - "minImageTransferGranularity": { - "depth": 1, - "height": 1, - "width": 1 - }, - "queueCount": 1, - "queueFlags": [ - "VK_QUEUE_TRANSFER_BIT" - ], - "timestampValidBits": 64 - } - ], - "zSwapChainInfo": [ - { - "currentExtent": { - "height": 600, - "width": 800 - }, - "maxImageArrayLayers": 2048, - "maxImageCount": 8, - "maxImageExtent": { - "height": 16384, - "width": 16384 - }, - "minImageCount": 2, - "minImageExtent": { - "height": 1, - "width": 1 - } - } - ] -}; diff --git a/test/scenario.spec.js b/test/scenario.spec.js new file mode 100644 index 0000000..c611dc6 --- /dev/null +++ b/test/scenario.spec.js @@ -0,0 +1,85 @@ +'use strict' + +require('../index.js') + +const chai = require('chai') +const supertest = require('supertest') +const mongoose = require('mongoose') +const waterfall = require('async/waterfall') + +const expect = chai.expect +const app = supertest.agent('http://localhost:5000') +const db = mongoose.connection + +const scenarioForce = require('../assets/mocks/scenarios/force.json') +const scenarioEnterprise = require('../assets/mocks/scenarios/enterprise.json') + +const pageUrlPattern = /^(http:\/\/localhost:5000\/scenarios\?per_page=.&page=.)/ +const requestHeaders = { + 'content-type': 'application/json', + 'user-agent': 'LugBench/0.1.0', +} + +describe('Scenario', function() { + beforeEach(function (done) { + waterfall([ + function (callback){ + db.collection('scenarios').drop(function () { + callback() + }) + }, + function (callback) { + db.collection('scenarios').insert(scenarioForce, function() { + callback() + }) + }, + function (callback) { + db.collection('scenarios').insert(scenarioEnterprise, function() { + callback() + }) + }, + ], function () { + done() + }) + }) + + describe('GET /scenarios', function() { + it('should return a list of scenarios', function(done) { + app + .get('/scenarios') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(2) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should paginate the scenarios', function(done) { + app + .get('/scenarios?per_page=1&page=1') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.pages.last).to.match(pageUrlPattern) + expect(res.body.pages.next).to.match(pageUrlPattern) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) + + describe('GET /scenarios/:id', function() { + it('should return one scenario', function(done) { + app + .get(`/scenarios/${scenarioForce._id}`) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.length).to.be.equal(1) + expect(res.body[0]._id).to.have.string(scenarioForce._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) +}) diff --git a/test/score.spec.js b/test/score.spec.js new file mode 100644 index 0000000..d7699c7 --- /dev/null +++ b/test/score.spec.js @@ -0,0 +1,316 @@ +'use strict' + +require('../index.js') + +const _ = require('lodash') +const chai = require('chai') +const supertest = require('supertest') +const mongoose = require('mongoose') +const waterfall = require('async/waterfall') + +const expect = chai.expect +const app = supertest.agent('http://localhost:5000') +const db = mongoose.connection + +const device530 = require('../assets/mocks/devices/530.json') +const device960M = require('../assets/mocks/devices/960M.json') +const scenarioForce = require('../assets/mocks/scenarios/force.json') +const scenarioEnterprise = require('../assets/mocks/scenarios/enterprise.json') +const score40 = require('../assets/mocks/scores/40.json') +const score80 = require('../assets/mocks/scores/80.json') +const score120 = require('../assets/mocks/scores/120.json') +const score160 = require('../assets/mocks/scores/160.json') + +const pageUrlPattern = /^(http:\/\/localhost:5000\/scores\?per_page=.&page=.)/ +const requestHeaders = { + 'content-type': 'application/json', + 'user-agent': 'LugBench/0.1.0', +} + +describe('Score', function() { + beforeEach(function (done) { + waterfall([ + function (callback){ + db.collection('devices').drop(function () { + callback() + }) + }, + function (callback){ + db.collection('scenarios').drop(function () { + callback() + }) + }, + function (callback){ + db.collection('scores').drop(function () { + callback() + }) + }, + function (callback) { + db.collection('devices').insert(device530, function() { + callback() + }) + }, + function (callback) { + db.collection('devices').insert(device960M, function() { + callback() + }) + }, + function (callback) { + db.collection('scenarios').insert(scenarioForce, function() { + callback() + }) + }, + function (callback) { + db.collection('scenarios').insert(scenarioEnterprise, function() { + callback() + }) + }, + function (callback) { + score40.device = `${device530._id}` + score40.scenario = `${scenarioForce._id}` + db.collection('scores').insert(score40, function() { + callback() + }) + }, + function (callback) { + score80.device = `${device960M._id}` + score80.scenario = `${scenarioEnterprise._id}` + db.collection('scores').insert(score80, function() { + callback() + }) + }, + function (callback) { + score120.device = `${device960M._id}` + score120.scenario = `${scenarioEnterprise._id}` + db.collection('scores').insert(score120, function() { + callback() + }) + }, + function (callback) { + score160.device = `${device530._id}` + score160.scenario = `${scenarioForce._id}` + db.collection('scores').insert(score160, function() { + callback() + }) + }, + ], function () { + done() + }) + }) + + describe('GET /scores', function() { + it('should return a list of scores', function(done) { + app + .get('/scores') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(4) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should populate the scores with devices', function(done) { + app + .get('/scores?populate=device') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(4) + expect(res.body.data[0]._id).to.have.string(score160._id) + expect(res.body.data[1]._id).to.have.string(score120._id) + expect(res.body.data[2]._id).to.have.string(score80._id) + expect(res.body.data[3]._id).to.have.string(score40._id) + expect(res.body.data[0].device).to.be.an('object') + expect(res.body.data[1].device).to.be.an('object') + expect(res.body.data[2].device).to.be.an('object') + expect(res.body.data[3].device).to.be.an('object') + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should populate the scores with scenarios', function(done) { + app + .get('/scores?populate=scenario') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(4) + expect(res.body.data[0]._id).to.have.string(score160._id) + expect(res.body.data[1]._id).to.have.string(score120._id) + expect(res.body.data[2]._id).to.have.string(score80._id) + expect(res.body.data[3]._id).to.have.string(score40._id) + expect(res.body.data[0].scenario).to.be.an('object') + expect(res.body.data[1].scenario).to.be.an('object') + expect(res.body.data[2].scenario).to.be.an('object') + expect(res.body.data[3].scenario).to.be.an('object') + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should populate the scores with devices and scenarios', function(done) { + app + .get('/scores?populate=device&populate=scenario') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(4) + expect(res.body.data[0]._id).to.have.string(score160._id) + expect(res.body.data[1]._id).to.have.string(score120._id) + expect(res.body.data[2]._id).to.have.string(score80._id) + expect(res.body.data[3]._id).to.have.string(score40._id) + expect(res.body.data[0].device).to.be.an('object') + expect(res.body.data[1].device).to.be.an('object') + expect(res.body.data[2].device).to.be.an('object') + expect(res.body.data[3].device).to.be.an('object') + expect(res.body.data[0].scenario).to.be.an('object') + expect(res.body.data[1].scenario).to.be.an('object') + expect(res.body.data[2].scenario).to.be.an('object') + expect(res.body.data[3].scenario).to.be.an('object') + expect(res.statusCode).to.be.equal(200) + done() + }) + + }) + + it('should group the scores by devices', function(done) { + app + .get('/scores?group=device') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(2) + expect(res.body.data[0].averageFps).to.be.equal(100) + expect(res.body.data[1].averageFps).to.be.equal(100) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should group the scores by scenarios', function(done) { + app + .get('/scores?group=scenario') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(2) + expect(res.body.data[0].averageFps).to.be.equal(100) + expect(res.body.data[1].averageFps).to.be.equal(100) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should group the scores by devices and scenarios', function(done) { + app + .get('/scores?group=device&group=scenario') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(2) + expect(res.body.data[0].averageFps).to.be.equal(100) + expect(res.body.data[1].averageFps).to.be.equal(100) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + + it('should paginate the scores', function(done) { + app + .get('/scores?per_page=1&page=1') + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.data.length).to.be.equal(1) + expect(res.body.pages.last).to.match(pageUrlPattern) + expect(res.body.pages.next).to.match(pageUrlPattern) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) + + describe('GET /scores/:id', function() { + it('should return one score', function(done) { + app + .get('/scores/' + score40._id) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.length).to.be.equal(1) + expect(res.body[0]._id).to.have.string(score40._id) + expect(res.body[0].nbFrames).to.be.equal(score40.nbFrames) + expect(res.body[0].averageFps).to.be.equal(score40.averageFps) + expect(res.body[0].date).to.be.equal(score40.date) + expect(res.body[0].device).to.have.string(device530._id) + expect(res.body[0].scenario).to.have.string(scenarioForce._id) + expect(res.statusCode).to.be.equal(200) + done() + }) + }) + }) + + describe('POST /scores', function() { + beforeEach(function (done) { + waterfall([ + function (callback){ + db.collection('scores').drop(function () { + callback() + }) + }, + ], function () { + done() + }) + }) + + it('should create a score', function(done) { + app + .post('/scores') + .send(score40) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body._id).to.not.be.null + expect(res.statusCode).to.be.equal(201) + done() + }) + }) + + it('should reject a bad request', function(done) { + let wrongScore40 = _.cloneDeep(score40) + delete wrongScore40.nbFrames + app + .post('/scores') + .send(wrongScore40) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.code).to.be.equal('BadRequest') + expect(res.body.message).to.be.equal('"nbFrames" is required') + expect(res.statusCode).to.be.equal(400) + done() + }) + }) + + it('should reject a bad device', function(done) { + score40.device = '000000000000000000000000' + app + .post('/scores') + .send(score40) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.code).to.be.equal('Forbidden') + expect(res.body.message).to.be.equal('missing device or scenario') + expect(res.statusCode).to.be.equal(403) + done() + }) + }) + + it('should reject a bad scenario', function(done) { + score40.scenario = '000000000000000000000000' + app + .post('/scores') + .send(score40) + .set(requestHeaders) + .end(function(err, res) { + expect(res.body.code).to.be.equal('Forbidden') + expect(res.body.message).to.be.equal('missing device or scenario') + expect(res.statusCode).to.be.equal(403) + done() + }) + }) + }) + +}) diff --git a/v1/index.js b/v1/index.js deleted file mode 100644 index 1b1db03..0000000 --- a/v1/index.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -var express = require('express'); -var mongoose = require('mongoose'); -var middlewareAuth = require('../middlewares/authentication'); - -var Gpu = require('./models/gpu'); -var router = express.Router(); - -router.put('/gpus', (req, res) => { - let newGpu = new Gpu(req.body); - - if (!req.body) return res.status(400).send('Missing object'); - - newGpu.save().then((doc) => { - res.status(200).send({ - data: doc - }); - }, err => { - res.status(500).send({ - err: err - }); - }); -}); - -router.put('/gpus/:id', middlewareAuth, (req, res) => { - if (!req.params.id) return res.status(400).send('Missing id parameter.'); - if (!req.body) return res.status(400).send('Missing object'); - - Gpu.update({ - _id: mongoose.Types.ObjectId(req.params.id) - }, { - $set: req.body - }).then(doc => { - res.status(200).send({ - data: doc - }); - }, err => { - res.status(500).send({ - err: err - }); - }); - -}); - -router.get('/gpus', (req, res) => { - Gpu.find().then((doc) => { - res.status(200).send({ - data: doc - }); - }, err => { - res.status(500).send({ - err: err - }); - }); -}); - -router.get('/gpus/:id', (req, res) => { - if (!req.params.id) return res.status(400).send('Missing id parameter.'); - - Gpu.findOne({ - _id: mongoose.Types.ObjectId(req.params.id) - }).then((doc) => { - res.status(200).send({ - data: doc - }); - }, err => { - res.status(500).send({ - err: err - }); - }); -}); - -module.exports = router; diff --git a/v1/models/gpu.js b/v1/models/gpu.js deleted file mode 100644 index b0dd11c..0000000 --- a/v1/models/gpu.js +++ /dev/null @@ -1,227 +0,0 @@ -'use strict'; - -var mongoose = require('mongoose'); -require('../customTypes/uint12.js')(mongoose); -require('../customTypes/uint10.js')(mongoose); -require('../customTypes/formats.js')(mongoose); - -var schema = new mongoose.Schema({ - "properties": { - "apiVersion": { - "major": mongoose.Schema.Types.Uint10, - "minor": mongoose.Schema.Types.Uint10, - "patch": mongoose.Schema.Types.Uint12 - }, - "driverVersion": { - "major": mongoose.Schema.Types.Uint10, - "minor": mongoose.Schema.Types.Uint10, - "patch": mongoose.Schema.Types.Uint12 - }, - "vendorID": Number, - "deviceID": Number, - "deviceName": String, - "deviceType": String, - "pipelineCacheUUID": [Number], - "limits": { - "maxImageDimension1D": Number, - "maxImageDimension2D": Number, - "maxImageDimension3D": Number, - "maxImageDimensionCube": Number, - "maxImageArrayLayers": Number, - "maxTexelBufferElements": Number, - "maxUniformBufferRange": Number, - "maxStorageBufferRange": Number, - "maxPushConstantsSize": Number, - "maxMemoryAllocationCount": Number, - "maxSamplerAllocationCount": Number, - "bufferImageGranularity": Number, - "sparseAddressSpaceSize": Number, - "maxBoundDescriptorSets": Number, - "maxPerStageDescriptorSamplers": Number, - "maxPerStageDescriptorUniformBuffers": Number, - "maxPerStageDescriptorStorageBuffers": Number, - "maxPerStageDescriptorSampledImages": Number, - "maxPerStageDescriptorStorageImages": Number, - "maxPerStageDescriptorInputAttachments": Number, - "maxPerStageResources": Number, - "maxDescriptorSetSamplers": Number, - "maxDescriptorSetUniformBuffers": Number, - "maxDescriptorSetUniformBuffersDynamic": Number, - "maxDescriptorSetStorageBuffers": Number, - "maxDescriptorSetStorageBuffersDynamic": Number, - "maxDescriptorSetSampledImages": Number, - "maxDescriptorSetStorageImages": Number, - "maxDescriptorSetInputAttachments": Number, - "maxVertexInputAttributes": Number, - "maxVertexInputBindings": Number, - "maxVertexInputAttributeOffset": Number, - "maxVertexInputBindingStride": Number, - "maxVertexOutputComponents": Number, - "maxTessellationGenerationLevel": Number, - "maxTessellationPatchSize": Number, - "maxTessellationControlPerVertexInputComponents": Number, - "maxTessellationControlPerVertexOutputComponents": Number, - "maxTessellationControlPerPatchOutputComponents": Number, - "maxTessellationControlTotalOutputComponents": Number, - "maxTessellationEvaluationInputComponents": Number, - "maxTessellationEvaluationOutputComponents": Number, - "maxGeometryShaderInvocations": Number, - "maxGeometryInputComponents": Number, - "maxGeometryOutputComponents": Number, - "maxGeometryOutputVertices": Number, - "maxGeometryTotalOutputComponents": Number, - "maxFragmentInputComponents": Number, - "maxFragmentOutputAttachments": Number, - "maxFragmentDualSrcAttachments": Number, - "maxFragmentCombinedOutputResources": Number, - "maxComputeSharedMemorySize": Number, - "maxComputeWorkGroupCount": [Number], - "maxComputeWorkGroupInvocations": Number, - "maxComputeWorkGroupSize": [Number], - "subPixelPrecisionBits": Number, - "subTexelPrecisionBits": Number, - "mipmapPrecisionBits": Number, - "maxDrawIndexedIndexValue": Number, - "maxDrawIndirectCount": Number, - "maxSamplerLodBias": Number, - "maxSamplerAnisotropy": Number, - "maxViewports": Number, - "maxViewportDimensions": [Number], - "viewportBoundsRange": [Number], - "viewportSubPixelBits": Number, - "minMemoryMapAlignment": Number, - "minTexelBufferOffsetAlignment": Number, - "minUniformBufferOffsetAlignment": Number, - "minStorageBufferOffsetAlignment": Number, - "minTexelOffset": Number, - "maxTexelOffset": Number, - "minTexelGatherOffset": Number, - "maxTexelGatherOffset": Number, - "minInterpolationOffset": Number, - "maxInterpolationOffset": Number, - "subPixelInterpolationOffsetBits": Number, - "maxFramebufferWidth": Number, - "maxFramebufferHeight": Number, - "maxFramebufferLayers": Number, - "framebufferColorSampleCounts": [String], - "framebufferDepthSampleCounts": [String], - "framebufferStencilSampleCounts": [String], - "framebufferNoAttachmentsSampleCounts": [String], - "maxColorAttachments": Number, - "sampledImageColorSampleCounts": [String], - "sampledImageIntegerSampleCounts": [String], - "sampledImageDepthSampleCounts": [String], - "sampledImageStencilSampleCounts": [String], - "storageImageSampleCounts": [String], - "maxSampleMaskWords": Number, - "timestampComputeAndGraphics": Boolean, - "timestampPeriod": Number, - "maxClipDistances": Number, - "maxCullDistances": Number, - "maxCombinedClipAndCullDistances": Number, - "discreteQueuePriorities": Number, - "pointSizeRange": [Number], - "lineWidthRange": [Number], - "pointSizeGranularity": Number, - "lineWidthGranularity": Number, - "strictLines": Boolean, - "standardSampleLocations": Boolean, - "optimalBufferCopyOffsetAlignment": Number, - "optimalBufferCopyRowPitchAlignment": Number, - "nonCoherentAtomSize": Number - }, - "sparseProperties": { - "residencyStandard2DBlockShape": Boolean, - "residencyStandard2DMultisampleBlockShape": Boolean, - "residencyStandard3DBlockShape": Boolean, - "residencyAlignedMipSize": Boolean, - "residencyNonResidentStrict": Boolean - } - }, - "features": { - "robustBufferAccess": Boolean, - "fullDrawIndexUint32": Boolean, - "imageCubeArray": Boolean, - "independentBlend": Boolean, - "geometryShader": Boolean, - "tessellationShader": Boolean, - "sampleRateShading": Boolean, - "dualSrcBlend": Boolean, - "logicOp": Boolean, - "multiDrawIndirect": Boolean, - "drawIndirectFirstInstance": Boolean, - "depthClamp": Boolean, - "depthBiasClamp": Boolean, - "fillModeNonSolid": Boolean, - "depthBounds": Boolean, - "wideLines": Boolean, - "largePoints": Boolean, - "alphaToOne": Boolean, - "multiViewport": Boolean, - "samplerAnisotropy": Boolean, - "textureCompressionETC2": Boolean, - "textureCompressionASTC_LDR": Boolean, - "textureCompressionBC": Boolean, - "occlusionQueryPrecise": Boolean, - "pipelineStatisticsQuery": Boolean, - "vertexPipelineStoresAndAtomics": Boolean, - "fragmentStoresAndAtomics": Boolean, - "shaderTessellationAndGeometryPointSize": Boolean, - "shaderImageGatherExtended": Boolean, - "shaderStorageImageExtendedFormats": Boolean, - "shaderStorageImageMultisample": Boolean, - "shaderStorageImageReadWithoutFormat": Boolean, - "shaderStorageImageWriteWithoutFormat": Boolean, - "shaderUniformBufferArrayDynamicIndexing": Boolean, - "shaderSampledImageArrayDynamicIndexing": Boolean, - "shaderStorageBufferArrayDynamicIndexing": Boolean, - "shaderStorageImageArrayDynamicIndexing": Boolean, - "shaderClipDistance": Boolean, - "shaderCullDistance": Boolean, - "shaderFloat64": Boolean, - "shaderInt64": Boolean, - "shaderInt16": Boolean, - "shaderResourceResidency": Boolean, - "shaderResourceMinLod": Boolean, - "sparseBinding": Boolean, - "sparseResidencyBuffer": Boolean, - "sparseResidencyImage2D": Boolean, - "sparseResidencyImage3D": Boolean, - "sparseResidency2Samples": Boolean, - "sparseResidency4Samples": Boolean, - "sparseResidency8Samples": Boolean, - "sparseResidency16Samples": Boolean, - "sparseResidencyAliased": Boolean, - "variableMultisampleRate": Boolean, - "inheritedQueries": Boolean - }, - "memory": { - "memoryTypeCount": Number, - "memoryTypes": [{ - "heapIndex": Number, - "propertyFlags": [String] - }], - "memoryHeapCount": Number, - "memoryHeaps": [{ - "heapIndex": Number, - "propertyFlags": [String] - }] - }, - "queues": [{ - "minImageTransferGranularity": { - "depth": Number, - "height": Number, - "width": Number - }, - "queueCount": Number, - "queueFlags": [String], - "timestampValidBits": Number - }], - "extensions": [{ - "extensionName": String, - "specVersion": Number - }], - "formats": [mongoose.Schema.Types.Formats] -}); - -module.exports = mongoose.model('Gpu', schema); diff --git a/validation/devices/get/id/index.js b/validation/devices/get/id/index.js new file mode 100644 index 0000000..b221a0a --- /dev/null +++ b/validation/devices/get/id/index.js @@ -0,0 +1,10 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + 'params': Joi.object().keys({ + 'id': Joi.objectId().required(), + }).required(), +} diff --git a/validation/devices/get/index.js b/validation/devices/get/index.js new file mode 100644 index 0000000..863a267 --- /dev/null +++ b/validation/devices/get/index.js @@ -0,0 +1,16 @@ +'use strict' + +const Joi = require('joi') + +module.exports = { + 'params': Joi.object().keys({ + 'name': Joi.string(), + 'os': [ + Joi.string().valid('Windows', 'Linux', 'Android'), + Joi.array().items(Joi.string().valid('Windows', 'Linux', 'Android')), + ], + 'driverVersion': Joi.number(), + 'vendorId': Joi.number(), + 'deviceId': Joi.number(), + }).required(), +} diff --git a/validation/devices/post/index.js b/validation/devices/post/index.js new file mode 100644 index 0000000..14c32f1 --- /dev/null +++ b/validation/devices/post/index.js @@ -0,0 +1,238 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + body: Joi.object().keys({ + '_id': Joi.objectId(), + 'name': Joi.string().required(), + 'os': Joi.string().valid('Windows', 'Linux', 'Android'), + 'deviceId': Joi.number().required(), + 'vendorId': Joi.number().required(), + 'driverVersion': Joi.number().required(), + 'vulkanInfo': Joi.object().keys({ + 'properties': Joi.object().keys({ + 'apiVersion': Joi.object().keys({ + 'major': Joi.number().required(), + 'minor': Joi.number().required(), + 'patch': Joi.number().required(), + }).required(), + 'driverVersion': Joi.number().required(), + 'vendorID': Joi.number().required(), + 'deviceID': Joi.number().required(), + 'deviceName': Joi.string().required(), + 'deviceType': Joi.string().required(), + 'pipelineCacheUUID': Joi.array().items(Joi.number()).required(), + 'limits': Joi.object().keys({ + 'maxImageDimension1D': Joi.number().required(), + 'maxImageDimension2D': Joi.number().required(), + 'maxImageDimension3D': Joi.number().required(), + 'maxImageDimensionCube': Joi.number().required(), + 'maxImageArrayLayers': Joi.number().required(), + 'maxTexelBufferElements': Joi.number().required(), + 'maxUniformBufferRange': Joi.number().required(), + 'maxStorageBufferRange': Joi.number().required(), + 'maxPushConstantsSize': Joi.number().required(), + 'maxMemoryAllocationCount': Joi.number().required(), + 'maxSamplerAllocationCount': Joi.number().required(), + 'bufferImageGranularity': Joi.number().required(), + 'sparseAddressSpaceSize': Joi.number().required(), + 'maxBoundDescriptorSets': Joi.number().required(), + 'maxPerStageDescriptorSamplers': Joi.number().required(), + 'maxPerStageDescriptorUniformBuffers': Joi.number().required(), + 'maxPerStageDescriptorStorageBuffers': Joi.number().required(), + 'maxPerStageDescriptorSampledImages': Joi.number().required(), + 'maxPerStageDescriptorStorageImages': Joi.number().required(), + 'maxPerStageDescriptorInputAttachments': Joi.number().required(), + 'maxPerStageResources': Joi.number().required(), + 'maxDescriptorSetSamplers': Joi.number().required(), + 'maxDescriptorSetUniformBuffers': Joi.number().required(), + 'maxDescriptorSetUniformBuffersDynamic': Joi.number().required(), + 'maxDescriptorSetStorageBuffers': Joi.number().required(), + 'maxDescriptorSetStorageBuffersDynamic': Joi.number().required(), + 'maxDescriptorSetSampledImages': Joi.number().required(), + 'maxDescriptorSetStorageImages': Joi.number().required(), + 'maxDescriptorSetInputAttachments': Joi.number().required(), + 'maxVertexInputAttributes': Joi.number().required(), + 'maxVertexInputBindings': Joi.number().required(), + 'maxVertexInputAttributeOffset': Joi.number().required(), + 'maxVertexInputBindingStride': Joi.number().required(), + 'maxVertexOutputComponents': Joi.number().required(), + 'maxTessellationGenerationLevel': Joi.number().required(), + 'maxTessellationPatchSize': Joi.number().required(), + 'maxTessellationControlPerVertexInputComponents': Joi.number().required(), + 'maxTessellationControlPerVertexOutputComponents': Joi.number().required(), + 'maxTessellationControlPerPatchOutputComponents': Joi.number().required(), + 'maxTessellationControlTotalOutputComponents': Joi.number().required(), + 'maxTessellationEvaluationInputComponents': Joi.number().required(), + 'maxTessellationEvaluationOutputComponents': Joi.number().required(), + 'maxGeometryShaderInvocations': Joi.number().required(), + 'maxGeometryInputComponents': Joi.number().required(), + 'maxGeometryOutputComponents': Joi.number().required(), + 'maxGeometryOutputVertices': Joi.number().required(), + 'maxGeometryTotalOutputComponents': Joi.number().required(), + 'maxFragmentInputComponents': Joi.number().required(), + 'maxFragmentOutputAttachments': Joi.number().required(), + 'maxFragmentDualSrcAttachments': Joi.number().required(), + 'maxFragmentCombinedOutputResources': Joi.number().required(), + 'maxComputeSharedMemorySize': Joi.number().required(), + 'maxComputeWorkGroupCount': Joi.array().items(Joi.number()).required(), + 'maxComputeWorkGroupInvocations': Joi.number().required(), + 'maxComputeWorkGroupSize': Joi.array().items(Joi.number()).required(), + 'subPixelPrecisionBits': Joi.number().required(), + 'subTexelPrecisionBits': Joi.number().required(), + 'mipmapPrecisionBits': Joi.number().required(), + 'maxDrawIndexedIndexValue': Joi.number().required(), + 'maxDrawIndirectCount': Joi.number().required(), + 'maxSamplerLodBias': Joi.number().required(), + 'maxSamplerAnisotropy': Joi.number().required(), + 'maxViewports': Joi.number().required(), + 'maxViewportDimensions': Joi.array().items(Joi.number()).required(), + 'viewportBoundsRange': Joi.array().items(Joi.number()).required(), + 'viewportSubPixelBits': Joi.number().required(), + 'minMemoryMapAlignment': Joi.number().required(), + 'minTexelBufferOffsetAlignment': Joi.number().required(), + 'minUniformBufferOffsetAlignment': Joi.number().required(), + 'minStorageBufferOffsetAlignment': Joi.number().required(), + 'minTexelOffset': Joi.number().required(), + 'maxTexelOffset': Joi.number().required(), + 'minTexelGatherOffset': Joi.number().required(), + 'maxTexelGatherOffset': Joi.number().required(), + 'minInterpolationOffset': Joi.number().required(), + 'maxInterpolationOffset': Joi.number().required(), + 'subPixelInterpolationOffsetBits': Joi.number().required(), + 'maxFramebufferWidth': Joi.number().required(), + 'maxFramebufferHeight': Joi.number().required(), + 'maxFramebufferLayers': Joi.number().required(), + 'framebufferColorSampleCounts': Joi.array().items(Joi.string()).required(), + 'framebufferDepthSampleCounts': Joi.array().items(Joi.string()).required(), + 'framebufferStencilSampleCounts': Joi.array().items(Joi.string()).required(), + 'framebufferNoAttachmentsSampleCounts': Joi.array().items(Joi.string()).required(), + 'maxColorAttachments': Joi.number().required(), + 'sampledImageColorSampleCounts': Joi.array().items(Joi.string()).required(), + 'sampledImageIntegerSampleCounts': Joi.array().items(Joi.string()).required(), + 'sampledImageDepthSampleCounts': Joi.array().items(Joi.string()).required(), + 'sampledImageStencilSampleCounts': Joi.array().items(Joi.string()).required(), + 'storageImageSampleCounts': Joi.array().items(Joi.string()).required(), + 'maxSampleMaskWords': Joi.number().required(), + 'timestampComputeAndGraphics': Joi.boolean().required(), + 'timestampPeriod': Joi.number().required(), + 'maxClipDistances': Joi.number().required(), + 'maxCullDistances': Joi.number().required(), + 'maxCombinedClipAndCullDistances': Joi.number().required(), + 'discreteQueuePriorities': Joi.number().required(), + 'pointSizeRange': Joi.array().items(Joi.number()).required(), + 'lineWidthRange': Joi.array().items(Joi.number()).required(), + 'pointSizeGranularity': Joi.number().required(), + 'lineWidthGranularity': Joi.number().required(), + 'strictLines': Joi.boolean().required(), + 'standardSampleLocations': Joi.boolean().required(), + 'optimalBufferCopyOffsetAlignment': Joi.number().required(), + 'optimalBufferCopyRowPitchAlignment': Joi.number().required(), + 'nonCoherentAtomSize': Joi.number().required(), + }).required(), + 'sparseProperties': Joi.object().keys({ + 'residencyStandard2DBlockShape': Joi.boolean().required(), + 'residencyStandard2DMultisampleBlockShape': Joi.boolean().required(), + 'residencyStandard3DBlockShape': Joi.boolean().required(), + 'residencyAlignedMipSize': Joi.boolean().required(), + 'residencyNonResidentStrict': Joi.boolean().required(), + }).required(), + }).required(), + 'features': Joi.object().keys({ + 'robustBufferAccess': Joi.boolean().required(), + 'fullDrawIndexUint32': Joi.boolean().required(), + 'imageCubeArray': Joi.boolean().required(), + 'independentBlend': Joi.boolean().required(), + 'geometryShader': Joi.boolean().required(), + 'tessellationShader': Joi.boolean().required(), + 'sampleRateShading': Joi.boolean().required(), + 'dualSrcBlend': Joi.boolean().required(), + 'logicOp': Joi.boolean().required(), + 'multiDrawIndirect': Joi.boolean().required(), + 'drawIndirectFirstInstance': Joi.boolean().required(), + 'depthClamp': Joi.boolean().required(), + 'depthBiasClamp': Joi.boolean().required(), + 'fillModeNonSolid': Joi.boolean().required(), + 'depthBounds': Joi.boolean().required(), + 'wideLines': Joi.boolean().required(), + 'largePoints': Joi.boolean().required(), + 'alphaToOne': Joi.boolean().required(), + 'multiViewport': Joi.boolean().required(), + 'samplerAnisotropy': Joi.boolean().required(), + 'textureCompressionETC2': Joi.boolean().required(), + 'textureCompressionASTC_LDR': Joi.boolean().required(), + 'textureCompressionBC': Joi.boolean().required(), + 'occlusionQueryPrecise': Joi.boolean().required(), + 'pipelineStatisticsQuery': Joi.boolean().required(), + 'vertexPipelineStoresAndAtomics': Joi.boolean().required(), + 'fragmentStoresAndAtomics': Joi.boolean().required(), + 'shaderTessellationAndGeometryPointSize': Joi.boolean().required(), + 'shaderImageGatherExtended': Joi.boolean().required(), + 'shaderStorageImageExtendedFormats': Joi.boolean().required(), + 'shaderStorageImageMultisample': Joi.boolean().required(), + 'shaderStorageImageReadWithoutFormat': Joi.boolean().required(), + 'shaderStorageImageWriteWithoutFormat': Joi.boolean().required(), + 'shaderUniformBufferArrayDynamicIndexing': Joi.boolean().required(), + 'shaderSampledImageArrayDynamicIndexing': Joi.boolean().required(), + 'shaderStorageBufferArrayDynamicIndexing': Joi.boolean().required(), + 'shaderStorageImageArrayDynamicIndexing': Joi.boolean().required(), + 'shaderClipDistance': Joi.boolean().required(), + 'shaderCullDistance': Joi.boolean().required(), + 'shaderFloat64': Joi.boolean().required(), + 'shaderInt64': Joi.boolean().required(), + 'shaderInt16': Joi.boolean().required(), + 'shaderResourceResidency': Joi.boolean().required(), + 'shaderResourceMinLod': Joi.boolean().required(), + 'sparseBinding': Joi.boolean().required(), + 'sparseResidencyBuffer': Joi.boolean().required(), + 'sparseResidencyImage2D': Joi.boolean().required(), + 'sparseResidencyImage3D': Joi.boolean().required(), + 'sparseResidency2Samples': Joi.boolean().required(), + 'sparseResidency4Samples': Joi.boolean().required(), + 'sparseResidency8Samples': Joi.boolean().required(), + 'sparseResidency16Samples': Joi.boolean().required(), + 'sparseResidencyAliased': Joi.boolean().required(), + 'variableMultisampleRate': Joi.boolean().required(), + 'inheritedQueries': Joi.boolean().required(), + }).required(), + 'memory': Joi.object().keys({ + 'memoryTypes': Joi.array().items(Joi.object().keys({ + 'heapIndex': Joi.number(), + 'propertyFlags': Joi.array().items(Joi.string()), + })), + 'memoryHeaps': Joi.array().items(Joi.object().keys({ + 'flags': Joi.array().items(Joi.string()), + 'size': Joi.number(), + })), + }).required(), + 'queues': Joi.array().items(Joi.object().keys({ + 'minImageTransferGranularity': Joi.object().keys({ + 'depth': Joi.number().required(), + 'height': Joi.number().required(), + 'width': Joi.number().required(), + }).required(), + 'queueCount': Joi.number().required(), + 'queueFlags': Joi.array().items(Joi.string()).required(), + 'timestampValidBits': Joi.number().required(), + })).required(), + 'swapchain': Joi.object().keys({ + 'maxImageArrayLayers': Joi.number(), + 'minImageCount': Joi.number(), + 'maxImageCount': Joi.number(), + 'formats': Joi.array().items(Joi.string()), + 'presentModes': Joi.array().items(Joi.string()), + 'supportedTransforms': Joi.array().items(Joi.string()), + 'supportedCompositeAlpha': Joi.array().items(Joi.string()), + 'supportedUsageFlags': Joi.array().items(Joi.string()), + 'surfaceExtension': Joi.string(), + }).required(), + 'extensions': Joi.array().items(Joi.object().keys({ + 'extensionName': Joi.string().required(), + 'specVersion': Joi.number().required(), + })).required(), + 'formats': Joi.array().required(), + }).required(), + }).required(), +} diff --git a/validation/scenarios/get/id/index.js b/validation/scenarios/get/id/index.js new file mode 100644 index 0000000..b221a0a --- /dev/null +++ b/validation/scenarios/get/id/index.js @@ -0,0 +1,10 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + 'params': Joi.object().keys({ + 'id': Joi.objectId().required(), + }).required(), +} diff --git a/validation/scenarios/get/index.js b/validation/scenarios/get/index.js new file mode 100644 index 0000000..5697c65 --- /dev/null +++ b/validation/scenarios/get/index.js @@ -0,0 +1,7 @@ +'use strict' + +const Joi = require('joi') + +module.exports = { + 'params': Joi.object().keys({}).required(), +} diff --git a/validation/scores/get/id/index.js b/validation/scores/get/id/index.js new file mode 100644 index 0000000..b221a0a --- /dev/null +++ b/validation/scores/get/id/index.js @@ -0,0 +1,10 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + 'params': Joi.object().keys({ + 'id': Joi.objectId().required(), + }).required(), +} diff --git a/validation/scores/get/index.js b/validation/scores/get/index.js new file mode 100644 index 0000000..0f26777 --- /dev/null +++ b/validation/scores/get/index.js @@ -0,0 +1,25 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + 'params': Joi.object().keys({ + 'device': [ + Joi.objectId(), + Joi.array().items(Joi.objectId()), + ], + 'scenario': [ + Joi.objectId(), + Joi.array().items(Joi.objectId()), + ], + 'group': [ + Joi.string().valid('device', 'scenario'), + Joi.array().items(Joi.string().valid('device', 'scenario')), + ], + 'populate': [ + Joi.string().valid('device', 'scenario'), + Joi.array().items(Joi.string().valid('device', 'scenario')), + ], + }).required(), +} diff --git a/validation/scores/post/index.js b/validation/scores/post/index.js new file mode 100644 index 0000000..20a367c --- /dev/null +++ b/validation/scores/post/index.js @@ -0,0 +1,15 @@ +'use strict' + +const Joi = require('joi') +Joi.objectId = require('joi-objectid')(Joi) + +module.exports = { + body: Joi.object().keys({ + '_id': Joi.objectId(), + 'device': Joi.objectId().required(), + 'scenario': Joi.objectId().required(), + 'nbFrames': Joi.number().required(), + 'averageFps': Joi.number().required(), + 'date': Joi.date().iso(), + }).required(), +}