VOGONS


QEMU 3Dfx Glide Pass-Through (WHPX/KVM works!!!)

Topic actions

  • This topic is locked. You cannot reply or edit posts.

Reply 540 of 619, by digger

User metadata
Rank Oldbie
Rank
Oldbie

I see all this talk about PCem. But wasn't PCem's main strength emulation accuracy, and not so much CPU efficiency? I other words: behaviour and performance almost exactly as the target machine being emulated, if the host system is beefy enough?

Reply 541 of 619, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
RayeR wrote on 2021-01-22, 18:38:

... I think that the documentation of QEMU build is not needed to be made by author as he rather spends time with developing but maybe done by users who successfully replicated the process. And I really think that there are better ways to keep knowledges than expanding thread (not needed to be Github)...

Sorry for the outright self-promotion 😜: One way to steer the course towards that direction is to subscribe to my channel, liked the videos 😁 I knew I am bad at this. All the videos are uncut, unmodified, simple & direct recording.

And let's see what magic it will bring. Maybe it got the attention of MacOS developers and offer Cocoa/NSOpenGL support, maybe user-friendly GUI front-ends for QEMU blossomed, maybe more enthusiastic smart brass write blogs, guides and create better, concise and lengthy videos to cater for average Joe. And maybe the WINE folks will recognize the potentials of WineD3D on virtual machines and be serious about it, especially on legacy Windows support, maybe .... It also a gauge on how much more anyone care about replaying old games, or just moving on with new ones, or just having retro PCs or just use PCem 😜 🤣

Reply 542 of 619, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
digger wrote on 2021-01-23, 00:44:

I see all this talk about PCem. But wasn't PCem's main strength emulation accuracy, and not so much CPU efficiency? I other words: behaviour and performance almost exactly as the target machine being emulated, if the host system is beefy enough?

You're absolutely right, and I sincerely hope PCem do well in that regard. If I ever got bored and decided to do Glide wrapper with modern OpenGL (3.2+/PBO/VBO/GLSL), I could use PCem as a reference.

However, it is also very obvious that the "fanboys" hyped up the prospect of PCem playing Win9x games so much with its Voodoo emulation to the point that claimed its 3Dfx recompiler was so "freaking fast" that there was no desire for hardware acceleration. 😁 Or, having Voodoo emulation in software was the best thing ever so that 3Dfx games looked as original rendered by Voodoo instead of modern GPU look. Check out the Quake2 comparison, the color hues is different. (I was anticipating some fanboys would point this out 🤣.) Oh, 3Dfx would love that rhetoric 😁, otherwise it wouldn't have busted back in 2002 if everyone had insisted it got to be Voodoo or no deal. 22-bit color and 256x256 textures ruled! 🤣 Then in several occasions, outright downplayed the values of virtualization and/or VFIO PCI pass-through solution, preaching to uninformed audience virtualization unfit, poor compatibility and "duct-taped" VFIO craps.

PCem got out several years ahead before I decided to work on Glide pass-through for QEMU. I tried PCem, if it was "freaking fast" at Mechwarrior 2, then the thought of getting Glide pass-through working on QEMU would have been gone. Anyway, the hype was quite successful I would say, just look at how many YouTube videos out there for PCem. For quite a couple years, PCem remained the only solution for Win9x Direct3D and everyone should be thankful with the performance of Pentium II 300MHz. Don't challenge its performance, it is the problem of your host CPU. PCem is emulation done right.

Anyway, I think I should stop (but I did avoid touching the forbidden word 🤣). By the way, I enjoyed playing KOEI Uncharted Water on Bochs before I even knew about DOSBox on a Windows 2000 Thinkpad 600X.

Reply 543 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

PCem regardless of all its flaws has much bigger impact, because is designed for so called average Joe (not really but its not overcomplicated).. Qemu 3dfx is so far designed only for average kjliew 😀 Because he is only one who is able to use it for OpenGL.. and there are let say 10 other users, which are able to use it for Glide somehow..

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 544 of 619, by Bruninho

User metadata
Rank Oldbie
Rank
Oldbie

