"it requires non-free code (additional firmware or a key or whatever) from
the vendor in order to work?"
Yep. If you do a diff of Linux and Linux-libre you can see the actual
changes. One of them below. Goodbye binary firmware!
/* Firmware Names */
-#define FIRMWARE_TONGA "amdgpu/tonga_uvd.bin"
-#define FIRMWARE_CARRIZO "amdgpu/carrizo_uvd.bin"
-#define FIRMWARE_FIJI "amdgpu/fiji_uvd.bin"
-#define FIRMWARE_STONEY "amdgpu/stoney_uvd.bin"
+#define FIRMWARE_TONGA "/*(DEBLOBBED)*/"
+#define FIRMWARE_CARRIZO "/*(DEBLOBBED)*/"
+#define FIRMWARE_FIJI "/*(DEBLOBBED)*/"
+#define FIRMWARE_STONEY "/*(DEBLOBBED)*/"