VOGONS

Common searches


Smart screen update patch

Topic actions

Reply 21 of 30, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

Well, I'm not sure how to go with this. Since the number of executed cycles fluctuates a bit the code will sometimes need to raise the number of cycles as well or it will just lower it all the time 😀
I was more thinking of posting the update to the smartscreen update patch as the previous obviously has problems with some games...

Reply 22 of 30, by user222

User metadata
Rank Member
Rank
Member
jusid wrote:

Original dosbox 0.63 with Full core produces the same error. Other cores works well.

It works in the CVS version, though. I was actually wondering why didn't jusid use a CVS version for the build.

Reply 23 of 30, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Works very well on this K63-400. Fast way to test the results is to load up Dr. Hardware and use the video benchmark.

DosBox using just timesync the video benchmark test is in the 500's.

DosBox using timesync and the smartscreen patch it's bumped up to the 1000's. So 2x the performance in a synthetic benchmark. Now actual gameplay will probably be much less than this....I think the major benefit of this patch will be lower CPU overhead for better audio quality (and of course non-freezing systems when they load DosBox for the first time 😉 ). Would be interesting to see what the guys using DosBox on XBOX/handheld devices think of it.....

Reply 24 of 30, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

My first impression of the code was that it won't work
with e.g. scrolling-only screen updates. Found an example
in the Second Reality demo from Future Crew, the sidescroller
at the very beginning jumps at certain points.
The demo shows some other problems of the patch, too.

I added some
vga.draw.need_refresh = 1;
to the vga-port write handlers for testing, which seems
to work (but should be refined).

Also in vga_memory.cpp the memory write access handlers
(like VGA_GFX_256U_WriteHandler) got a need_refresh.

hth

Reply 25 of 30, by jusid

User metadata
Rank Newbie
Rank
Newbie

Latest smartupdate and autocycles adjustment patch.

Attachments

  • Filename
    sulatest.diff
    File size
    22.59 KiB
    Downloads
    148 downloads
    File comment
    Latest smartupdate and autocycles adjustment patch
    File license
    Fair use/fair dealing exception

Reply 27 of 30, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

The way how Win3 256-color driver work it may produce challenges to any smart update scheme. It switches between chain4 and unchained mode all the time and actually draws pixels in both modes. I've seen it in Tseng driver and I'd expect S3 to do the same.

Reply 28 of 30, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

vasyl, you seem to know a lot about dosbox graphics system. Do you have any ideas how to improve smartscreen patch? Somehow I don't feel trapping memory writes is the most efficient way...doesn't it reduce memory write speed?

Reply 29 of 30, by vasyl

User metadata
Rank Oldbie
Rank
Oldbie

First of all, disclaimer: I haven't looked into your patch so some stuff I say may not apply or is already there.
Yours is tough question. You have to compromise in one place to get significant improvement in another. You have to trap somewhere and the earlier you trap the more you save. That means memory access. All you can do is decide the trapping unit: is that a pixel, or a scan line, or a chunk, etc. I would not worry about trapping EGA or unchained mode in VGA_GFX_256U_WriteHandler, that should not be that expensive. Trapping chained modes which use page mapping can get much worse if you attempt to get your unit below 4K. I would probably set up some flags to detect access patterns. If all accesses are EGA or unchained VGA I would use smaller units and precise tracking. If there are any chained accesses I would switch to 4K pages. Fancy implementation would have mixture of 4K and smaller chunks. Does this make sense?

Reply 30 of 30, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

a simple way would be to use 2 sets of write handlers.
one that detects wether something changes. if it changes then install the regular writehandler and set the update screen variable to true.

Not sure if it's the most efficient, but it would save a test on each write

Water flows down the stream
How to ask questions the smart way!