From 749fce9fd5d338b25c416457c96fcfa607f972e7 Mon Sep 17 00:00:00 2001 From: Vivek Trivedi Date: Sun, 7 Dec 2025 22:01:59 -0800 Subject: [PATCH] Using push constants for binary scalar op parameter. (#16114) Summary: The diff modifies the `BinaryScalarOp` implementation to utilize push constants for the scalar value parameter. Reviewed By: yipjustin Differential Revision: D88097606 --- .../vulkan/runtime/graph/ops/glsl/binary_scalar_buffer.glsl | 4 +++- .../vulkan/runtime/graph/ops/glsl/binary_scalar_texture.glsl | 4 +++- backends/vulkan/runtime/graph/ops/impl/BinaryScalarOp.cpp | 5 ++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_buffer.glsl b/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_buffer.glsl index 860050bcfb6..4d58a5d2e24 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_buffer.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_buffer.glsl @@ -29,7 +29,9 @@ ${layout_declare_tensor(B, "r", "t_in", DTYPE, STORAGE)} ${layout_declare_ubo(B, "BufferMetadata", "outp")} ${layout_declare_ubo(B, "BufferMetadata", "inp")} -${layout_declare_ubo(B, "float", "scalar_value")} +layout(push_constant) uniform restrict Block { + float scalar_value; +}; layout(local_size_x_id = 0, local_size_y_id = 1, local_size_z_id = 2) in; diff --git a/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_texture.glsl b/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_texture.glsl index 4f51e9ff679..f02ddf35271 100644 --- a/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_texture.glsl +++ b/backends/vulkan/runtime/graph/ops/glsl/binary_scalar_texture.glsl @@ -30,7 +30,9 @@ ${layout_declare_tensor(B, "r", "t_in", DTYPE, STORAGE)} ${layout_declare_ubo(B, "TextureMetadata", "outp")} ${layout_declare_ubo(B, "TextureMetadata", "inp")} -${layout_declare_ubo(B, "float", "scalar_value")} +layout(push_constant) uniform restrict Block { + float scalar_value; +}; layout(local_size_x_id = 0, local_size_y_id = 1, local_size_z_id = 2) in; diff --git a/backends/vulkan/runtime/graph/ops/impl/BinaryScalarOp.cpp b/backends/vulkan/runtime/graph/ops/impl/BinaryScalarOp.cpp index a6a6182ad2e..9486506631f 100644 --- a/backends/vulkan/runtime/graph/ops/impl/BinaryScalarOp.cpp +++ b/backends/vulkan/runtime/graph/ops/impl/BinaryScalarOp.cpp @@ -50,8 +50,7 @@ void add_binary_scalar_op_node( vkapi::ParamsBindList param_ubos = { graph.meta_ubo(out), - graph.meta_ubo(in), - graph.create_params_buffer(scalar_val)}; + graph.meta_ubo(in)}; graph.execute_nodes().emplace_back(new DynamicDispatchNode( graph, @@ -63,7 +62,7 @@ void add_binary_scalar_op_node( // Shader params buffers param_ubos, // Push Constants - {}, + {PushConstantDataInfo(&scalar_val, sizeof(scalar_val))}, // Specialization Constants {}, // Resize Args