VOGONS

Common searches


DOSBox tearing & renderer idle

Topic actions

First post, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie

The renderer does idle if nothing happens on the screen. That's bad for capturing videos.

It's a bit annoying if you're capturing video and having to move the mouse fast so that the video encoder gets frames before closing the file too early (when you want to end capturing) (because the video encoder does close at the last frame it got of course - and if you're saying something in the video but the encoder doesn't get a frame anymore, then the video encode is closed at last frame and the audio longer than video.

I want that the renderer updates the whole time like almost every other renderer does. A constant rendering like new game renderer does wouldn't make such a problem.

---

And I have with every game tearing. Any way to avoid that? And it is the box, not my screen. Because the tearing is also in captured videos present.

Last edited by De-M-oN on 2015-01-12, 15:42. Edited 2 times in total.

Reply 2 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie
truth5678 wrote:

Post a video of the "tearing" and specs of the monitor/video/OS.

Late reply but better than never xD

And the problem is still there so..

Watch any Blood video of this list: https://www.youtube.com/playlist?list=PLQmYRU … XU_Oc8zzN-jPZGc

All videos have tearing. You can try to catch it while pausing the video. Here an example frame:

http://abload.de/img/unbenannt1789rskz.png

It doesnt disturb ME so much, but it disturbs a video encoder. Blood is good compressable, but for youtube quality every way more compressable saves more quality on them. And a video with tearing will degrade video encoding efficiency.

My monitor should be irrelevant, because its not monitor tearing if the tearing is still on a recorded video file, but:

Its a NEC PA302W-BK-SV (30", 2560x1600, 60hz)
OS is a windows 7 x64 ultimate.

I use dosbox svn daum of this site: http://ykhwong.x-y.net/

output is at direct3D and the vga device is the vesa_nolfb. CPU cycles is set to automatic.
Blood runs with a maximum of 70fps, vsync with 60hz doesnt help. If vsync at 70hz would help I dont know. But I dont think so. And the fps rate is good, but a flat 70.0000 is not that common with emulation I would say. its swapping around 60 and 70.

And I believe I mentioned it already earlier but again:

Why the renderer does IDLE if there is no action on the screen? It is really really annoying for recording software. Because they idle then too until they get a new frame. Especially if you want to end the recording, you have to move the mouse before closing the recording if the renderer is idling, because otherwise if dosbox doesnt send any frame anymore the video encoder of course closes the file at the last received frame, means an earlier closed video than wanted. Also it is bad while recording when the renderer does idle.

Why you do that? Make it please at least optional. Or is it a behaviour of the direct3D output and I have to tell that the devs of the ykhwong daum svn version?

Reply 3 of 28, by truth_deleted

User metadata

The idling has already been noted in a thread on that game. It seems by design. Please see that thread where it is discussed in-depth. If you would prefer to test with hardware timings which mimic real hardware, then please test in PCem.

Also, are you using the dosbox video capture method or another method? In addition, post a specific video which shows your issue, or at least a specific time frame so we can verify. The single snapshot is not as useful since perfect synchrony between guest and host video output is not expected, at least from the many threads discussing the issue.

Separate the two issues. One is the idling which has already been discussed. The vsync is a separate issue and there are posts in the vsync thread in patches subforum. Refer there so you have an expectation of the video output and further information on the issue. This vsync issue is thoroughly discussed in nearly all forums on emulation. Also, try the RetroArch forums about vsync. It is possible to use a dosbox core with retroarch, possibly with their hard vsync option, although it may not be implemented (yet). However, first read the vsync threads on dosbox at Vogons.

In any case, you probably just require some dosbox settings to minimize the video artifacting while recording.

Last edited by truth_deleted on 2015-01-12, 02:15. Edited 1 time in total.

Reply 4 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie
truth5678 wrote:

The idling has already been noted in a thread on that game. It seems by design. Please see that thread where it is discussed in-depth. If you would prefer to test with hardware timings which mimic real hardware, then please test in PCem.

you really meant idling or was it a typo and you meant tearing?

a) dosbox does the tearing with need for speed 1 SE as well. And thats a complete else engine by a complete else developer, so I assume dosbox will do the tearing everywhere.
And NFS 1 doesnt tear with original dos system. neither does blood.
b) The dosbox renderer does idle everywhere. If the cursor at dos wouldnt "blink" it would be zero fps even there. But the blinking creates 8.7 fps *lol*
Its the renderer, not the game.

Also, are you using the dosbox video capture method or another method? Did you capture those videos yourself or are you relying on google searches for your conclusions?

I use MSI Afterburner. I prefer a other lossless codec and also the dosbox capture captures unscaled. But I dont want that.

Did you capture those videos yourself or are you relying on google searches for your conclusions?

You can assume that these are my videos if the linked playlist with the blood videos are by a channel with the same nickname like I have on this forum.

So yes - of course its my own experience and videos.

For vsync: I would like to avoid using vsync. I dont mind monitor tearing, but I'd like that dosbox itself wouldnt do it anymore. And this should be possible to do without vsync.

Reply 5 of 28, by truth_deleted

User metadata

I meant idling in that the frame rates drop very low. The video renderer seems to idle by design, as I have already typed. 😀 I was referring to the dosbox renderer.

Don't use 3rd party video capture, this has been discussed, at least for testing. Use the dosbox method. I don't know why you left that detail out from your post.

Edit: then turn off vsync in the host. I think you could read the dozens of posts on the topic before making generalizations on the vsync process. Here is the major vsync post and the patch: VIDEO - Vertical Sync (SDL1).

Last edited by truth_deleted on 2015-01-12, 02:23. Edited 1 time in total.

