Deunan (dknute) wrote,

  • Music:

Again, WTF

It seems that CheckInterfaceSupport is broken for DirectX 11. This is what I'm doing:
HRESULT hr = pAdapter1->CheckInterfaceSupport (__uuidof (ID3D11Device), NULL);

The result is DXGI_ERROR_UNSUPPORTED for Radeon 5770... Creating ID3D11Device with D3D_FEATURE_LEVEL_11_0 obviously works, as the card does support it. There is no such problem when asking for ID3D10Device.
The plan was to enumerate all adapters present in the system and reject those that do not support Direct3D 11. This bug effectively prevents it from working. I don't know, maybe it's driver related, but very annoying nevertheless.

So yeah, I switched to 64-bit Windows 7 Pro and I also bought a new graphics card. Rather than spending money on a new i3/i5 CPU I overclocked my E6600 to 3.0GHz, that should last me another year I hope. With this change I will be slowly moving away from Direct3D 9c - as I explained many times before it has too many limitations to properly emulate PowerVR2 chip. Don't worry though, I'm not going to drop D3D9 support immediately but it will be removed someday. Makaron doesn't need all that much GPU processing power, rather the new features, so it's quite possible that the new CPU+GPU hybrids from AMD will be fast enough to run it full speed. And those are supposed to be pretty cheap.

I changed a few things in T12 core and I'm finally quite happy with how it works so I'll probably release another version soon. That would be the last of Test 12 series I suppose. The only thing preventing me from doing so is one last issue with the multithreaded renderer, it causes random crashes (though some systems seem more affected than others). It's a pretty complicated issue though and cannot be fully fixed without major changes that would take considerable more time. For now I just added an option in the INI file to disable multithreading (not completly, just this part) and while it slows the emulator down it's not as bad as the crashes.
Anyway, stay tuned. I want to make a release before I mess up the code again with my experiments, and I have quite a few ideas to try out :)

UPDATE: Here it is, Test 12/5. There's a small ReadMe included so be sure to read it. No Atomiswave yet since I didn't think T12 core could be salvaged, so I didn't bother with it. I wasn't exactly wrong there, with all the changes I made this version could easily be called Test 13 :)

Anyway, other things of note (from the top of my head):
* Current renderer needs to go. I have a replacement of sorts prepared, as a part of software renderer project. I'm pretty sure it will be a bit slower but that remains to be seen. I need the new framework anyway to support both D3D9 and D3D11 at the same time.
* SH4 recompiler could use some sort of abstraction layer to handle the optimizations better. Again, it'd probably end up being marginally slower but more manageable and could in future be paired with x64 emitter.
* I'm going to drop support for non-SSE2 CPUs soon, mostly because it'd be easier to code the new recompiler. Quite frankly any CPU without SSE2 is not going to be fast enough to handle Makaron anyway.
* Windows XP and Direct3D 9 support is going to stay for now but once D3D11 renderer starts working properly I will focus mostly on that. While I realize that droping DX9 will upset XP users, I'd like to point out that Makaron always required a modern PC. I havent introduced any major changes lately but before that Makaron was the first Dreamcast emulator to require shaders, then it would work only with Shader Model 2 or higher. In return you got faster palletized texture support, shadows and fogging. Now it's going to be DirectX 11 :)

EDIT: Seems like 640x240 interlaced modes are not upscaled properly. One way around it is to change cable type to VGA. If the game doesn't support VGA cable you're out of luck, use mode 4 or just go back to 640x480. This should never happen on NAOMI since by default it runs in 31k setting. I fixed that already but I'm not pulling the files unless there is a bug that can't be worked around.

UPDATE 2: That bug I wrote about? Now you're seeing it's effects first-hand :) Oh well, guess I better fix that one since I didn't add an option to skip DX11 init.
Redownload T12/5 from here, this time when Direct3D 11 is present on the system but actual device can't be created it will just silently ignore the problem. This was the intention after all. And I also added workaround for the scaler issue.
Tags: makaron
  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

← Ctrl ← Alt
Ctrl → Alt →
← Ctrl ← Alt
Ctrl → Alt →