Skip to content

Commit bede33e

Browse files
SS-JIAfacebook-github-bot
authored andcommitted
[vulkan] Add image format qualifier to glsl files (pytorch#69330)
Summary: Pull Request resolved: pytorch#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
1 parent e5a1ee0 commit bede33e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+218
-164
lines changed

aten/src/ATen/gen_vulkan_glsl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
H_NAME = "glsl.h"
99
CPP_NAME = "glsl.cpp"
10-
DEFAULT_ENV = {"precision": "highp"}
10+
DEFAULT_ENV = {"precision": "highp", "format": "rgba32f"}
1111

1212
def findAllGlsls(path):
1313
cmd = "find " + path + " -name \"*.glsl\""

aten/src/ATen/gen_vulkan_spv.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
H_NAME = "spv.h"
1111
CPP_NAME = "spv.cpp"
12-
DEFAULT_ENV = {"precision": "highp"}
12+
DEFAULT_ENV = {"precision": "highp", "format": "rgba32f"}
1313

1414
def getName(filePath):
1515
return os.path.basename(filePath).replace("/", "_").replace(".", "_")

aten/src/ATen/native/vulkan/glsl/adaptive_avg_pool2d.glsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
10-
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
11+
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
1112
ivec4 size;
1213
vec2 kernel;
1314
vec2 stride;

aten/src/ATen/native/vulkan/glsl/add.glsl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
10-
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
11-
layout(set = 0, binding = 3) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
11+
layout(set = 0, binding = 2) uniform PRECISION sampler3D uInput1;
12+
layout(set = 0, binding = 3) uniform PRECISION restrict Block {
1213
ivec4 size;
1314
ivec4 isize0;
1415
ivec3 isize1;

aten/src/ATen/native/vulkan/glsl/add_.glsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
10-
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput0;
11+
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
1112
ivec4 size;
1213
ivec3 isize;
1314
float alpha;

aten/src/ATen/native/vulkan/glsl/add_scalar.glsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
10-
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
11+
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
1112
ivec3 size;
1213
float other;
1314
} uBlock;

aten/src/ATen/native/vulkan/glsl/add_scalar_.glsl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0, rgba16f) uniform PRECISION restrict image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION restrict Block {
1011
ivec3 size;
1112
float other;
1213
} uBlock;

aten/src/ATen/native/vulkan/glsl/addmm.glsl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1;
10-
layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2;
11-
layout(set = 0, binding = 3) uniform PRECISION sampler3D uT;
12-
layout(set = 0, binding = 4) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uM1;
11+
layout(set = 0, binding = 2) uniform PRECISION sampler3D uM2;
12+
layout(set = 0, binding = 3) uniform PRECISION sampler3D uT;
13+
layout(set = 0, binding = 4) uniform PRECISION restrict Block {
1314
ivec4 size;
1415
vec2 multiplier;
1516
} uBlock;

aten/src/ATen/native/vulkan/glsl/avg_pool2d.glsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0) uniform PRECISION restrict writeonly image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
10-
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
11+
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
1112
ivec4 size;
1213
ivec4 kernel;
1314
ivec2 stride;

aten/src/ATen/native/vulkan/glsl/cat_feature.glsl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#version 450 core
22
#define PRECISION $precision
3+
#define FORMAT $format
34

45
layout(std430) buffer;
56

67
/* Qualifiers: layout - storage - precision - memory */
78

8-
layout(set = 0, binding = 0, rgba16f) uniform PRECISION image3D uOutput;
9-
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
10-
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
9+
layout(set = 0, binding = 0, FORMAT) uniform PRECISION image3D uOutput;
10+
layout(set = 0, binding = 1) uniform PRECISION sampler3D uInput;
11+
layout(set = 0, binding = 2) uniform PRECISION restrict Block {
1112
ivec4 size; // output texture size (x=width,y=height,z=depth,w=unused)
1213
ivec4 isize; // input texture size (x=width,y=height,z=depth,w=unused)
1314
uint batch_size; // input tensor's batch size

0 commit comments

Comments
 (0)