backends/drm: handle failing commits better
It can happen that the drm backend temporarily lacks permission to do atomic commits, or that the cached drm property values become out of sync with the real values held by the kernel. Instead of failing with both and just hoping for the best, attempt to update property values and try the commits again at a later time.