You are not logged in.

Read the FAQ and Knowledge Base before posting.
We won't make a 3DS/2DS emulator.



#1 2013-06-03 02:04:54

greenblock
Member
Registered: 2013-06-03
Posts: 5

DeSmuME not activating High Performance mode on Intel HD 4000

Hello, first post here!

If anybody on the team reads it, you all have done an excelent work polishing this up, congratulations smile!

Anyway. I recently bought an Asus Vivobook S400CA; specs:

Intel® Core™ i5 3317U Processor
Integrated Intel® HD Graphics 4000
Microsoft® Windows™ 8 Single Language (x64)

I'm running DeSmuME 0.99 (x64) and while all my games make the GPU core clock go up, with DeSmuME it stays at the bottom 350mHz! I don't have to set up any app list for 'High Performance mode' on the GPU driver, I don't even have that option. I just set up a profile on the driver so If it's connected to an external power source it's on High Performance mode and if relying on the battery it should make it's duration longer. If I open a game, say, Little Inferno, and let it run on the background it will make the GPU frequency go up to 1050mHz and DeSmuME will run much better, even with the game running with it.

Why doesn't it trigger the "hey I'm not MS Word, make that GPU work" mode? And I've tried both with Software and the two Open GL modes, no difference in that regard.

Here's the current desmume.ini that' I'm using

[General]
Language=0
Recent Rom 0=
Recent Rom 1=
Recent Rom 2=
Recent Rom 3=
Recent Rom 4=
Recent Rom 5=
Recent Rom 6=
Recent Rom 7=
Recent Rom 8=
Recent Rom 9=
[3D]
Renderer=1
HighResolutionInterpolateColor=0
EnableEdgeMark=1
EnableFog=1
EnableTexture=1
ZeldaShadowDepthHack=0
EnableLineHack=0
[Video]
Window Rotate=0
Filter=0
Width=256
Height=384
Window Size=1
Window width=256
Window height=384
WindowPosX=488
WindowPosY=77
FrameSkip=AUTO0
VSync=0
Display Method=3
Display Method Filter=1
LCDsLayout=0
LCDsSwap=0
[Display]
FrameCounter=0
ScreenGap=0
Window Split Border Drag=1
Display Fps=0
Show Toolbar=0
[RamWatch]
SaveWindowPos=0
RWWindowPosX=0
RWWindowPosY=0
Auto-load=0
[Watches]
Recent Watch 1=
Recent Watch 2=
Recent Watch 3=
Recent Watch 4=
Recent Watch 5=
[Scripting]
Recent Lua Script 1=
Recent Lua Script 2=
Recent Lua Script 3=
Recent Lua Script 4=
Recent Lua Script 5=
Recent Lua Script 6=
Recent Lua Script 7=
Recent Lua Script 8=
Recent Lua Script 9=
Recent Lua Script 10=
Recent Lua Script 11=
Recent Lua Script 12=
Recent Lua Script 13=
Recent Lua Script 14=
Recent Lua Script 15=
AutoLoad=0
[Sound]
Volume=100
SoundCore2=2
SoundBufferSize2=5880
SynchMode=1
SynchMethod=0
SPUInterpolation=0
SpuAdvanced=0
[PathSettings]
Roms=C:\VGMToolBox
Battery=.\Battery
States=.\States
Screenshots=.\Screenshots
AviFiles=.\AviFiles
Cheats=.\Cheats
R4format=1043
SoundSamples=.\SoundSamples
Firmware=.\Firmware
Lua=.\Lua
format=%f_%s_%r
lastVisit=1
Associate=0
[Controls]
Left=32768
Right=32769
Up=32770
Down=32771
Left_Up=27
Left_Down=0
Right_Up=0
Right_Down=0
Start=32785
Select=32784
Lid=0
Debug=0
A=32777
B=32778
X=32776
Y=32779
L=32780
R=32781
AllowUpAndDown=0
[FrameLimit]
FrameLimit=1
[Emulation]
DebugConsole=0
EnsataEmulation=0
AdvancedTiming=0
CPUmode=1
[BIOS]
UseExtBIOS=0
ARM9BIOSFile=bios9.bin
ARM7BIOSFile=bios7.bin
SWIFromBIOS=0
PatchSWI3=0
[Firmware]
UseExtFirmware=0
FirmwareFile=firmware.bin
BootFromFirmware=0

