protonscr

[d3d8] Unfiltered/pixelated 2D elements in FINAL FANTASY XI

dxvkclosed d3d8
doitsujin/dxvk#5839 · opened 2026-08-12 by nixRidge · updated 2026-08-18 · 14 comments · github
1 matching comments, n / p to jump
NnixRidge 2026-08-12 github

Software information

FINAL FANTASY XI
1920x1080 output resolution, no game modifications.

The problem

2D elements in the game, such as the HUD, text boxes, and game logo, appear unfiltered and pixelated.
Usually they have a filter applied to make them look smoother.

When instead playing with wined3d, these elements are properly filtered.
3D elements appear correctly regardless.

Screenshots

wined3d DXVK 3.0.2
Image Image
Image Image
Image Image

System information

  • GPU: AMD Radeon RX 6700 XT
  • Driver: Mesa 26.1.6, RADV
  • Wine version: Wine Staging 11.15
  • DXVK version: 3.0.2

Apitrace file(s)

https://mega.nz/folder/lxIzCBYL#IDbMRHXz0hh1XeV4Q84x6Q

Log files

pol.exe.log

Other info

I'm not a graphics expert and not sure if this can be related, so I'll include it anyways.
The game can render 2D and 3D at separate resolutions.

First, it draws 3D elements such as level geometry and character models. This can be at any resolution the user sets.
Then in my perception, it will render 2D elements on top, such as HUD and text boxes, again at a different resolution if desired.
This allows the game to increase or decrease the scale of the HUD.

For the screenshots, I'm running with native HUD size, meaning same resolution as monitor, 1080p.
Just thought I'd mention the feature and the way it draws these elements, just in case.

WWinterSnowfall 2026-08-12 github

Hello there!

2D elements in the game, such as the HUD, text boxes, and game logo, appear unfiltered and pixelated. Usually they have a filter applied to make them look smoother.

Can't say I'm noticing too much of a difference, at least nothing that can't be explained by OpenGL (WineD3D) vs Vulkan (DXVK) shenanigans. Would you be able to compare DXVK against native Windows?

After, I tried generating another trace with wined3d, and that one continued to generate data past the launcher, but only if I removed apitrace's ddraw.dll. Let me know if that's an issue.

The traces you have captured are both OpenGL traces, which aren't relevant for us, since we look at the D3D side of things. You need to use apitrace's d3d8.dll file to capture something useful.

NnixRidge 2026-08-12 github

I don't have any Windows machines, but I can set one up in about an hour or so and check.

As for the trace, I'll try again and see if I can create a more useful one. Thanks for letting me know!

NnixRidge 2026-08-12 github

The game is downloading and patching (a lengthy process) on Windows 10 as I'm writing this.
In the meantime, I've made updated trace files using apitrace. Hopefully I did it correctly this time.

Same link as before, removed the old traces and uploaded the new ones: https://mega.nz/folder/lxIzCBYL#IDbMRHXz0hh1XeV4Q84x6Q

WWinterSnowfall 2026-08-12 github

Hopefully I did it correctly this time.

Thanks, and yes, those are D3D8 traces now indeed. The text doesn't look unfiltered to me on replay though, which is a bit odd.

NnixRidge 2026-08-12 github

Great, thanks for the guidance. But yes, that is pretty weird. I'll get some comparison screenshots of everything when I have the client up and running on Windows.
It's mostly a problem with the chat box, where unfiltered text becomes less legible to me than the filtered text does.

One thing I did note is that adding dgVoodoo2 with its default settings to the mix will soften the text. (As in, Wine + dgVoodoo 2 + DXVK)
But I suppose it enables some sort of filtering on its own. Either way, I'll update you in a bit :)

Ddoitsujin maintainer 2026-08-12 github

This almost looks like an issue with the half-pixel viewport offset, D3D9 and earlier had the glorious idea to map pixel centers to (0,0) instead of (0.5,0.5) like literally every other API and we're honouring that by applying that offset to the viewport, but that does obviously impact the way texture coordinates are interpolated. If I mess around with that then we also get the blurry text.

Edit: Or hm, maybe not entirely.

NnixRidge 2026-08-12 github

Hello again. Here are a couple of screenshots from the game running on Windows 10.

I apologise that I only had the Japanese client on hand while installing on Windows, so the logo comparison is a little awkward.

