Files
armorpaint/base/tools/iris/iris_vulkan_upsample.comp
T
2026-06-17 23:36:47 +02:00

22 lines
707 B
Plaintext

#version 450
/* Nearest-neighbour 2x upsample, batch=1: [C,H,W] -> [C,2H,2W]. */
layout(local_size_x = 256) in;
layout(std430, binding = 0) readonly buffer In { float x[]; };
layout(std430, binding = 1) writeonly buffer Out { float outp[]; };
layout(push_constant) uniform PC { uint channels, H, W; } pc;
void main() {
uint OW = pc.W * 2u, OH = pc.H * 2u;
uint total = pc.channels * OH * OW;
uint stride_g = gl_NumWorkGroups.x * 256u;
for (uint idx = gl_GlobalInvocationID.x; idx < total; idx += stride_g) {
uint ox = idx % OW;
uint t = idx / OW;
uint oy = t % OH;
uint c = t / OH;
outp[idx] = x[(c * pc.H + oy / 2u) * pc.W + ox / 2u];
}
}