All those emulation solutions would be much better served if the developers of all them had the good will to share their ideas and methods between them and the community. They could (proactively) help eachother to improve and the retro/gaming community would hugely benefit from that. As of now we are hostage to virtualization solutions like VMware/Parallels/Virtualbox.

QEMU could benefit from some stuff from DOSBox and PCem, DOSBox could benefit from them both, PCem too, and so on... I know, I know, not everything that works on one solution will work for the other two, but still, ideas should be welcome. QEMU needs to be easier for the “average Joe”, and we have a few frontends for that (Linux has one, macOS and iOS now have UTM still in development but this is already an amazing solution, I have been using it). DOSBox needs to improve its voodoo emulation, PCem needs to work more reliable and faster, to stop with the excuses “its your CPU that cant handle it”. All that could happen if devs of all three worked together instead of them saying “my solution works better than yours” or fanboys of one fighting with the fanboys of others.

Sad to see that it will never happen.

kjliew has an amazing solution to give support for 3Dfx games on QEMU VMs, but actually this is not a solution for the average Joe. Wouldn’t be much rewarding for him to work a bit more to make it available for all types of users, even for a n00b, so this solution could finally get from the community the acknowledgment and praise it deserves? As of now this just limits the solution to a number of skilled users forcing them to have a build environment just to compile it and be able to run their favorite 3Dfx game on it. People spend more time trying to build it than actually playing the game. This is why people go after expensive virtualization apps or PCem and DOSBox, and I will quote Steve Jobs: because “it just works”.

Just my 2 cents.

"Design isn't just what it looks like and feels like. Design is how it works."
JOBS, Steve.

List of ALL Android vulnerabilities

Reply 545 of 619, by Auzner

User metadata
Rank Member
Rank
Member

How to Compile from Scratch on Linux

Try the steps I used from combining the information spread throughout this thread. Here is a shell script and modified make files that enabled me to compile patched qemu-5.2.0 and guest wrappers in Ubuntu 20.04 on an x86-64 machine. It essentially installs the required tools and libraries, sorts out the paths, and assigns a few build parameters.

OpenGlide: The required libraries will be installed after the qemu portions are completed. Clone and run its './bootstrap' script. './configure' then 'make'.

Attachments

Last edited by Auzner on 2021-01-24, 01:34. Edited 1 time in total.

Reply 546 of 619, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
ruthan wrote on 2021-01-23, 11:41:

PCem regardless of all its flaws has much bigger impact, because is designed for so called average Joe (not really but its not overcomplicated).. Qemu 3dfx is so far designed only for average kjliew 😀 Because he is only one who is able to use it for OpenGL.. and there are let say 10 other users, which are able to use it for Glide somehow..

How could one ever mention "flaws", it is going to be the next forbidden word. Let's reiterate, PCem is emulation done right. Oh yeah, I have never denied that PCem has sensational impact with its "freaking fast" Voodoo emulation. 🤣 It's probably much less than 10 that you exaggerated, I only got 4 liked on my videos so far.

If QEMU is so hopeless, then I cordially suggest that you check out Boxedwine. 😀

Reply 547 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Qemu is what it is, there people like you which could make it better, but they are not able to see, where are problems and instead of fixing of them, they are stuck in some pointless discussion loops (PCem) and pseudo user education etc...

Just release proper windows builds and starting commands, with every Qemu release - which is few time in year and we would be fine.. you are not able to do it yourself give someone else access to git page to upload them.. and still want someone somehow educate, them him write proper guides.. In my eyes you are behaving as typical Superstar jerk.. which is unable real team work.

BTW I played with old builds and i discovered that when i enable -accel hax ^ emm386 is not working.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 548 of 619, by Bruninho

User metadata
Rank Oldbie
Rank
Oldbie

ruthan has a point.

Look at people doing different DOSBox builds, they do not behave like superstars. They do not tell you to do ultracomplex “recipes” to compile yourself your build after installing 29474737 dependencies.

