mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-24 02:09:03 +03:00
swscale/vulkan/ops: don't reference the input image in passes without reads
The input image variable was only defined when the pass contains a read, but was unconditionally decorated and listed in the entrypoint interface, referencing an undefined ID and producing invalid SPIR-V. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Niklas Haas <git@haasn.dev>
This commit is contained in:
@@ -415,9 +415,11 @@ static void define_shader_header(SwsContext *sws, FFVulkanShader *shd,
|
||||
SpvBuiltInGlobalInvocationId);
|
||||
|
||||
/* Input image descriptor decorations */
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationNonWritable);
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationDescriptorSet, 0);
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationBinding, 0);
|
||||
if (id->in_img_var) {
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationNonWritable);
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationDescriptorSet, 0);
|
||||
spi_OpDecorate(spi, id->in_img_var, SpvDecorationBinding, 0);
|
||||
}
|
||||
|
||||
/* Output image descriptor decorations */
|
||||
spi_OpDecorate(spi, id->out_img_var, SpvDecorationNonReadable);
|
||||
@@ -1002,7 +1004,8 @@ static int add_ops_spirv(SwsContext *sws, VulkanPriv *p, FFVulkanOpsCtx *s,
|
||||
|
||||
/* Entrypoint inputs; gl_GlobalInvocationID, input and output images, dither */
|
||||
id->gid_var = id->iface[id->nb_iface++] = spi_get_id(spi);
|
||||
id->in_img_var = id->iface[id->nb_iface++] = spi_get_id(spi);
|
||||
if (op_r)
|
||||
id->in_img_var = id->iface[id->nb_iface++] = spi_get_id(spi);
|
||||
id->out_img_var = id->iface[id->nb_iface++] = spi_get_id(spi);
|
||||
|
||||
/* Create dither and filter buffer descriptor set. Both are collected in
|
||||
|
||||
Reference in New Issue
Block a user