I am pretty confident in saying that 屋上 is a tangible location. Like:
"アパートの 屋上 に庭があります。"
"夏では、デパートの 屋上 にビアガーデンがあります。"
I've always thought of 屋根 as "ceiling" (but I've never really used it in practice). maybe:
"暑い時に、屋根 に付けられた扇風器を点けます。"
So, what are the differences between 屋上 and 屋根 ?