Laptops with a lower power card + an real GPU

Has anyone found a good way to deal with the new laptops that have a low power onboard graphics chip that is used for basic computing, and then a real (Nvidia etc.) GPU used for 3D apps? When my application starts up all the OpenGL calls return extensions/functionality from the onboard chip instead of real GPU, causing all kinds of issues.


For NVidia, you may use the NVAPI library in order to set “NVIDIA high performance processor” as default GPU for your application.

For AMD/ATI, I don’t know… Maybe the “ATI Display Library SDK” will provide the needed functionality some day:

Hey can you elaborate on the NVAPI solution? I use NVAPI in my app already but I just downloaded the latest NVAPI documentation and I can’t find the setting you are referring to.

I am assuming, you refer to NVidia Optimus.
Looking through NvApiDriverSettings.h, you’ll find

#define SHIM_MCCOMPAT_STRING                       L"Optimus flags for enabled applications"
#define SHIM_RENDERING_MODE_STRING                 L"Enable application for Optimus"
#define SHIM_RENDERING_OPTIONS_STRING              L"Shim Rendering Mode Options per application for Optimus"

enum ESetting {


  SHIM_MAXRES_ID                                = 0x10F9DC82,
    SHIM_MCCOMPAT_ID                              = 0x10F9DC80,
    SHIM_RENDERING_MODE_ID                        = 0x10F9DC81,
    SHIM_RENDERING_OPTIONS_ID                     = 0x10F9DC84,



Somwhere below there’s

    SHIM_RENDERING_MODE_INTEGRATED                       = 0x00000000,
    SHIM_RENDERING_MODE_ENABLE                           = 0x00000001,
    SHIM_RENDERING_MODE_USER_EDITABLE                    = 0x00000002,
    SHIM_RENDERING_MODE_MASK                             = 0x00000003,
    SHIM_RENDERING_MODE_VIDEO_MASK                       = 0x00000004,
    SHIM_RENDERING_MODE_VARYING_BIT                      = 0x00000008,
    SHIM_RENDERING_MODE_AUTO_SELECT                      = 0x00000010,
    SHIM_RENDERING_MODE_OVERRIDE_BIT                     = 0x80000000,

I believe, if you set set SHIM_RENDERING_MODE_ID to SHIM_RENDERING_MODE_ENABLE and tie a profile with this setting to your application, it could work the way you want.
I have not tried this yet, though.

I don’t think it’s Nvidia optimus. The laptop literally has a 2nd (usually Intel) graphics card whos driver is responding to the initial gl calls.

Edit: Ok after reading deeper into optimus I think is what you refer to. Thanks for your help