Thanks for the attention big_smile

Last edited by greenblock (2013-06-03 02:11:08)

Offline

#2 2013-06-03 03:51:55

rogerman
Member
Registered: 2011-06-04
Posts: 380

Re: DeSmuME not activating High Performance mode on Intel HD 4000

The short answer: The most likely reason why your GPU core clock isn't boosted is because DeSmuME's use of the GPU is very minimal.

-------

The long answer: Almost everything that DeSmuME uses the GPU for is memory bandwidth related (uploading textures mostly, or maybe downloading pixel buffer objects in the OpenGL 3D renderer). Operations which rely on memory bandwidth need faster memory, not so much a faster GPU core clock. Since you're using an integrated GPU, your memory speed is locked to your RAM speed. Note that system RAM is slower than dedicated VRAM, so integrated GPUs have a potential performance bottleneck that can limit the speed of the GPU core clock.

So what does rely on a fast GPU core clock? The answer is geometry and shader operations. The only thing in DeSmuME that really uses geometry/shader operations is the OpenGL 3D renderer, so let's focus on why DeSmuME probably doesn't boost the GPU core clock when you're using OpenGL. (If you're using SoftRasterizer, then 3D is emulated entirely on the CPU, so ignore SoftRasterizer for this discussion.)

1. A Nintendo DS maxes out at 6144 vertices, so DeSmuME doesn't need to push a lot of geometry to the GPU.
2. DeSmuME's vertex shader is simply a passthrough shader due to the DS geometry being emulated on the CPU, so DeSmuME barely uses the vertex shader.
3. DeSmuME's fragment shader is used for the DS fragment emulation, and therefore has a lot of branching code. This is a performance bottleneck on our side. However, optimizing this is very difficult due to the nature of how we emulate fragments. So because of this bottleneck, the speed of geometry/shader operations can be limited.

Because of these reasons, DeSmuME doesn't need to perform a whole lot of geometry/shader operations that would warrant the need to boost the GPU core clock, so that's why the clock speed stays low.

Offline

#3 2013-06-03 05:24:08

greenblock
Member
Registered: 2013-06-03
Posts: 5

Re: DeSmuME not activating High Performance mode on Intel HD 4000

So what does rely on a fast GPU core clock? The answer is geometry and shader operations. The only thing in DeSmuME that really uses geometry/shader operations is the OpenGL 3D renderer, so let's focus on why DeSmuME probably doesn't boost the GPU core clock when you're using OpenGL.

I imagined so, I never use OpenGL renderer on my PC -- it causes many bugs and has no support for the 'Edge marking' feature, which can be very important visually -- but on the laptop, switching to it was the 1st thing I thought would be good!

With you response I actually shifted my focus frolm 'GPU' to 'CPU' and I sort of fixed it. I just made the minimum CPU core be at 100% so now it runs ok! It's strange since it runs bad, which means the CPU isn't calculating fast enough for it's needs but that doesn't trigger the HEY I NEED MORE POWER thing. And we can get the confirmation that it needed more power from the fact it ran better when I made the CPU clock faster!

I still think there's some little detail that doesn't seem right. When DeSmumME was slow, the laptop continued running pretty well and even DeSmuME menus were fast and responsive...!

Again thanks for the feedback, it helped!

Offline

#4 2013-06-03 06:03:25

DaMan
Member
Registered: 2011-01-01
Posts: 59

Re: DeSmuME not activating High Performance mode on Intel HD 4000