They release full complete builds. DOSBox-X in particular, Jonathan Campbell and Wengier are good guys and they listen to the feedback, they help when they can. The UTM dev not only was also quite receptive, he also was very nice to hear my opinions and designs I made for the UI design of his app, because I happen to be an UI/UX Designer professional. I am very active on both projects github pages, I always keep an eye there watching it and how well they develop. The best help I can give them now is my testing feedback. I do that because I am very interested in emulation of operating systems for retro gaming.

Maybe you should rethink the way you approach your project. You won’t attract more interest in this with that behavior. And that interest is a good thing for you, because the more they get interested in this, the more help you have to make it better. And maybe, in the end, you would have something very good to cater for all kinds of people, the nerdy gamer, programmer or even the average joe who wants to just play a game he used to play with his father when he was a kid. At least, with such improvements, maybe you wouldn’t have to keep comparing it to PCem.

Maybe you could join forces with the UTM dev to bring your 3Dfx feature to his app and also convince him to help you with a build for Linux and Windows. This could be a stellar emulation app on all three major platforms. UTM, as a macOS and iOS frontend for QEMU, is making strides and gaining a lot of media attention. For a dev, this is good because your work being recognized means that you could have better professional opportunities in the future.

Don’t get me wrong, I am just trying to help with a constructive discussion. My suggestion is quite simple. Do like them, release a build, do a wiki with clear and concise instructions, and your success will come. The average joe will be able to play his game and later will tell to his friends about that build instead of PCem or DOSBox. Who knows? It’s up to you, the ball is on your court.

"Design isn't just what it looks like and feels like. Design is how it works."
JOBS, Steve.

List of ALL Android vulnerabilities

Reply 549 of 619, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie

Thank for both of your compliment, I ain't superstar, never will be one.

I had been refraining from comparing PCem with QEMU. It was just that someone simply kept on demanding unrelenting apple to apple comparison, even with UT2003, which I already said it was unfair. Read the previous threads carefully, if you will. The 2 exceptions were inevitable as an open and academical scrutiny to defend my point of view. I was warned, I got the message but someone just wouldn't give up.

The moderator had said it is fine for someone to want to play games however they want to play them. If you enjoy playing Half-Life this way, then it is your choice. Have fun 😀!

Let's not dwell into DOSBox-X to avoid another round of flaming.

Reply 550 of 619, by Bruninho

User metadata
Rank Oldbie
Rank
Oldbie

Regarding Half-Life on UTM in this video, there are a few things you should consider:
- That video is from 1 year ago, UTM has improved massively in the last 12 months;
- The youtuber is using a 64-bit Windows XP edition, not really a good idea for a 1998 32-bit game and for emulation. Nevertheless, the game is still running quite well and is very playable;
- The youtuber probably does not have a smart keyboard cover, and since iOS 13 you can pair any bluetooth mouse and keyboard;
- UTM also has a macOS version for both Intel and M1 Macs, and the same test would be much faster there than it was on 2020 iPad Pro.
- UTM has nothing different from QEMU, it’s still pure QEMU 5.2.0, just acts as a frontend for it. The very same QEMU you use for your patch.

What this video shows is an impressive feat for both UTM and 2020 iPad Pro. I can’t reproduce the exact same test, because my 2017 iPad Pro is older and slower.

Attachments

"Design isn't just what it looks like and feels like. Design is how it works."
JOBS, Steve.

List of ALL Android vulnerabilities

Reply 551 of 619, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie

This is cool, so you have everything you need. Play some games on it and don't bother with qemu-3dfx.

I am in no business to decide what they want to achieve. There are countless of similar ports/front-ends/packagers from the Android APK world, for DOSBox and QEMU. DOSBox doesn't care, QEMU doesn't care, I don't care. The source has been GPL'ed, do whatever they like.

Reply 552 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Thank for both of your compliment, I ain't superstar, never will be one.

But you are still behaving like one.. Give us direct answer why you can release executable Windows builds?

Why this has to be only one 3rd party application on my Windows system which i have to build? Why we can get complete complete MSYS2 setup and building tutorials, if this project is really fully working on Windows for you, it should be half hour or so to write it?
This Linux way how to do things and i would say not much successful, because of Linux has 1% on desktops. Even there when i met some Linux tutorial, drivers where are commands like make etc.. its usually complicated more PITA and googling and guessing, that jus t some per distro packages - even there is reality.. when you made *.deb and *.rpm packages you already have something for 2/3 of Linux community.
Flatpacks and Snaps are more bruteforce solutions and space eaters, but they are still better than some building.

