diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 40c3a2b4..6f64c3a5 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -2395,10 +2395,11 @@ static uint32_t vkd3d_dxbc_compiler_emit_input(struct vkd3d_dxbc_compiler *compi bool use_private_var = false; DWORD write_mask; - /* vThreadIDInGroupFlattened is declared with no write mask in shader - * bytecode generated by fxc. */ + /* vThreadIDInGroupFlattened, vPrim are declared with no write mask in + * shader bytecode generated by fxc. */ write_mask = dst->write_mask; - if (!write_mask && reg->type == VKD3DSPR_LOCALTHREADINDEX) + if (!write_mask && (reg->type == VKD3DSPR_LOCALTHREADINDEX + || reg->type == VKD3DSPR_PRIMID)) write_mask = VKD3DSP_WRITEMASK_0; signature_element = vkd3d_find_signature_element_for_reg(compiler->input_signature,