Update gpu functionality in core module

* appended new enumerators to an existing enum
* added new non-virtual method
* made a private method public
* made an inline function non-inline

This shouldn't break binary compatibility.