• Lucas Stach's avatar
    drm/etnaviv: slow down FE idle polling · 295b6c02
    Lucas Stach authored
    Currently the FE is spinning way too fast when polling for new work in
    the FE idleloop. As each poll fetches 16 bytes from memory, a GPU running
    at 1GHz with the current setting of 200 wait cycle between fetches causes
    80 MB/s of memory traffic just to check for new work when the GPU is
    otherwise idle, which is more FE traffic than in some GPU loaded cases.
    
    Significantly increase the number of wait cycles to slow down the poll
    interval to ~30µs, limiting the FE idle memory traffic to 512 KB/s, while
    providing a max latency which should not hurt most use-cases. The FE WAIT
    command seems to have some unknown discrete steps in the wait cycles so
    we may over/undershoot the target a bit, but that should be harmless.
    
    If the GPU core base frequency is unknown keep the 200 wait cycles as
    a sane default.
    Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
    Reviewed-by: default avatarSui Jingfeng <suijingfeng@loongson.cn>
    Tested-by: default avatarSui Jingfeng <suijingfeng@loongson.cn>
    Reviewed-by: default avatarChristian Gmeiner <cgmeiner@igalia.com>
    295b6c02
etnaviv_buffer.c 15.6 KB