diff --git a/src/compositor-drm.c b/src/compositor-drm.c index aa6d010b..f24fa0b4 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -597,6 +597,19 @@ drm_output_set_gamma(struct weston_output *output_base, weston_log("set gamma failed: %m\n"); } +/* Determine the type of vblank synchronization to use for the output. + * + * The pipe parameter indicates which CRTC is in use. Knowing this, we + * can determine which vblank sequence type to use for it. Traditional + * cards had only two CRTCs, with CRTC 0 using no special flags, and + * CRTC 1 using DRM_VBLANK_SECONDARY. The first bit of the pipe + * parameter indicates this. + * + * Bits 1-5 of the pipe parameter are 5 bit wide pipe number between + * 0-31. If this is non-zero it indicates we're dealing with a + * multi-gpu situation and we need to calculate the vblank sync + * using DRM_BLANK_HIGH_CRTC_MASK. + */ static unsigned int drm_waitvblank_pipe(struct drm_output *output) { if (output->pipe > 1)