Back to Windows.. even most hardcore this project Windows users which compiled this problems as wadrasil, robertmo are not active, with their help i was able to compile it myself, but after testing all my build.. i have not 1 build when all things working.. something is only 3Dfx working.. something is not sound working, something is not HW acceleration.. something, im not able to right config and autoexec combo to dance between Qemu dos bugs, to make really working Dos system, not just system able to run 3Dfx test demo.

Now i tried to make new build, because only incomplete tutorials from the past where used on MSYS2, i used it, worked it.. for build, with executable results.. and i hit classical Linux eco system wall.. my packages were too old, there was some Linux keys repository owners change was.. i couldnt system download them, i tried to fix it made it, but after than i hit.. other problem that pacman packaging system, started to use other zsd packages.. which are not complatible.. it needs pacman replace, with pacman static package - which has not proper good tutorial, i already messed with it in Linux distro.. and it was mess, not easy.

OK, so i deleted whole MSYS2 nad installed it again, used Git building guide and got classic problem of incomplete Linux wild guessing guides.. missing packages, so tried to google which packages i suppose to have, even when i deleted whole directory and i had still problem that it had use overwrite flag to install them, so i made these magic commands:
pacman -S --overwrite \* git
pacman -S --overwrite \* rsync
pacman -S --overwrite \* patch
pacman -S --overwrite \* python
pacman -S --overwrite \* ninja

After that i was still getting that "cc is missing", so ok.. some c++, but there is zillion of c++ packages on Linux, so i guessed again.. Installed couple of them, this same error, i got right one, i dont really remember which one.. after that, because of googling.. i supposed to use this command:
export CC=gcc
To make some bash variable assign thing.. After than i got stuck on some strange.. unrecognized OS name message.. // here are gave up

Now im getting even other error, maybe because i rebooted etc.. but its again some Linux package denpendecy incompatibility mess..

Details

../qemu-5.2.0/configure && make
Using './build' as the directory for build output
Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding
Python runtime state: core initialized
LookupError: unknown encoding: cp20127

Current thread 0x00006fd4 (most recent call first):
<no Python frame>

ERROR: Cannot use '/mingw64/bin/python3', Python >= 3.6 is required.
Use --python=/path/to/python to specify a supported Python.

And its still before major step and .configuring all right Qemu options and targets, because from previous experience provided is not good enough and there is zero info about that in tutorial, only in some guide on page XY on this thread.

Really nice user experience, even before run product.. its pure nightmare. Googling of some magic commands for hours, which user really cant understand, without some background, which he not want to really have..

I thing that with provided Windows build, we can do what is best to expect from us and that is product and games testing.. not some useless building and wheel reinventing.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 553 of 619, by robertmo

User metadata
Rank l33t++
Rank
l33t++

test

Attachments

  • Filename
    qemu-system-i386-520glide.7z
    File size
    2.1 MiB
    Downloads
    12 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    hostdlls.7z
    File size
    2.13 MiB
    Downloads
    10 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    guestosflies.7z
    File size
    157.56 KiB
    Downloads
    9 downloads
    File license
    Fair use/fair dealing exception

Reply 554 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Great thanks.

I made testing matrix to add and keep test results:
https://docs.google.com/spreadsheets/d/17tB99 … dit?usp=sharing

  1. I made it for both Qemu 3Dfx and Qemu vanilla, its better, if someone is not interested in some of them he can ignore or hide just some columns, for bug analysis is good for sure.
  2. If you want to add some results just as for rights through Google sheets.
  3. There are notes (some check would be nice) how use Qemu etc, i had no much time for testing, but it will improve.
  4. Qemu starting lines are in headers, some hints are welcome. Some with Autoexec.bat and config.sys for Dos they are really basic, but they could make difference, so its good to add them in sheet and also good for people, which arent too experienced with it.
  5. There is own list for Win98 and Dos, so far i tested only Dos, at least some demo is working fine, so build is fine.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 556 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Thanks, i have got that difference are *.dxe files, i have tried them with Q1dos 3dfx version and Qemu is still crashing, im testing with -hax, because whpx enabling block Vmware to working, unless you using newer Windows 10 version and im stuck with 1909, because of same upgrade issues.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 557 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

