The Platform Abstraction Library (PAL) provides hardware and OS abstractions for Radeon (GCN+) user-mode 3D graphics drivers.
The level of abstraction is chosen to support performant driver implementations of several APIs while hiding the client from hardware and operating system details.
PAL client drivers will have no HW-specific code; their responsibility is to translate API/DDI commands into PAL commands as efficiently as possible.
However, PAL is an abstraction of AMD hardware only, so many things in the PAL interface have an obvious correlation to hardware features.
PAL does not provide a shader compiler: clients are expected to use an external compiler library that targets PAL's Pipeline ABI to produce compatible shader binaries.