Skip to main content
GameDev.net gamedev.net
🔒 Locked

NVidia GeForce Experience

Started by Psychopathetica Mar 25, 2019 at 1:48 AM 15 replies 10.1k views
Original Post
Psychopathetica
Psychopathetica

Hey guys. For nearly every game I run on my laptop, the GeForce Experience tag pops up asking you to enable it with Alt+Z or something. But for some reason, it never pops up in any of my C++ DirectX apps. Which means programmably there has got to be a way to enable it. I tried Googling this and got nothing. What do the pros do? Would be nice to have for FPS counters without having to do your own or use a graphics diagnostics. I use Visual Studio 2017. Thanks in advance.

Psychopathetica
Psychopathetica

Wow nothing o.o . Anyways, I opened up the NVidea GeForce Experience app to see if I can add a program to it, but it would not let me unless supported. I was thinking originally it is because it is not part of their supported list of games (see here: https://www.nvidia.com/en-us/geforce/geforce-experience/games/). But even with non supported games, it still pops up in that particular game, such as Alice Madness Returns. In my sample DirectX programs I wrote in C++, however, compiling it in Release mode rather than Debug, and running it still ended up not showing up at all. Do I have to add my program to NVidea exceptions, or what? What could possibly be missing?

[Edit] I posted this question on NVideas forums as well, so hopefully I can get some answers. Maybe from NVidea themselves! Well see.

vinterberg
vinterberg

I always choose not to install that Experience stuff, so got no experience in that regard - but if you just need a simple FPS counter, why not simply install MSIAfterBurner or one of the many other similar apps?

.:vinterberg:.  
jeffreylane
jeffreylane
5 hours ago, Psychopathetica said:

Wow nothing o.o . Anyways, I opened up the NVidea GeForce Experience app to see if I can add a program to it, but it would not let me unless supported. I was thinking originally it is because it is not part of their supported list of games (see here: https://edubirdie.com/analytical-essay-writing-service). But even with non supported games, it still pops up in that particular game, such as Alice Madness Returns. In my sample DirectX programs I wrote in C++, however, compiling it in Release mode rather than Debug, and running it still ended up not showing up at all. Do I have to add my program to NVidea exceptions, or what? What could possibly be missing?

[Edit] I posted this question on NVideas forums as well, so hopefully I can get some answers. Maybe from NVidea themselves! Well see.

I was considering to install GeForce Experience for my current project. Hopefully, I stumbled across your question here and know I'm thinking should I install it or look for some alternatives.

Psychopathetica
Psychopathetica

Well not only do you get an FPS counter, you also can use it to record and stream. Pretty useful if you ask me.

Hodgman
Hodgman

I don't have an answer for the actual question... It probably uses a whole bunch of heuristics to guess whether an app is a game or not ?

But you can use OCAT for performance monitoring and OBS for recording/streaming. If you select NVENC in the encoding options, it uses the same hardware as GFE's shadowplay.

NineYearCycle
NineYearCycle

nVidia create profiles for games to work with their GeForce Experience stuff but I've never tried to get a game involved with it.

One thing you might want to watch for is that it might not be using the nVidia GPU at all because it either doesn't realise that it's a 3D app or decides that it should be run on the integrated GPU.

You can add something like the following:


extern "C" {
// This is the quickest and easiest way to enable using the nVidia GPU on a Windows laptop with a dedicated nVidia GPU and Optimus tech.
// enable optimus!
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;

// AMD have one too!!!
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}


Which will tell it to run on the dedicated GPU. This might then mean that it appears as the running app in GeForce Experience and you can then add a custom profile for it.

"Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile" "Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgement difficult."
Psychopathetica
Psychopathetica
2 hours ago, NineYearCycle said:

nVidia create profiles for games to work with their GeForce Experience stuff but I've never tried to get a game involved with it.

One thing you might want to watch for is that it might not be using the nVidia GPU at all because it either doesn't realise that it's a 3D app or decides that it should be run on the integrated GPU.

You can add something like the following:



extern "C" {
// This is the quickest and easiest way to enable using the nVidia GPU on a Windows laptop with a dedicated nVidia GPU and Optimus tech.
// enable optimus!
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;

// AMD have one too!!!
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}


Which will tell it to run on the dedicated GPU. This might then mean that it appears as the running app in GeForce Experience and you can then add a custom profile for it.

Interesting. I think I might try that when I get home from work.

CrazyCdn
CrazyCdn
On 3/24/2019 at 11:02 PM, Psychopathetica said:

Wow nothing o.o

You waited less then 6 hours before posting that? You can go days without a reply on here, or stackoverflow. You have to have the right person with the right knowledge come by, see your post and reply. It's a forum not text messaging ?

2 hours ago, NineYearCycle said:

Which will tell it to run on the dedicated GPU. This might then mean that it appears as the running app in GeForce Experience and you can then add a custom profile for it.

This code is for laptops for the most part and will not bring up the GeForce options the OP was asking about. I can attest from first hand knowledge :) Though it did work on my laptop as my engine was defaulting to the Intel GPU not the nVidia GPU. So handy code to have anyway.

"Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety." --Benjamin Franklin
turanszkij
turanszkij

Your app will probably be detected as supported if you run it in exclusive full screen, or windowed borderless, and specifically R10_G10_B10_A2_UNORM or R8G8B8A8_UNORM or B8G8R8A8_UNORM backbuffer format I believe. The resolution should also be something like 1920x1080, 3840x2160 or some standard video format resolution. It worked for me like this.

Promit
Promit
On 3/24/2019 at 9:48 PM, Psychopathetica said:

Hey guys. For nearly every game I run on my laptop, the GeForce Experience tag pops up asking you to enable it with Alt+Z or something. But for some reason, it never pops up in any of my C++ DirectX apps. Which means programmably there has got to be a way to enable it. I tried Googling this and got nothing. What do the pros do? Would be nice to have for FPS counters without having to do your own or use a graphics diagnostics. I use Visual Studio 2017. Thanks in advance.

There's an API and developer page. https://developer.nvidia.com/geforce-settings-api

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Psychopathetica
Psychopathetica
3 hours ago, turanszkij said:

Your app will probably be detected as supported if you run it in exclusive full screen, or windowed borderless, and specifically R10_G10_B10_A2_UNORM or R8G8B8A8_UNORM or B8G8R8A8_UNORM backbuffer format I believe. The resolution should also be something like 1920x1080, 3840x2160 or some standard video format resolution. It worked for me like this.

My backbuffer is nearly always R8G8B8A8_UNORM, in fullscreen mode, and resolution is 1920×1080. Still regardless it doesnt trigger it. I may look into the GeForce APIs to see if anything might be useful from the last poster.

Psychopathetica
Psychopathetica

Well. I think I'm on to something. I found on the NVidea Developer website the GeForce Experience Settings API SDK. Ironically I didn't realize I was a member. Must have joined a year or two ago. So maybe if using the libraries from here will end up triggering the tag that I was referring to. I also found other nifty things in here such as PhysX.

Psychopathetica
Psychopathetica

OMG I did it. Turns out that NineYearCycle was right!


extern "C" { _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; }

This little snippet of code activated my GeForce Experience tag that I've been seeing in all of my triple A games. And on top of that my program went 3 times faster than usual in doing so with my vsync off. Like over 370 FPS. Weird. Thanks for your help guys.

Edit: Works in Windowed Mode too!

Hodgman
Hodgman
2 hours ago, Psychopathetica said:

I found on the NVidea Developer website the GeForce Experience Settings API SDK.

Promit posted that link above :D

NineYearCycle
NineYearCycle
16 hours ago, CrazyCdn said:

This code is for laptops for the most part and will not bring up the GeForce options the OP was asking about. I can attest from first hand knowledge :) Though it did work on my laptop as my engine was defaulting to the Intel GPU not the nVidia GPU. So handy code to have anyway.

Yeah but he specifically mentioned his laptop, and it is useful code to have in every codebase anyway ;)

"Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile" "Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgement difficult."
May1412
May1412

cool!

dawnbailey1974
dawnbailey1974

Psychopathetica said:

Wow nothing o.o . Anyways, I opened up the NVidea GeForce Experience app to see if I can add a program to it, but it would not let me unless supported. I was thinking originally it is because it is not part of their supported list of games essays (see here: https://www.the-essays.com/). But even with non supported games, it still pops up in that particular game, such as Alice Madness Returns. In my sample DirectX programs I wrote in C++, however, compiling it in Release mode rather than Debug, and running it still ended up not showing up at all. Do I have to add my program to NVidea exceptions, or what? What could possibly be missing?

[Edit] I posted this question on NVideas forums as well, so hopefully I can get some answers. Maybe from NVidea themselves! Well see.

I have kinda similar problem and still do not know how to fix it.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.