I don't know about nicer, but we do have wined3d_check_device_format(), and we already use that for a fairly similar purpose in ddraw_surface_create().
I thought about that, but it didn't seem simpler than the current approach, and I'm not sure if it's really a conceptual improvement either. Though if it strikes you as one I can certainly change the patch accordingly.
I don't have a strong opinion on the matter. The one benefit of that approach that I'd point out would be that it'll potentially make the resulting debug logs a bit more straightforward to follow. I.e., I could imagine the failing wined3d_texture_create() calls to be potentially confusing to someone less familiar with the code.