The biggest hurdle is going to be CUDA for which AMD has no answer.
AMD has a clear alternative to CUDA: HIP — a "CUDA dialect" serving as a programming model for their open-source ROCm framework, while supporting CUDA as an alternative backend. Intel and the wider industry have an alternative to CUDA as well: Khronos SYCL — a programming model based on ISO C++, aiming to be subsumed by the official ISO C++ standard at some point.
SYCL is conceptually pretty close to CUDA/HIP, except for accelerator code being written in pure C++ (no proprietary language extensions). A SYCL implementation already exists using HIP as a backend: hipSYCL. Also, Intel's C++ dialect — Data Parallel C++ (DPC++) — is based on SYCL and serves as a programming model for their open-source oneAPI framework. USA national laboratories have contracted Codeplay (now a subsidiary of Intel) to add support for AMD and Nvidia hardware in DPC++, thereby allowing SYCL/DPC++ to be used to write portable code across all these platforms.
SYCL is seeing rapid adoption in the supercomputing space, with AMD having delivered the first exascale computer (Frontier) this year and being on-track to deliver an even bigger one next year (El Capitan). These machines have a heavy emphasis on GPGPU and AI compute and will be programmed with no CUDA in sight (SYCL, HIP, OpenMP, etc.). AMD also won the biggest supercomputer in Europe (LUMI in Finland), which is based on the same hardware technologies and programming models. Intel will bring another exascale supercomputer online next year as well (Aurora), which will also use SYCL (DPC++) as one of the primary programming models.
More about SYCL, HIP and CUDA here:
I've had my eye on SYCL for some time now. I don't think it is widely recognised that this is going to be the standard for heterogeneous programming models going forward (eventually to be merged into the ISO C++ standard, it seems). If you read any discussion on programming, tech and investor...
forums.anandtech.com
PS. I see a lot of discussion about the CUDA software moat on forums, without any mention of HIP, SYCL and DPC++ (oneAPI) whatsoever, which tells me there is a lot of ignorance when it comes to the industry's preferred direction (open standards) and the CUDA alternatives already gaining ground (SYCL and HIP). That said, AMD's lack of support for ROCm on Windows is a sore point, especially due to missing (or poor) acceleration support in some application areas (AI and content creation, in particular).