Skip to content

Commit 5d7bd71

Browse files
authored
Reduced int precision for texture coordinates in q_linear op, to reduce shader register pressure.
Differential Revision: D64191093 Pull Request resolved: #6354
1 parent 5a6a571 commit 5d7bd71

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,15 @@ void main() {
8989

9090
#else // USING_TEXTURE
9191

92+
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require
93+
9294
VEC4_T q_8w_linear(const ivec3 out_pos, const int K) {
93-
ivec3 mat1_pos = ivec3(0, out_pos.yz);
94-
ivec3 qmat2_pos = ivec3(0, out_pos.x * 4, 0);
95+
u16vec3 mat1_pos = u16vec3(0, out_pos.yz);
96+
u16vec3 qmat2_pos = u16vec3(0, out_pos.x * 4, 0);
9597

9698
VEC4_T outtex = VEC4_T(0);
9799

98-
const ivec3 scales_pos = ivec3(out_pos.x, 0, 0);
100+
const u16vec3 scales_pos = u16vec3(out_pos.x, 0, 0);
99101
const VEC4_T scales = load_texel(t_scales, scales_pos);
100102

101103
for (int i = 0; i < K; i += 4) {
@@ -104,11 +106,11 @@ VEC4_T q_8w_linear(const ivec3 out_pos, const int K) {
104106
const VEC4_T sums = VEC4_T(
105107
dot(mat1_tex, load_texel(t_qmat2, qmat2_pos) * scales.x),
106108
dot(mat1_tex,
107-
load_texel(t_qmat2, qmat2_pos + ivec3(0, 1, 0)) * scales.y),
109+
load_texel(t_qmat2, qmat2_pos + u16vec3(0, 1, 0)) * scales.y),
108110
dot(mat1_tex,
109-
load_texel(t_qmat2, qmat2_pos + ivec3(0, 2, 0)) * scales.z),
111+
load_texel(t_qmat2, qmat2_pos + u16vec3(0, 2, 0)) * scales.z),
110112
dot(mat1_tex,
111-
load_texel(t_qmat2, qmat2_pos + ivec3(0, 3, 0)) * scales.w));
113+
load_texel(t_qmat2, qmat2_pos + u16vec3(0, 3, 0)) * scales.w));
112114

113115
outtex += sums;
114116

0 commit comments

Comments
 (0)