Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: Multithreading & ddraw?  (Read 7287 times)

0 Members and 1 Guest are viewing this topic.

EnC

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11
  • Last login:August 04, 2011, 09:32:44 pm
Multithreading & ddraw?
« on: August 02, 2011, 03:39:29 pm »
* Multithreaded mode and waitvsync work together in Windows without throttle

How is that different/better than what official MAME build does?

Is it to fix some bug, which one? Is it additional feature, what for?



* Default GroovyMAME setting is to use DirectDraw instead of Direct3D

What is advantage in using depreciated and slower rendering pathway?

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7411
  • Last login:March 14, 2024, 05:26:05 am
  • Quote me with care
Re: Multithreading & ddraw?
« Reply #1 on: August 02, 2011, 04:52:48 pm »
* Multithreaded mode and waitvsync work together in Windows without throttle

How is that different/better than what official MAME build does?

Is it to fix some bug, which one? Is it additional feature, what for?

In official MAME, when you enable multithreading + waitvsync and disable throttle, emulation goes full speed. This bug was reported by bitbytebit and MAME devs fixed it indeed, but only in the Linux (SDL) side. The issue persists in the Windows build, so we fix that in GroovyMAME.

If it doesn't go fullspeed in your system, it's likely that you're forcing some vsync option in your videocard's control panel.

* Default GroovyMAME setting is to use DirectDraw instead of Direct3D

What is advantage in using depreciated and slower rendering pathway?

DirectDraw is used as it was known to be faster than D3D actually, and also D3D caused an ugly blur in low resolutions as it filtered them, something that didn't happen with DirectDraw.

However, my experience is this is exactly the opposite with newer cards, where D3D is actually faster and causes no visible artifacts, while ddraw filters the frame. So D3D is a better option, specially when scaling is involved (it's several times faster than DDraw).

All GroovyMAME features work exactly the same for DDraw and D3D, so you can decide which one to use.
« Last Edit: August 02, 2011, 04:56:50 pm by Calamity »
Important note: posts reporting GM issues without a log will be IGNORED.
Steps to create a log:
 - From command line, run: groovymame.exe -v romname >romname.txt
 - Attach resulting romname.txt file to your post, instead of pasting it.

CRT Emudriver, VMMaker & Arcade OSD downloads, documentation and discussion:  Eiusdemmodi

EnC

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11
  • Last login:August 04, 2011, 09:32:44 pm
Re: Multithreading & ddraw?
« Reply #2 on: August 03, 2011, 02:05:45 am »

In official MAME, when you enable multithreading + waitvsync and disable throttle, emulation goes full speed. This bug was reported by bitbytebit and MAME devs fixed it indeed, but only in the Linux (SDL) side. The issue persists in the Windows build, so we fix that in GroovyMAME.

If it doesn't go fullspeed in your system, it's likely that you're forcing some vsync option in your videocard's control panel.

I just tried it and I have to disagree. In official MAME regardless of "multithreading" emulation does not go full speed with "waitvsync" enabled, it goes to exactly 100% as throttle is disabled, and that's as expected. It can go to full (maximum) speed only if "waitvsync" is diasbled and throttle (F10) is off.

This is very similar to what GroovyMAME does, it's only that the same thing is here controlled with "syncrefresh" instead of "waitvsync", which does not seem to have any functionality on its own, but is part of "syncrefresh". I am still not clear on what is the purpose of that feature or why GroovyMAME changed the way syncrefresh/waitvsync works. I also don't see how "multithreading" has anything to with any of this since in my tests that setting did not make any difference at all.


Quote
DirectDraw is used as it was known to be faster than D3D actually, and also D3D caused an ugly blur in low resolutions as it filtered them, something that didn't happen with DirectDraw.

I don't see how DirectDraw can possibly be faster if video card already supports DirectX. I guess if it's old enough it could simply not be able to support Direct3D, but that would only mean the particular adapter is outdated and so the only option is to use DDraw, which is no good reason to have it as default setting and downgrade everyone else.

The "blur" is welcome by many who are not using arcade monitors, it's bilinear texture filtering and can simply be disabled with setting "filter" option to zero, right? In any case you seem to be talking about past, but Groovy build is made around latest MAME and aimed at fairly modern hardware, so I think you should definitively consider to get this setting back to Direct3D as default option.


Quote
However, my experience is this is exactly the opposite with newer cards, where D3D is actually faster and causes no visible artifacts, while ddraw filters the frame. So D3D is a better option, specially when scaling is involved (it's several times faster than DDraw).

On my system it doubles the speed of Bank Panic, so instead of DirectDraw's 500%, I get maximum of 1000% game speed with Direct3D. This is huge difference and can turn many games from slow and unplayable to perfectly playable.


Quote
All GroovyMAME features work exactly the same for DDraw and D3D, so you can decide which one to use.

Apparently not. On my two computers DircetDraw was not able to properly sync with refresh rate, even though every other aplication and emulator can sync just fine. Direct3D is also much faster, so even though it's cool this can be set according to everyone's personal desire I don't see why would anyone prefer inferior option, and so I don't see any good reason why use it as *default*.

krick

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2006
  • Last login:February 08, 2023, 08:30:27 pm
  • Gotta have blue hair.
Re: Multithreading & ddraw?
« Reply #3 on: August 03, 2011, 06:41:01 pm »

The "blur" is welcome by many who are not using arcade monitors, it's bilinear texture filtering and can simply be disabled with setting "filter" option to zero, right? In any case you seem to be talking about past, but Groovy build is made around latest MAME and aimed at fairly modern hardware, so I think you should definitively consider to get this setting back to Direct3D as default option.



The problem is that the majority of GroovyMAME users ARE using arcade monitors.  We want pixel-perfect output without blurring.
Hantarex Polo 15KHz
Sapphire Radeon HD 7750 2GB (GCN)
GroovyMAME 0.197.017h_d3d9ex
CRT Emudriver & CRT Tools 2.0 beta 13 (Crimson 16.2.1 for GCN cards)
Windows 7 Home Premium 64-bit
Intel Core i7-4790K @ 4.8GHz
ASUS Z87M-PLUS Motherboard

EnC

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11
  • Last login:August 04, 2011, 09:32:44 pm
Re: Multithreading & ddraw?
« Reply #4 on: August 03, 2011, 07:16:20 pm »
The problem is that the majority of GroovyMAME users ARE using arcade monitors.  We want pixel-perfect output without blurring.

That's not a problem, Direct3D can do everything DirectDraw can, and more, and it can do it faster. If you are using arcade monitor simply turn off texture filtering and you will get the same thing. I think GroovyMAME should/could be useful to anyone, with any kind of monitor, if for nothing else but to have proper audio sync along frame rate sync, even if the game is not running at its authentic resolution and refresh rate.

Sjaak

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 706
  • Last login:Yesterday at 05:50:12 am
Re: Multithreading & ddraw?
« Reply #5 on: August 04, 2011, 03:09:13 am »
 :troll:

EnC is driverman