All the standard PC functionality is still pretty consistent between machines, but in other areas it's pretty platform dependent, yes. The main difference between this and the ARM world is that the firmware usually provides an ACPI representation of the device, meaning you can build a generic kernel.