I mean a total control on the GPU scheduler, like control the time slice, the priority of every thread and change the scheduling algorithm, not just the command list queue... Yes, I know that this probably will never happen (and Yes, I know that the Catalyst driver team could kill me for suggesting this XD), but it could open infinite possibilities...
From what I understood from the article, you can assign those command list queues to the various 'engines' (as they call them in the article) yourself. Meaning you have total control of the GPU, in turn meaning you can write your own scheduler for the GPU.
I read all the slide of the APU13 developer summit, but they didn't say nothing about the control of the GPU scheduler via Mantle, but only via HSA on future systems.. Anyway a (quite) complete control on the GPU scheduler could be a bless for the gpgpu, even on games (let's image as example a decent scripting system accelerated via GPU, it could be possible, and AMD seems to working to improve integer computation on GPU too)
Quote from the article I linked, page 2:
That's as opposed to a context-based execution model, where it's up to the driver to choose which engine we want to target; it's up to the driver to figure out where we break command buffers apart, and manage the synchronization between those engines. Mantle exposes all that, abstracted, to you. So, you have the ability to build a command buffer, insert commands into it, submit it to the queue, and then synchronize the work between it. This lets you take full advantage of the entire GPU.
anyway, does anyone know if AMD with mantle will bring the control on the GPU scheduler? (months ago some image were leaked showing a post-kaveri APU named "Carizzo" supporting GPU compute context switch, GPU graphics pre-emption and quality of service ... but this is coming (maybe) in 2015).
If you already know another language, I suggest writing a small program you are already familiar with and converting it to C++. A lot of things will be the same, some things will be completely different.
A small tip: when you get the the tutorials about pointers, read/listen to them at least 3 times. Pointers are hard to really understand if you haven't used them a lot. If you have already worked with pointers, simply ignore this tip.