Reply 6 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie
truth5678 wrote:

I meant idling in that the frame rates drop very low. The video renderer seems to idle by design, as I have already typed. 😀 I was referring to the dosbox renderer.

Thats what I wrote. But why they did program the dosbox renderer like this? Its how said bad for video capturing if the renderer does that. Why not a renderer which doesnt idle? A modern video game doesnt idle as well if there is no action ongoing on the screen. Even the (most) dos game renderer dont do that.

Don't use 3rd party video capture, this has been discussed, at least for testing. Use the dosbox method.

I will, because that isnt the problem at all. The problem is, that the dosbox does tearing. I notice it while playing. recording software just records, what it gets. And if the dosbox renderer does tear, afterburner cant remove that^^ But how said - I notice the tearing also when just playing.

Edit: then turn off vsync in the host.

what? I talked about the renderer tearing and just said that it is still there if I use vsync. Of course I turned vsync off again after I saw that it doesnt help out the tearing of the dosbox..

I dont get the sense of this argument?

Last edited by De-M-oN on 2015-01-12, 02:26. Edited 1 time in total.

Reply 7 of 28, by truth_deleted

User metadata

Dosbox makes compromises between performance and timing accuracy. Please test in PCem to see the difference in speed where accuracy is favored over speed. I noted all this with extensive testing in that thread on "Blood". It doesn't interfere with gameplay, but you should test the dosbox video capture as it must have been developed specifically to accommodate dosbox.

You may try dosbox-x which has an alternate video renderer! Also, the recent Ykhwong's build has it.

Produce your videos with dosbox video capture and then the 3rd party capture so we can verify. 😀

Verify that your vsync is off in the video driver. Unless you already verified this, then show your exact steps to do this, including video driver version, card, and all relevant settings, including triple buffering.

Last edited by truth_deleted on 2015-01-12, 02:29. Edited 1 time in total.

Reply 10 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie

Produce your videos with dosbox video capture and then the 3rd party capture so we can verify. 😀

Dont you get it?
I can use nothing of both and the dosbox tears. The dosbox renderer tears.

Verify that your vsync is off in the video driver

I force it off always. I just enabled it temporarily in driver application controlled and in dosbox enabled. After the test was done I turned it off again in dosbox and in driver I went back to forced off. Triple Buffering is in driver always at enabled. vmemsize at dosbox is 32 MB. Big enough to cover this:

vmemsize: Amount of video memory in megabytes. # The maximum resolution and […]
Show full quote

vmemsize: Amount of video memory in megabytes.
# The maximum resolution and color depth the svga_s3 will be able to display
# is determined by this value.
# 0: 512k (800x600 at 256 colors)
# 1: 1024x768 at 256 colors or 800x600 at 64k colors
# 2: 1600x1200 at 256 colors or 1024x768 at 64k colors or 640x480 at 16M colors
# 4: 1600x1200 at 64k colors or 1024x768 at 16M colors
# 8: up to 1600x1200 at 16M colors
# For build engine games, use more memory than in the list above so it can
# use triple buffering and thus won't flicker.

And NFS 1 isnt even a build game. But for the flickering they sure meant something else anyway.

You cannot make conclusions with no evidence. Please provide evidence by samples and then we can discuss actual results instead of guesses disguised as assertions. 😀

Test with dosbox video capture, as suggested.

The tearing is there without capturing video. You got it? xD Its the dosbox renderer and not the video capture xD

Reply 12 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie

It just doesnt make any sense to watch for other method of recording my videos if the tearing occurs while playing the game without capturing video at all.

Its the renderer itself. as simple as that.

But if it makes you happy, here:

http://abload.de/img/unbenannt186w5agt.png

it tears as well - oh wonder xD

sorry I dont wanted to be in any way rude, its just a thing with logic. If the dosbox renderer tears, then its the renderer and not the video capturing..

Reply 13 of 28, by truth_deleted

User metadata

I'm trying to relate this to a dosbox issue and not a bug report on Ykhwong's. Please test in vanilla dosbox and use its video capture method. Also, do you have triple buffering on in the video driver? Are you verifying that vsync is truly off in the video driver and testing across output modes?

I hope you find the time to read the threads on vsync and test in dosbox.

Reply 14 of 28, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

You can stop "render idling" if you modify a shader (point.fx for instance) and add "bool forceupdate : FORCEUPDATE = true;" somewhere at the top. Use output=Direct3D,pixelshader=point.fx,scaler=hardware2x.

As for tearing, it's probably the game that doesn't use vsync. DOS games rarely used vsync, Tie Fighter for example updates only 1/4 of the frame each frame.

http://www.si-gamer.net/gulikoza

Reply 15 of 28, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

Split this off into its own thread.

[EDIT] And fixed up original post even more. Sorry, hadn't realized the idle discussion was important to this thread. 😀

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 16 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie

You can stop "render idling" if you modify a shader (point.fx for instance) and add "bool forceupdate : FORCEUPDATE = true;" somewhere at the top. Use output=Direct3D,pixelshader=point.fx,scaler=hardware2x.

Didnt work for me 🙁

Does the line have to be at a specific place in the point.fx file?

Also at none.fx with only this line it didnt work for me 🙁

Reply 18 of 28, by De-M-oN

User metadata
Rank Newbie
Rank
Newbie

awww *-*

just add it above SCALING

That did it 😀

I just wonder: Why it isnt the default behaviour of the box? Has the render idle any sense? 🙁

honestly: The whole perfomance got a huge buff now. Instead of 50 to 70 fps swapping in blood while recording I have now a flat 70fps.

Its so butter smooth now. Renderer idle - Why it is default like this? I see only disadvantages behind that 😖