It doesn’t use the derive macro. All of our curve crates have their own finite field implementations. The ff dependency is most definitely necessary for its traits!
As I said above, what I anticipate would be the cleanest integration, is that any general finite field GPU logic could potentially live in the ff crate (behind a feature flag). Having looked at the Filecoin crates, it seems like the ec-gpu traits might be what get leveraged in that generic code, and then the concrete OpenCL logic would be generated in the individual curve crates (maybe via ec-cpu-gen, maybe via another mobile-specific backend).