diff --git a/backends/vulkan/runtime/graph/ops/glsl/conv2d_dw_prepack_weights.glsl b/backends/vulkan/runtime/graph/ops/glsl/conv2d_dw_prepack_weights.glsl index 49ce76423d5..f5361d40b66 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/conv2d_dw_prepack_weights.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/conv2d_dw_prepack_weights.glsl @@ -26,11 +26,8 @@ layout(set = 0, binding = 1) buffer PRECISION restrict readonly Buffer { BUF_T buffer_in[]; }; -layout(set = 0, binding = 2) uniform PRECISION restrict Sizes { +layout(push_constant) uniform PRECISION restrict Block { ivec4 sizes; -}; - -layout(set = 0, binding = 3) uniform PRECISION restrict OriginalSizes { ivec4 original_sizes; }; diff --git a/backends/vulkan/runtime/graph/ops/glsl/conv2d_prepack_weights.glsl b/backends/vulkan/runtime/graph/ops/glsl/conv2d_prepack_weights.glsl index 4e8bff94947..d2f3f615f74 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/conv2d_prepack_weights.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/conv2d_prepack_weights.glsl @@ -26,11 +26,8 @@ layout(set = 0, binding = 1) buffer PRECISION restrict readonly Buffer { BUF_T buffer_in[]; }; -layout(set = 0, binding = 2) uniform PRECISION restrict Sizes { +layout(push_constant) uniform PRECISION restrict Block { ivec4 sizes; -}; - -layout(set = 0, binding = 3) uniform PRECISION restrict OriginalSizes { ivec4 original_sizes; }; diff --git a/backends/vulkan/runtime/graph/ops/glsl/conv_transpose2d_prepack_weights.glsl b/backends/vulkan/runtime/graph/ops/glsl/conv_transpose2d_prepack_weights.glsl index df8589e737f..0b10683cee4 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/conv_transpose2d_prepack_weights.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/conv_transpose2d_prepack_weights.glsl @@ -26,11 +26,8 @@ layout(set = 0, binding = 1) buffer PRECISION restrict readonly Buffer { BUF_T buffer_in[]; }; -layout(set = 0, binding = 2) uniform PRECISION restrict Sizes { +layout(push_constant) uniform PRECISION restrict Block { ivec4 sizes; -}; - -layout(set = 0, binding = 3) uniform PRECISION restrict OriginalSizes { ivec4 original_sizes; }; diff --git a/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp b/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp index 32f478fa5bd..ff375fba89c 100644 --- a/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp +++ b/backends/vulkan/runtime/graph/ops/impl/Convolution.cpp @@ -211,6 +211,8 @@ ValueRef prepack_weights( vkapi::ShaderInfo shader = get_conv2d_shader(graph, *t, /*prepack_weights = */ true, method, vref); + const auto original_sizes_pc = + utils::make_ivec4(original_sizes, /*reverse = */ true); graph.prepack_nodes().emplace_back(new PrepackNode( graph, shader, @@ -218,11 +220,11 @@ ValueRef prepack_weights( graph.create_local_wg_size(v), vref, v, - {t->sizes_ubo(), - graph.create_params_buffer( - utils::make_ivec4(original_sizes, /*reverse = */ true))}, + {}, // Specialization constants - {SV(t->packed_dim())})); + {SV(t->packed_dim())}, + {graph.sizes_pc_of(v), + PushConstantDataInfo(&original_sizes_pc, sizeof(original_sizes_pc))})); return v; }