Ah, I don't mean to say that OpenCL support is a bad thing. In my opinion it just isn't entirely worth it to leave it on by default. More games than less have appeared to have issues handing over compute shader cores to another application, especially one that handles such large volumes of data as a video encoder. Then again, some games aren't shader-coreIntensive and will run just fine in tandem with the x264 feature. Personally I run the preset simply because I use a dual-card setup and it allows the encoder to pick frames from each card in the right order, and not grab too many (31 frames on each card happens a lot otherwise and introduces tearing). However that only seems to be an exception to the rule, and uses the OpenCL features for an entirely different purpose than they were implemented for to start.
Just Cause 2 isn't a poorly-made game, by the way. It was just one of the first around when custom compute shaders were possible and so it added effects that DX10 didn't allow at the time. When you see certain things like water simulation and advanced depth of field in modern games, it's directly attributed to Just Cause 2 having proven they were wanted in the next iteration of Microsoft's rendering platform. If you shut off those features the game runs blisteringly fast, but with them enabled it steals cores from the graphics card that could have been used for general rendering or filtering and as such it'll run slow. Really, that's the same case with x264 though in a non-linear association I guess.
Guild Wars 2 is using compute shaders to render the UI and perform entity LOD scaling in ways they deemed necessary to make the MMO work better. The UI is mainly doing it for layering and transparency sorting, and the LOD is so that you can have 200 players loaded in a town rather than have them pop in and out at a distance. Again, both have been issues in all games recently and DX12 really should adopt an official solution that hardware manufacturers can optimize towards.
Oh, and I love GW2 a ton, haha.
Anyway, the old way this used to be performed (and like MAD on the PS2 I should add), was by software emulating the new features and then injecting them into the video card's output buffers. It was very much a hack, and it required LOADS of CPU power in many cases. OpenCL gives developers the chance to offload general computing onto the graphics card of a system, and in many cases large loads consisting of small packets of work can be done much more efficiently and quickly on the graphics card anyway. Now that streaming is popular I'd expect the next batch of cards (some say the 700 series nVidia cards actually have this already) will feature h.264 encoder chips that can be accessed by DirectX applications in general. OpenCL wouldn't be needed then as there would be a way to truly run the encoding workload on a card rather than writing your own machine code in CL. We'll see how that goes in the coming years I guess.
So is OpenCL the greatest thing since sliced bread? Nope. Is it nice to offload work to a GPU supposing you have the spare cycles, latency, and vRAM? Yeah. My advice if you don'e have the power to spare? Pass until a proper solution is in place, or selectively enable OpenCL computing in x264 depending on the game as I do. I only use it for frame sorting and buffering to mend the issues of an SLi setup in any case.
Does my advice mean anything to someone who disagrees? Hell no. It's your computer, so do what you like with it. I'm just sharing my experiences and knowledge so you can make an informed choice on the matter. Besides, it's only used to lookahead and prepare motion vectors, so for the bulk of guys running diagonal or hexagonal vector generation schemes there's almost nothing improved due to the small amount of frames gathered from real-time sources.
Now it you're using another motion vector scheme I could see the benefit, and in fact I don't think anything higher can provide proper quality real-time on a modern CPU anyway (they perform multiple passes). Otherwise the vectors are determined prematurely and are usually incorrect, creating 'meh' P and horrible B frames for a handful of upcoming frames. I've only been able to correct the problem by cutting framerate (more computing time per frame) or raising bandwidth so the compression is lighter while on a CPU, but have had good results with OpenCL when I could use it (stealing motion vectors pre-made from the display buffer on-card).
Really, it's situational to me. That's why I can't recommend OpenCL for live encoders, because for me a straight 'yes' requires having it disabled to be the exception to the rule, not the other way around. Either more uses for OpenCL need to be programmed into the software to justify having it enabled, or the graphics hardware needs to make it standardized so there's no reason at all to disable it. Take my advice with a grain of salt if you're more lenient than I am with these things. Also I'm a technical director for the film industry so again, grain of salt and all since I likely see more errors in encoded video than most people would typically discern.
In any case, OBS and x264 do allow you to use those features when they didn't need to at all, so kudos to the development teams for the options even if I don't always use them.