diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 5e7a8c99..02d649ba 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -1525,6 +1525,10 @@ static uint32_t vkd3d_dxbc_compiler_emit_input(struct vkd3d_dxbc_compiler *compi
     SpvStorageClass storage_class;
 
     component_count = vkd3d_write_mask_component_count(dst->write_mask);
+    /* vThreadIDInGroupFlattened is declared with no write mask in shader
+     * bytecode generated by fxc. */
+    if (!dst->write_mask)
+        component_count = 1;
     if (!(input_component_count = vkd3d_dxbc_compiler_get_sysval_component_count(sysval)))
         input_component_count = component_count;