Skip to content

Commit b5ada9b

Browse files
committed
[7/n][ET-VK] Support texture2D in etvk.copy_offset
To use `copy_offset` with 2D textures in AHB experimentation. Differential Revision: [D63905519](https://our.internmc.facebook.com/intern/diff/D63905519/) ghstack-source-id: 246607067 Pull Request resolved: #5933
1 parent 64facea commit b5ada9b

File tree

5 files changed

+14
-0
lines changed

5 files changed

+14
-0
lines changed

backends/vulkan/runtime/graph/ops/glsl/copy_offset.glsl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
#define PRECISION ${PRECISION}
1212

13+
${define_active_storage_type(STORAGE)}
14+
1315
#include "indexing_utils.h"
1416

1517
layout(std430) buffer;

backends/vulkan/runtime/graph/ops/glsl/copy_offset.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,10 @@ copy_offset:
88
- VALUE: half
99
- VALUE: float
1010
- VALUE: int
11+
- VALUE: int8
12+
- VALUE: uint8
13+
STORAGE:
14+
- VALUE: texture3d
15+
- VALUE: texture2d
1116
shader_variants:
1217
- NAME: copy_offset

backends/vulkan/runtime/graph/ops/glsl/indexing_utils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ ivec3 lpos_to_pos(const ivec3 lpos, const ivec4 axis_map) {
212212
#define load_texel(buf, idx) buf[idx]
213213
#elif defined(USING_TEXTURE2D)
214214
#define load_texel(im, pos) texelFetch(im, pos.xy, 0)
215+
#define load_texel_lpos(im, lpos, axis_map) \
216+
texelFetch(im, lpos_to_pos(lpos, axis_map).xy, 0)
215217
#else // defined(USING_TEXTURE3D)
216218
#define load_texel(im, pos) texelFetch(im, pos, 0)
217219
#define load_texel_lpos(im, lpos, axis_map) \
@@ -222,6 +224,8 @@ ivec3 lpos_to_pos(const ivec3 lpos, const ivec4 axis_map) {
222224
#define write_texel(buf, idx, texel) buf[idx] = texel
223225
#elif defined(USING_TEXTURE2D)
224226
#define write_texel(im, pos, texel) imageStore(im, pos.xy, texel)
227+
#define write_texel_lpos(im, lpos, texel, axis_map) \
228+
imageStore(im, lpos_to_pos(lpos, axis_map).xy, texel)
225229
#else // defined(USING_TEXTURE3D)
226230
#define write_texel(im, pos, texel) imageStore(im, pos, texel)
227231
#define write_texel_lpos(im, lpos, texel, axis_map) \

backends/vulkan/runtime/graph/ops/impl/Copy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ void add_copy_offset_node(
3131
std::string kernel_name = "copy_offset";
3232
kernel_name.reserve(kShaderNameReserve);
3333
add_dtype_suffix(kernel_name, *t_out);
34+
add_storage_type_suffix(kernel_name, *t_out);
3435

3536
const struct Block final {
3637
alignas(16) ivec3 range;
@@ -115,6 +116,7 @@ void add_copy_channel_offset_node(
115116
std::string kernel_name = "copy_channel_offset";
116117
kernel_name.reserve(kShaderNameReserve);
117118
add_dtype_suffix(kernel_name, *t_out);
119+
add_storage_type_suffix(kernel_name, *t_out);
118120

119121
int32_t out_channels = dim_at<kChannel4D>(out_sizes);
120122

backends/vulkan/test/op_tests/cases.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,7 @@ def get_repeat_inputs():
742742
test_suite.layouts = [
743743
"utils::kChannelsPacked",
744744
]
745+
test_suite.storage_types = ["utils::kTexture2D", "utils::kTexture3D"]
745746
test_suite.data_gen = "make_seq_tensor"
746747
test_suite.dtypes = ["at::kFloat"]
747748
return test_suite

0 commit comments

Comments
 (0)