Hoover the roof first, soak it with a hose pipe, and then clean it with washing powder (persil, aerial, daz etc etc) and a soft scrubbing brush to remove the mould/stains. Don't let it dry (add water as required) whilst cleaning the roof. Once you're happy the dirt/stains/mould are gone, rinse
thoroughly, then clean again with Autoglym/Renovo/Roof cleaner of choice. Once dry, re-proof with Autoglym or Renovo.
Should come up a treat

, but once you've cleaned and re-proofed the roof, you will need to clean the car