swscale/vulkan: implement SWS_OP_MIN/SWS_OP_MAX

Sponsored-by: Sovereign Tech Fund
This commit is contained in:
Lynne
2026-02-27 16:36:59 +01:00
parent bf93a67733
commit d35a77879c

View File

@@ -283,6 +283,19 @@ static int add_ops_glsl(VulkanPriv *p, FFVulkanOpsCtx *s,
av_bprintf(&shd->src, " %s = %s*%i/%i;\n",
type_name, type_name, op->c.q.num, op->c.q.den);
break;
case SWS_OP_MIN:
case SWS_OP_MAX:
for (int i = 0; i < 4; i++) {
if (!op->c.q4[i].den)
continue;
av_bprintf(&shd->src, " %s.%c = %s(%s.%c, "QSTR");\n",
type_name, "xyzw"[i],
op->op == SWS_OP_MIN ? "min" : "max",
type_name, "xyzw"[i],
op->c.q4[i].num, op->c.q4[i].den,
op->type == SWS_PIXEL_F32 ? ".0f" : "");
}
break;
default:
return AVERROR(ENOTSUP);
}