[vulkan] Add image format qualifier to glsl files (#69330)

Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/69330

 ---

## Context

Previously, our shader files did not declare any [image format qualifiers](https://www.khronos.org/opengl/wiki/Layout_Qualifier_(GLSL)#Image_formats) for image layouts. This causes the SPIR-V modules produced to declare the [StorageImageWriteWithoutFormat](https://www.khronos.org/registry/SPIR-V/specs/unified1/SPIRV.html#_a_id_capability_a_capability) capability, which requires `shaderStorageImageWriteWithoutFormat` to be enabled in [VkPhysicalDeviceFeatures](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures.html). `shaderStorageImageWriteWithoutFormat` is not available on some devices, causing errors to be reported by the Vulkan validation layer.

## Changes

Vulkan shaders now declare the image format explicitly so that the SPIR-V modules produced are compatible with devices that do not have `shaderStorageImageWriteWithoutFormat` enabled.

Test Plan: Imported from OSS

Reviewed By: beback4u

Differential Revision: D32840909

Pulled By: SS-JIA

fbshipit-source-id: 76e0a0da68b423ebc74ae7e839b9cfaf57d2cd39
This commit is contained in:
Sicheng Stephen Jia
2021-12-07 16:21:18 -08:00
committed by Facebook GitHub Bot
parent e5a1ee0e5a
commit bede33e3f5
53 changed files with 218 additions and 164 deletions

View File

@ -7,7 +7,7 @@ from tools.codegen.code_template import CodeTemplate
H_NAME = "glsl.h" H_NAME = "glsl.h"
CPP_NAME = "glsl.cpp" CPP_NAME = "glsl.cpp"
DEFAULT_ENV = {"precision": "highp"} DEFAULT_ENV = {"precision": "highp", "format": "rgba32f"}
def findAllGlsls(path): def findAllGlsls(path):
cmd = "find " + path + " -name \"*.glsl\"" cmd = "find " + path + " -name \"*.glsl\""

View File

@ -9,7 +9,7 @@ from tools.codegen.code_template import CodeTemplate
H_NAME = "spv.h" H_NAME = "spv.h"
CPP_NAME = "spv.cpp" CPP_NAME = "spv.cpp"
DEFAULT_ENV = {"precision": "highp"} DEFAULT_ENV = {"precision": "highp", "format": "rgba32f"}
def getName(filePath): def getName(filePath):
return os.path.basename(filePath).replace("/", "_").replace(".", "_") return os.path.basename(filePath).replace("/", "_").replace(".", "_")

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
vec2 kernel; vec2 kernel;
vec2 stride; vec2 stride;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1; layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
layout(set = 0, binding = 3) uniform PRECISION restrict Block { layout(set = 0, binding = 3) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 isize0; ivec4 isize0;
ivec3 isize1; ivec3 isize1;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
float alpha; float alpha;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec3 size; ivec3 size;
float other; float other;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec3 size; ivec3 size;
float other; float other;
} uBlock; } uBlock;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1; layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2; layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uT; layout(set = 0, binding = 3) uniform PRECISION sampler3D uT;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
vec2 multiplier; vec2 multiplier;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 stride; ivec2 stride;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused) ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused)
ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused) ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused)
uint batch_size; // input tensor's batch size uint batch_size; // input tensor's batch size

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
vec2 clamp; vec2 clamp;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
vec2 clamp; vec2 clamp;
} uBlock; } uBlock;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,10 +1,12 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
layout(set = 0, rgba16f, binding = 0) writeonly PRECISION uniform image3D uOutput; layout(set = 0, binding = 0, FORMAT) writeonly PRECISION uniform image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) readonly buffer bias { layout(set = 0, binding = 3) readonly buffer bias {
vec4 data[]; vec4 data[];
} }
uBias; uBias;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) buffer PRECISION restrict readonly Bias { layout(set = 0, binding = 3) buffer PRECISION restrict readonly Bias {
vec4 data[]; vec4 data[];
} uBias; } uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel; layout(set = 0, binding = 2) uniform PRECISION sampler3D uKernel;
layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias; layout(set = 0, binding = 3) uniform PRECISION sampler3D uBias;
layout(set = 0, binding = 4) uniform PRECISION restrict Block { layout(set = 0, binding = 4) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 ikernel; ivec2 ikernel;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1; layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
layout(set = 0, binding = 3) uniform PRECISION restrict Block { layout(set = 0, binding = 3) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 isize0; ivec4 isize0;
ivec3 isize1; ivec3 isize1;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
float alpha; float alpha;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
float lambd; float lambd;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
float lambd; float lambd;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
float negative_slope; float negative_slope;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
float negative_slope; float negative_slope;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 kernel; ivec4 kernel;
ivec2 stride; ivec2 stride;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
} uBlock; } uBlock;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1; layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2; layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2;
layout(set = 0, binding = 3) uniform PRECISION restrict Block { layout(set = 0, binding = 3) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1; layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
layout(set = 0, binding = 3) uniform PRECISION restrict Block { layout(set = 0, binding = 3) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 isize0; ivec4 isize0;
ivec3 isize1; ivec3 isize1;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
float alpha; float alpha;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec3 size; ivec3 size;
float other; float other;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec3 size; ivec3 size;
float other; float other;
} uBlock; } uBlock;

