As I understand things, the switches only need to support QOS header info to use it for prioritizing traffic. You would define Classes of service based of DSCP (diffserv) or another supported method, and the switches would respect those.
The routers are more of an issue, and the firewall, or any other edge device, is the really important location for QOS prioritization.
Fortunately, Cisco documents things really well.
Here is an official Cisco page for QOS policies, and here is a more “to-the-point” forum discussion of putting them into practice.
I hope that helps.