I played Carmageddon 3Dfx, i wonder where is that fast performance in comparation with PCem? Because on 9900K im getting in first map usually 25-35 FPS with full details, i expect much more.
Its that fast performance really thing in Dos on Windows? Or it is working only in Linux or with Windows OS? Or is WPHX much faster than HAX?

Which -vga parameter has to be set for Win98x VBE9x passthrough? I have -display sdl -vga cirrus ? Should i for cirrus force VBE9x driver?

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 559 of 619, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Hmm, other important variable, that is why we really need proper guide, i know that is maybe in some your text guide in this thread, but right on project site it would be better. i dont know, or forgot that this is making difference.. im using default settings..

Here is dgVoodoo.conf:

Spoiler

;==========================================================================
; === Text based config file for dgVoodoo2
; === Use this file if you are a game modder/hacker or an experted user and
; want to modify some advanced properties not available via the CPL.
;==========================================================================

Version = 0x263

;--------------------------------------------------------------------------

[General]

; OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "d3d11_fl11_0", "bestavailable"
; Adapters: "all", or the ordinal of the adapter (1, ...)
;FullScreenOutput: "default", or the ordinal of the output on the adapter (1, ...)
; ScalingMode: "unspecified", "centered", "stretched", "centered_ar", "stretched_ar",
; "stretched_4_3", "stretched_4_3_crt", "stretched_4_3_c64"

OutputAPI = bestavailable
Adapters = all
FullScreenOutput = default
FullScreenMode = false
ScalingMode = unspecified
ProgressiveScanlineOrder = false
EnumerateRefreshRates = false

Brightness = 100
Color = 100
Contrast = 100
InheritColorProfileInFullScreenMode = false

KeepWindowAspectRatio = true
CaptureMouse = true
CenterAppWindow = false

;--------------------------------------------------------------------------

[GeneralExt]

; DesktopResolution: Desktop (native) resolution can be forced for dgVoodoo's internal calculations.
; Useful for rare applications that pre-set the desktop to other than the native
; resolution before dgVoodoo gets in action. Only the compact format can be used here,
; and applies to all outputs of the desktop.
; DesktopBitDepth: You can define what screen bit depth should be reported through dgVoodoo
; (8, 16, 32)
; DeframerSize: When resolution is forced to other than the app default then
; a black frame is drawn around the output image coming from a wrapped API
; to remove scaling artifacts -
; frame thickness can be defined in pixels (max 16, 0 = disable)
; ImageScaleFactor: Integer factor for scaling the output image coming from a wrapped API
; Always done by nearest point filtering, independent on scaling mode
; (0 = max available)
; Separate factors can be defined for horizontal and vertical scaling
; by subproperties, e.g.
; ImageScaleFactor = x:3, y:2
; DisplayROI: Display region of interest
; If scaling is done by the dgVoodoo then you can define a subrect of the
; output image, coming from a wrapped API, to be displayed. The defined subrect
; is mapped to the display output according to the current scaling mode
; It can be useful for applications rendering a widescreen subimage into a 4:3
; resolution; in this case you can scale up that subimage to (nearly) fill the
; whole screen on a widescreen monitor.
; DisplayROI empty value means the whole image.
; DisplayROI value can be a proportion in form of %d_%d or a pixel size (%d|%d)
; Pos subproperty is not mandatory and can be 'centered' or a pixel position (%d|%d)
; Examples: DisplayROI = 16_9, pos:centered
; DisplayROI = (320|200), pos:(10|10)
; Resampling: When scaling is done by the dgVoodoo for the given scaling mode,
; you can choose which filter is to be used for resampling the output image
; Available filters are: "pointsampled", "bilinear", "bicubic", "lanczos-2", "lanczos-3"
; FreeMouse: If true then physical mouse is free to move inside the game window
; when using emulated scaling and/or application and forced resolution
; differs; can be useful when a game relies on the physical window size
; WindowedAttributes: You can define attributes for forced windowed appearance (separated by commas):
; "borderless" - forces the app window not have any border
; "alwaysontop" - forces the app window into the top-most band
; "fullscreensize" - forces the app window to be full screen size with image scaling inside
; Environment: Software environment in which dgVoodoo is running: can be left unspecified (native)
; or can be set to 'DosBox' or 'QEmu'.
; EnableGDIHooking: If enabled then dgVoodoo hooks GDI to be able to render graphical contents
; (like movie playback through the ancient Windows Multimedia AVI player library)
; rendered through GDI - experimental feature, for the time being it's implemented
; only for DX emulation