17w isn't a lot.  Software rendering will put all the cores to work not leaving any spare watts to turbo the GPU.  You can try --num-cores=3 or 2 and see if that helps.

Offline

#5 2013-06-03 12:55:38

greenblock
Member
Registered: 2013-06-03
Posts: 5

Re: DeSmuME not activating High Performance mode on Intel HD 4000

As I said on the previous post, I was semi-wrong and the culprit was the CPU. But I had to set the floor CPU core frequency to 100% so the emulator could run well, the strange part is that!

It was running slow but it didn't trigger the 'high performance mode' on the CPU. When I set the minimum core frequency to 100% it was solved, so it's not a problem of inefficient power supply or anything like that.

Offline

#6 2013-06-03 23:28:40

zeromus
Radical Ninja
Registered: 2009-01-05
Posts: 6,169

Re: DeSmuME not activating High Performance mode on Intel HD 4000

feel free to continue to discuss this all you wish, but it isnt desmume's responsibility to activate your personal computer's performance hacks modes.

Offline

#7 2013-06-04 13:20:52

greenblock
Member
Registered: 2013-06-03
Posts: 5

Re: DeSmuME not activating High Performance mode on Intel HD 4000

Well, this is a free software, I didn't sign any support deal up BUT it somewhat is DeSmuME's fault (the biggest fault is from Intel though haha). I say that because I decided to monitor the task manager and saw desmume will never use more than 50% of my processor capacity, that's why it didn't make the Core frequency go higher in the first place (and just so you know we're talking about 50% of a 700mHz processor in 'saving mode')! Searching the forums I saw people already reported the cause of this: the incompatibility with Hyperthreading!  I've read your explanations here /viewtopic.php?id=3811 and /viewtopic.php?id=7865 so I think there's not much to be done, or is there?

Anyway I was just concerned about my laptop being a little defective or not, I'm relieved now since I experienced buying two bad laptops this year.

Offline

#8 2013-06-04 15:28:53

zeromus
Radical Ninja
Registered: 2009-01-05
Posts: 6,169

Re: DeSmuME not activating High Performance mode on Intel HD 4000

You seem to be mixing up your cpu and gpu speeds, so continuing this conversation is pointless

Offline

#9 2013-06-04 16:37:41

greenblock
Member
Registered: 2013-06-03
Posts: 5

Re: DeSmuME not activating High Performance mode on Intel HD 4000

No I am not. In save mode it sets the speed to the minimum it can. It usually sits around 700mHz or something. After entering high performance mode it jumps to 2,3gHz (turbo mode) and then to 1,9GHz if the temp goes too high. You're also being very impolite by the way. I perfectly know the GPU minimum core speed is 350mHz, and in high perfomance it jumps to 1050MHz but then it goes at 650MHz because of the throttling.

Edit: Using a heavy game and software rasterizer makes it use the CPU properly but only if I manually set High Performance mode!

semttulohox.png

semttulo2tu.png

And while I am still confused, at least I can play my games with no problems tongue

Last edited by greenblock (2013-06-04 20:39:00)

Offline

#10 2013-06-04 21:13:44

zeromus
Radical Ninja
Registered: 2009-01-05
Posts: 6,169

Re: DeSmuME not activating High Performance mode on Intel HD 4000

desmume can't ask for 100% of your cpu, as it wouldnt have anything to do with it, and it would be bad manners to ask for 100% of the cpu during times when it can't be used. Desmume only uses more than 2 cores during brief periods of time, when the 3d rendering is happening, at which point the main cpu emulation thread is disabled. This is probably something like 5% of the time. So if you look at the overall cpu usage, it can only use 100% of your cpu 5% of the time, and so the net speedup is something very much less.

Your power control ought to realize that at least one thread is pretty much pegging the performance (the main cpu emulation speed) and jack up your fan and clocks to enhance that thread.

It is bad manners to ask for 100% of the cpu ahead of time because not everyone wants desmume to do that, but I guess we could make it an option.

Offline

Board footer

Powered by FluxBB