syncinterval 0 when vsync turn on in nvidia
i dont know if its bug or not tested overwatch
when turn on vsync in game its switch to syncinterval 1

That SyncInterval information comes from what the app requested from the OS. When the OS sends that request to the driver, they change it, but that change isn't really logged anywhere for PresentMon to show it.
HandleDxgkFlip may be able to provide overridden value
Current implementation handles it this way. Removing check for -1 would provide overridden value.
if (presentEvent->SyncInterval == -1) {
presentEvent->SyncInterval = flipInterval;
}
Let me know if you disagree, but I think it would be useful to know if the app value was changed. So, I'm thinking once I validate 'flipInterval' is the modified one, I add this as a new column rather than overwriting the value.
Maybe: AppSyncInterval - the current SyncInterval SyncInterval - the interval reaching HandleDxgkFlip() (flipInterval)
Sounds reasonable to me.