DesktopResolution =
DesktopBitDepth =
DeframerSize = 1
ImageScaleFactor = 1
DisplayROI =
Resampling = bilinear
FreeMouse = false
WindowedAttributes =
Environment = QEmu
EnableGDIHooking = false

;--------------------------------------------------------------------------

[Glide]

; VideoCard: "voodoo_graphics", "voodoo_rush", "voodoo_2", "voodoo_banshee", "other_greater"
; OnboardRAM: in MBs
; MemorySizeOfTMU: in kBs
; TMUFiltering: "appdriven", "pointsampled", "bilinear"
;
; Resolution: either "unforced", "max", "max_isf", "max_fhd", "max_fhd_isf", "max_qhd", "max_qhd_isf", "%d x"
; or subproperties: h: horizontal, v: vertical
; + optional subproperty refrate: refresh rate in Hz
; e.g. Resolution = max, refrate:60
; Resolution = 2x, refrate:59
; Resolution = h:1280, v:1024, refrate:75
; or just use the compact form like "1024x768@60" or "512x384"
;
;Antialiasing: "off", "appdriven", "2x", "4x", "8x", "16x" (your GPU must support the chosen one)

VideoCard = other_greater
OnboardRAM = 128
MemorySizeOfTMU = 65536
NumberOfTMUs = 3
TMUFiltering = appdriven
DisableMipmapping = false
Resolution = unforced
Antialiasing = appdriven

EnableGlideGammaRamp = true
ForceVerticalSync = false
ForceEmulatingTruePCIAccess = false
16BitDepthBuffer = false
3DfxWatermark = true
3DfxSplashScreen = true
PointcastPalette = false
EnableInactiveAppState = false

;--------------------------------------------------------------------------

[GlideExt]

; DitheringEffect: "pure32bit", "dither2x2", "dither4x4"
; Dithering: "disabled", "appdriven", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic (the aim is to have some retro feel&look)

DitheringEffect = pure32bit
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0

;--------------------------------------------------------------------------

[DirectX]

; VideoCard: "svga", "internal3D", "geforce_ti_4800", "ati_radeon_8500",
; "matrox_parhelia-512", "geforce_fx_5700_ultra"
; VRAM: in MBs (default) or in GBs (e.g. VRAM = 2GB)
; Filtering: "appdriven", "pointsampled", "bilinear", "linearmip", "trilinear"
; or the integer value of an anisotropic filtering level (1-16)

DisableAndPassThru = false

VideoCard = internal3D
VRAM = 256
Filtering = appdriven
DisableMipmapping = false
Resolution = unforced
Antialiasing = appdriven

AppControlledScreenMode = true
DisableAltEnterToToggleScreenMode = true

BilinearBlitStretch = false
PhongShadingWhenPossible = false
ForceVerticalSync = false
dgVoodooWatermark = true
FastVideoMemoryAccess = false

;--------------------------------------------------------------------------

[DirectXExt]

; AdapterIDType: "nvidia", "amd", "intel" or leave it undefined
; You can define what type of driver version and vendor id's the wrapper should report to
; the application; Some games rely on that information so it can be useful for them
; Can be defined only for SVGA and Internal3D card types; the others have their own wired
; information

