diff --git a/backends/vulkan/runtime/graph/ops/glsl/conv2d_pw.glsl b/backends/vulkan/runtime/graph/ops/glsl/conv2d_pw.glsl index a576a46d5b8..468b91f0535 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/conv2d_pw.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/conv2d_pw.glsl @@ -29,12 +29,8 @@ ${layout_declare_tensor(3, "r", "t_bias", DTYPE, "texture2d")} layout(push_constant) uniform restrict Block { ivec4 out_limits; - ivec4 in_sizes; - ivec2 kernel_size; ivec2 stride; ivec2 padding; - ivec2 dilation; - ivec2 overlay_region; int in_group_size; int dummy_padding; float out_min; diff --git a/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp b/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp index 48256cb2996..381b9de0d6a 100644 --- a/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp +++ b/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp @@ -404,7 +404,27 @@ void add_conv2d_node( vkapi::ParamsBindList param_buffers; std::vector push_constants; - if (method == Conv2dMethod::Pointwise || method == Conv2dMethod::Depthwise) { + if (method == Conv2dMethod::Pointwise) { + const utils::ivec4 kernel_param_stride_pad = { + kernel_params.stride[0], + kernel_params.stride[1], + kernel_params.padding[0], + kernel_params.padding[1], + }; + + struct Conv2dPWParams final { + int in_group_size; + int dummy_padding; + OutputParams out_params; + } param{extra_params.in_group_size, 0, out_params}; + + push_constants = { + graph.logical_limits_pc_of(out), + PushConstantDataInfo( + &kernel_param_stride_pad, sizeof(kernel_param_stride_pad)), + PushConstantDataInfo(¶m, sizeof(param)), + }; + } else if (method == Conv2dMethod::Depthwise) { const utils::ivec4 kernel_param_size_stride = { kernel_params.kernel_size[0], kernel_params.kernel_size[1],