PDA

View Full Version : Laptops with a lower power card + an real GPU



MalcolmB
06-23-2011, 08:23 AM
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.

Thoughts?

skynet
06-23-2011, 01:42 PM
For NVidia, you may use the NVAPI library in order to set "NVIDIA high performance processor" as default GPU for your application.
http://developer.nvidia.com/nvapi

For AMD/ATI, I don't know... Maybe the "ATI Display Library SDK" will provide the needed functionality some day:
http://developer.amd.com/sdks/ADLSDK/Pages/default.aspx

MalcolmB
06-23-2011, 02:53 PM
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.
Thanks

skynet
06-23-2011, 03:48 PM
Hi,
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


enum EValues_SHIM_RENDERING_MODE {
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,
SHIM_RENDERING_MODE_NUM_VALUES = 8,
SHIM_RENDERING_MODE_DEFAULT = SHIM_RENDERING_MODE_AUTO_SELECT
};

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.

MalcolmB
06-24-2011, 09:25 AM
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