; VendorID, DeviceID, SubsystemID, RevisionID:
; Can be defined only for SVGA and Internal3D card types
; You can overwrite these properties even if a non-default AdapterIDType is defined;
; say, you defined an nvidia id type but would like to refine the vendor id

; DefaultEnumeratedResolutions: you can define what resolutions should be enumerated to the application by default
; "all", "classics", "none"

; ExtraEnumeratedResolutions: you can add extra resolutions (separated by commas, max 16) that will get
; enumerated to the application as display adapter supported ones -
; can be useful if an app supports rendering at arbitrary resolutions
; and you have a particular favorite resolution that are not
; enumerated to the application by default
; you can either use the compact resolution format here, or
; "max", "max@refrate" meaning your desktop resolution with a potential refresh rate, or
; "max_4_3", "max_4_3@refrate", "max_16_9", "max_16_9@refrate"
; meaning the maximum resolution with the given aspect ratio calculated from
; the desktop resolution with the given refresh rate, e.g. "max_4_3@60", "max_16_9"

; EnumeratedResolutionBitdepths: you can filter what bitdepths are included in the resolution enumeration
; any subset of {"8", "16", "32"}, or "all"

; DitheringEffect: "pure32bit", "ordered2x2", "ordered4x4"
; Dithering: "disabled", "appdriven", "forceon16bit", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic
; DepthBuffersBitDepth: internal bit depth of depth/stencil buffers for 3D rendering (32 bit is not recommended)
; "appdriven", "forcemin24bit", "force32bit"

; MaxVSConstRegisters: Max number of vertex shader constant registers (DX8/9 only)
; Can be defined only for SVGA and Internal3D card types
; Valid values are 256 (default), 512 or 1024

; MSD3DDeviceNames: if true then original Microsoft D3D device names are exposed
; (some applications check for them and they fail)

; RTTexturesForceScaleAndMSAA: if true then forced resolution scaling and MSAA is
; applied also to rendertarget textures
; Set it to false for games requiring pixel-precise rendering
; but be careful it can EASILY break certain things, not recommended

; SmoothedDepthSampling: if true then extra smoothing is added to depth textures
; when they are sampled

; DeferredScreenModeSwitch: If true the switching to full screen is deferred after the application initialized
; the DirectX device; can be useful for games that don't expect rendering window changes
; during initialization and crash

; PrimarySurfaceBatchedUpdate: If true then direct changes of the primary surface are batched together for presenting them
; If false then each change is instantly presented (debug-like mode)

AdapterIDType =
VendorID =
DeviceID =
SubsystemID =
RevisionID =

DefaultEnumeratedResolutions = all
ExtraEnumeratedResolutions =
EnumeratedResolutionBitdepths = all

DitheringEffect = pure32bit
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0
DepthBuffersBitDepth = appdriven

MaxVSConstRegisters = 256

MSD3DDeviceNames = false
RTTexturesForceScaleAndMSAA = true
SmoothedDepthSampling = true
DeferredScreenModeSwitch = false
PrimarySurfaceBatchedUpdate = false

;--------------------------------------------------------------------------

[Debug]

; This section affects only debug/spec release builds
;
; Info, Warning, Error
; "Disable" - disables all messages and debugger break
; "Enable" - enables messages and disables debugger break
; "EnableBreak" - enables both messages and breaking into debugger
;
; MaxTraceLevel: Maximum level of tracing API calls
; 0 - Disable
; 1 - API Functions and methods
; 2 - Additional trace info for internals
;
; LogToFile: if false or debugger is detected then output goes to the debug output
; if true and no debugger detected then output goes to 'dgVoodoo.log'
; (not implemented yet, always the default debug output is used)

Info = enable
Warning = enable
Error = enable
MaxTraceLevel = 0

LogToFile = false

Environment = QEmu
OutputAPI = bestavailable
in comment is this: ; OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "d3d11_fl11_0", "bestavailable" // So no DX12 how to force it?

In MSI afterburner overlay is DX9 until is 3Dfx mode started, after that DX11.. DX11 for sure.

When i checked dgVoodoo GUI, General tab -Output API i see only DX11 option, same as in text config.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.