• Mario Kleiner's avatar
    drm/kms/radeon: Add support for precise vblank timestamping. · f5a80209
    Mario Kleiner authored
    This patch adds new functions for use by the drm core:
    
    .get_vblank_timestamp() provides a precise timestamp
    for the end of the most recent (or current) vblank
    interval of a given crtc, as needed for the DRI2
    implementation of the OML_sync_control extension.
    
    It is a thin wrapper around the drm function
    drm_calc_vbltimestamp_from_scanoutpos() which does
    almost all the work and is shared across drivers.
    
    .get_scanout_position() provides the current horizontal
    and vertical video scanout position and "in vblank"
    status of a given crtc, as needed by the drm for use by
    drm_calc_vbltimestamp_from_scanoutpos().
    
    The function is also used by the dynamic gpu reclocking
    code to determine when it is safe to reclock inside vblank.
    
    For that purpose radeon_pm_in_vbl() is modified to
    accomodate a small change in the function prototype of
    the radeon_get_crtc_scanoutpos() which is hooked up to
    .get_scanout_position().
    
    This code has been tested on AVIVO hardware, a RV530
    (ATI Mobility Radeon X1600) in a Intel Core-2 Duo MacBookPro
    and some R600 variant (FireGL V7600) in a single cpu
    AMD Athlon 64 PC.
    Signed-off-by: default avatarMario Kleiner <mario.kleiner@tuebingen.mpg.de>
    Reviewed-by: default avatarAlex Deucher <alexdeucher@gmail.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    f5a80209
radeon_pm.c 24.9 KB