From: SourceForge.net <no...@so...> - 2009-11-05 01:17:12
|
Bugs item #2888367, was opened at 2009-10-29 00:10 Message generated for change (Comment added) made by mthuurne You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=421861&aid=2888367&group_id=38274 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: FRS (sd-snatcher) Assigned to: Nobody/Anonymous (nobody) Summary: Throttle only works on fullscreen on MacOS X in SDL renderer Initial Comment: On the Mac OS X version, the throttle (CMD+T) feature is only working when openMSX is running in fullscreen. When on windowed mode it only runs at normal speed. Version tested: openMSX 0.7.2 Steps to reproduce the problem: 1) Boot openMSX in windowed mode 2) Press cmd+T. The " Throttle icon" will be shown, but the emulation will remain at normal speed. Move the cursor inside the BASIC and check the normal speed 3) Press cmd+F to change to fullscreen. The emulation will now be throttled at full speed. Move the cursor inside the BASIC again and notice the high speed. 3) Press cmd+F again to return to the windowed mode. Move the cursor inside the BASIC and notice the throttle isn't working again, even considering that you didn't pressed cmd+T to disable the throttle mode. ---------------------------------------------------------------------- >Comment By: Maarten ter Huurne (mthuurne) Date: 2009-11-05 02:17 Message: Ah, now I understand where the confusion about the renderer comes from. Normally openMSX spends some time doing emulation, faster than a real MSX would. Then it waits until real time has caught up with emulated time. This synchronization is done once per frame (50/60Hz) when throttle is on. When throttle is off, the synchronization is skipped and openMSX continues emulating the next frame as soon as the one before it is finished. Since rendering is the heaviest part of openMSX, this is what limits the speedup you get. It is also rather pointless to output something like 200 frames per second. Therefore we decided to skip as many frames as maxframeskip allows when throttle is turned off. I only use maxframeskip 0 when doing benchmarks. What it means is, that in no circumstances openMSX sound skip an output video frame. So if the host CPU is too slow, emulation will be slowed down instead of skipping frames. In the case of throttle, it means that when running at full speed, still every frame is output. As I wrote in the first comment, it is possible output frames are synchronized to the host screen refresh frequency. That synchronization could limit openMSX to for example 60 frames per second. If maxframeskip is 0, that means the MSX will run at normal speed. If maxframeskip is 2, it means the MSX will run 3 times as fast as normal: 60 frames per real second, but 20 frames per emulated second, because for every shown frame two are skipped. The default value for maxframeskip is 10, which is a good value in most situations. ---------------------------------------------------------------------- Comment By: FRS (sd-snatcher) Date: 2009-11-05 01:20 Message: I'm using the stock openMSX 0.7.2 downloaded from the openMSX site, installed inside the NekoLauncher openMSX.App v0.9. It seems that the confusion was caused by the fact that NekoLauncher-openMSX always shows all the SDL/SDL-GL* options even if the installed openMSX do not support them. I tried now the command "set renderer" on openMSX console and the only options shown are "SDL" and "SDL-PP". Checked the maxframeskip as you asked: it's set to 0 (zero). I don't remember to ever have changed this value... Is zero the right value? ---------------------------------------------------------------------- Comment By: Maarten ter Huurne (mthuurne) Date: 2009-11-01 15:24 Message: SDLGL was the first GL renderer, but it had some design flaws that could not be fixed, so we removed it. SDLGL-PP does the rendering in software and the post processing (scalers etc) using OpenGL 2.0. SDLGL-FB16/32 do the rendering and post processing in software and only use OpenGL to upload the resulting (16/32 bits per pixel) frame. Since these last two do not really offer an advantage over the SDL renderer, we only have them enabled in development builds. Note that if your build has the SDLGL renderer, it cannot be 0.7.2, since SDLGL was removed in January 2009 and 0.7.2 was released in June 2009. I just tested on my Mac with OS X 10.6.1 and nVidia 8600 GPU and there throttle works in both the SDL and the SDLGL-PP renderer. Did you check what value "maxframeskip" has in your settings? Type "set maxframeskip" in the openMSX console to see the value. Can you test with the 0.7.2 released binary? The released binary is statically linked to SDL, so it would avoid any problems caused by a different SDL version. ---------------------------------------------------------------------- Comment By: Manuel Bilderbeek (manuelbi) Date: 2009-10-31 22:20 Message: Hmm, which version of openMSX are you using? You seem to be using a development version (because SDLGL-PP-FB16/32 aren't available on release builds), but not a very recent one, because SDLGL has been removed a while ago. ---------------------------------------------------------------------- Comment By: FRS (sd-snatcher) Date: 2009-10-31 21:47 Message: Mac OS-X version 10.5.8 Video: NVIDIA GeForce 9400 ---------------------------------------------------------------------- Comment By: FRS (sd-snatcher) Date: 2009-10-31 21:39 Message: Ok, here are the results for each renderer: - SDL = Throttle don't work on windowed mode - SDLGL = Throttle don't work on windowed mode - SDLGL-PP:Normal = Throttle works fine on windowed mode - SDLGL-PP:3D = Throttle works fine on windowed mode - SDLGL-PP:FB16 = Throttle works fine on windowed mode - SDLGL-PP:FB32 = Throttle works fine on windowed mode What's de difference between the many "-PP" modes? (Except the 3D, which is obvious :) ---------------------------------------------------------------------- Comment By: Maarten ter Huurne (mthuurne) Date: 2009-10-29 00:55 Message: Actually, we use double buffering for the SDLGL-PP renderer, but not for the SDL renderer. Can you try both renderers and check whether the problem occurs in both or just in one of them? ---------------------------------------------------------------------- Comment By: Maarten ter Huurne (mthuurne) Date: 2009-10-29 00:52 Message: What are you using as the value for "maxframeskip"? openMSX uses double buffering, which is synced to the screen refresh if possible. For TFT screens, a refresh rate of 60Hz is very common. This means that openMSX cannot output more than 60 frames per second. However, when throttle is off (max speed), we skip the maximum number of frames as specified by the "maxframeskip" setting. So if "maxframeskip" is 10 for example, openMSX should run 11 times faster than normal, even when synchronized to a 60Hz host display. Which OS X version is this? And what type of video hardware (Intel/ATI/nVidia) does it have? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=421861&aid=2888367&group_id=38274 |