View File

@ -1,15 +1,16 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uImage; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uImage;
layout(set = 0, binding = 1) buffer PRECISION restrict readonly Buffer { layout(set = 0, binding = 1) buffer PRECISION restrict readonly Buffer {
float data[]; float data[];
} uBuffer; } uBuffer;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 offset; ivec4 offset;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused) ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused)
ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused) ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused)
uvec4 tensor_size; // output tensor size uvec4 tensor_size; // output tensor size

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 pad; ivec4 pad;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused) ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused)
ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused) ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused)
uvec4 tensor_size; // output tensor size uvec4 tensor_size; // output tensor size

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,14 +1,15 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1; layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
layout(set = 0, binding = 3) uniform PRECISION restrict Block { layout(set = 0, binding = 3) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec4 isize0; ivec4 isize0;
ivec3 isize1; ivec3 isize1;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec3 isize; ivec3 isize;
float alpha; float alpha;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,12 +1,13 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION restrict Block { layout(set = 0, binding = 1) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
} uBlock; } uBlock;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec2 limits; ivec2 limits;
ivec2 padding; ivec2 padding;

View File

@ -1,13 +1,14 @@
#version 450 core #version 450 core
#define PRECISION $precision #define PRECISION $precision
#define FORMAT $format
layout(std430) buffer; layout(std430) buffer;
/* Qualifiers: layout - storage - precision - memory */ /* Qualifiers: layout - storage - precision - memory */
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput; layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput; layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
layout(set = 0, binding = 2) uniform PRECISION restrict Block { layout(set = 0, binding = 2) uniform PRECISION restrict Block {
ivec4 size; ivec4 size;
ivec2 isize; ivec2 isize;
vec2 scale; vec2 scale;

View File

@ -9,6 +9,9 @@ set(VULKAN_GEN_ARG_ENV "")
if(USE_VULKAN_RELAXED_PRECISION) if(USE_VULKAN_RELAXED_PRECISION)
string(APPEND VULKAN_GEN_ARG_ENV "precision=mediump") string(APPEND VULKAN_GEN_ARG_ENV "precision=mediump")
endif() endif()
if(USE_VULKAN_FP16_INFERENCE)
string(APPEND VULKAN_GEN_ARG_ENV "format=rgba16f")
endif()
if(USE_VULKAN_SHADERC_RUNTIME) if(USE_VULKAN_SHADERC_RUNTIME)
set(PYTHONPATH "$ENV{PYTHONPATH}") set(PYTHONPATH "$ENV{PYTHONPATH}")