But to my eyes, the game logo appears properly filtered, and text has anti-aliasing.
It's very noticeable on the spears and polearms in the logo, which become much more pixelated using DXVK. There's also a checkerboard pattern that is much more noticeable with DXVK.

It might be easier to see with the in-game chat comparison.
To me, WineD3D and Windows 10 look identical, especially in terms of font anti-aliasing.

WineD3D DXVK 3.0.2 Windows 10
Image Image Image
Image Image Image

I also made some comparison GIFs, in case that is helpful.

Image Image
Ddoitsujin maintainer 2026-08-12 github

Well, upon closer inspection it seems to actually be some weird behaviour with this particular sampler config. Texture only has a single mip, mip filter is disabled so we set the sampler LOD range to 0 - 0, and it's using LINEAR filtering only for minification. For some reason the LOD range breaks that.

The PR above should paper over the issue for now, but we'll probably need to look into fixing the way we handle mip filter == off for multi-mip textures.

NnixRidge 2026-08-12 github

Yeah. Looks perfect with that change!

Image Image

Also wanted to say, thank you so much for your time to you both. It's nice that you went out of your way to look into the issue so quickly.
Hopefully it helps for future development.

Ppalladin9479 2026-08-12 github

I've always found FFXI to be easier to run with DXVK if you first use a DX8to9 wrapper like the one Atomos made.

https://www.bluegartr.com/threads/129943-Direct3D8-to-Direct3D9-Proxy-Performance-Helper-(For-FFXI)

Dude moved it to a discord server for some reason.

https://discord.com/channels/264673946257850368/1127340838918291606/1132803135463759882

Once it's at DX9, then DXVK should run flawlessly. FFXI does some weird stuff with DX8 that wasn't common back then.

Dege had to do something special to get dgvoodoo2 (don't shoot me) to work properly with FFXI because apparently it's doing something differently with textures.

https://www.vogons.org/viewtopic.php?p=587253#p587253

WWinterSnowfall 2026-08-12 github

I've always found FFXI to be easier to run with DXVK if you first use a DX8to9 wrapper like the one Atomos made.

This shouldn't be needed now that DXVK supports D3D8, unless that wrapper does some mod-level changes to the game that you can't live without. If you spot anything off or have any issues while using D3D8 DXVK, please file a bug report.

FFXI does some weird stuff with DX8 that wasn't common back then.

I doubt it's any weirder than other cursed D3D8 games we've seen, but there aren't any outstanding issues with any of them at this point (if you don't count House of the Dead 3, that is).

NnixRidge 2026-08-12 github

atom0s' d3d8to9 wrapper, while great, doesn't do anything special that DXVK doesn't already do, as far as I know. It is mostly aimed at Windows users as an alternative to dgVoodoo 2.

And that's basically the whole reason I opened this issue to begin with, so we can play without having to fiddle with proprietary wrappers beneath DXVK. Much better to just let it do what it's supposed to do directly :)

Ppalladin9479 2026-08-13 github

I've always found FFXI to be easier to run with DXVK if you first use a DX8to9 wrapper like the one Atomos made.

This shouldn't be needed now that DXVK supports D3D8, unless that wrapper does some mod-level changes to the game that you can't live without. If you spot anything off or have any issues while using D3D8 DXVK, please file a bug report.

FFXI does some weird stuff with DX8 that wasn't common back then.

I doubt it's any weirder than other cursed D3D8 games we've seen, but there aren't any outstanding issues with any of them at this point (if you don't count House of the Dead 3, that is).

I was providing that information to assist in debugging root cause. Also to indicate that FFXI is one of those cursed games that does things that aren't often done by others and thus would be missed in many QA test and regressions checks. Atomos and Dege both had to add code to support that weird FFXI stuff, and if those two wrappers had to do it then it's very likely DXVK will also have to do something similar.

WWinterSnowfall 2026-08-13 github

Atomos and Dege both had to add code to support that weird FFXI stuff, and if those two wrappers had to do it then it's very likely DXVK will also have to do something similar.

Again, if you find any issue in the game while using DXVK directly (D3D8), we'd welcome your bug report and would look into fixing it. Outside of the above filtering issue, however, the game appears well behaved, as @nixRidge has already mentioned. Comparisons with what some other wrappers had to do aren't particularly relevant, unless we have a reproducible issue to look into.

DLLs