The Denoise node crashes if used in the viewport compositor. That's because OIDN uses the compositor context in a different thread, which does not have access to the DRW context. To fix this, we assign relevant context data to the compositor context from the DRW context before running the evaluator, then make the compositor context return those data instead of accessing the DRW context.