Dolphin, the GameCube and Wii emulator - Forums

Full Version: Serious problem with the Direct3D9 plugin & CPU->EFB access (all games are affected)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5
Try rolling back to an earlier driver or using a different driver version, I don't see this being an issue with Dolphin considering many ATI users and Nvidia users are using the emulator without any of the issues mentioned in this thread.

Things to try:

- Rolling back your graphics card drivers or using a different driver release.

- Checking your configuration especially if something changed in your configuration, are you using any unnecessary options that could be producing these graphical issues with CPU -> EFB Access enabled.

- Make sure your graphics card isn't overheating and producing artifacts on screen.

The problem is likely not with Dolphin, but something with your system such as what was mentioned above. Myself and other ATI and Nvidia users aren't experiencing these issues so I can only say there is something on your end causing it. It would also help to know what revision the issue started occurring with or if this issue always existed with CPU -> EFB Access enabled. Any chance that you upgraded, downgraded your drivers when the issue started occurring?
My drivers are unchanged. I already mentioned the CPU->EFB option does not produce any alternative results when changed.
There are 4 others who posted in this thread stating they have this problem (not one has confirmed they fixed the issue despite following your instructions).

I havn't identified the exact revision where CPU->EFB access causes this problem yet, but I did narrow the search.

r6024 (http://code.google.com/p/dolphin-emu/source/detail?r=6024 ):
CPU->EFB enabled causes the issue, disabling it fixes the issue.

r6025 (http://code.google.com/p/dolphin-emu/source/detail?r=6025 ):
The issue always occurs, even if CPU->EFB access is disabled.
Post your configuration..

With the very few that are experiencing this issue, a configuration or driver issue seems more likely as the culprit. What is the last revision that you didn't have this issue with when CPU -> EFB Access was enabled?
I'm asking this because I remember having this issue in the past and managed to solve it, but forgot how. I don't think EFB access was the issue, but some other setting that was conflicting.
Dolphin.ini
Code:
[General]
LastFilename = C:\Program Files\Dolphin\GAMECUBE/[Own] Paper Mario 2.gcm
GCMPathes = 1
GCMPath0 = C:\Program Files\Dolphin\GAMECUBE
RecersiveGCMPaths = False
RecursiveGCMPaths = False
[Interface]
ConfirmStop = False
UsePanicHandlers = False
HideCursor = True
AutoHideCursor = False
Theme = 0
ShowWiimoteLeds = True
ShowWiimoteSpeakers = False
Language = 0
ShowToolbar = True
ShowStatusbar = True
ShowLogWindow = False
ShowConsole = False
MainWindowPosX = 370
MainWindowPosY = 23
MainWindowWidth = 964
MainWindowHeight = 667
[GameList]
ListDrives = False
ListWad = True
ListWii = True
ListGC = True
ListJap = True
ListPal = True
ListUsa = True
ListFrance = True
ListItaly = True
ListKorea = True
ListTaiwan = True
ListUnknown = True
[Core]
HLE_BS2 = True
UseDynarec = True
CPUThread = True
DSPThread = False
SkipIdle = True
LockThreads = False
DefaultGCM =
DVDRoot =
OptimizeQuantizers = True
EnableCheats = False
SelectedLanguage = 0
MemcardA = C:\dolphin-emu-read-only\Binary\Win32\User\GC\MemoryCardA.USA.raw
MemcardB = ./User/GC/MemoryCardB.USA.raw
SlotA = 1
SlotB = 255
SerialPort1 = 255
SIDevice0 = 150994944
SIDevice1 = 0
SIDevice2 = 0
SIDevice3 = 0
RunCompareServer = False
RunCompareClient = False
FrameLimit = 0
GFXPlugin = Plugin_VideoDX9.dll
DSPPlugin = Plugin_DSP_HLE.dll
Pad1Plugin = Plugins/Plugin_nJoy_SDL.dll
Pad2Plugin = Plugins/Plugin_nJoy_SDL.dll
Pad3Plugin = Plugins/Plugin_nJoy_SDL.dll
Pad4Plugin = Plugins/Plugin_nJoy_SDL.dll
WiiMote1Plugin = Plugins/Plugin_Wiimote.dll
Apploader =
PadPlugin = Plugins/Plugin_GCPad.dll
CPUCore = 1
WiiSDCard = True
WiiKeyboard = True
WiiMotePlugin = Plugin_Wiimote.dll
UseFPS = False
EnableOpenCL = False
[Wiimote1]
AutoReconnectRealWiimote = True
[Wiimote2]
AutoReconnectRealWiimote = False
[Wiimote3]
AutoReconnectRealWiimote = False
[Wiimote4]
AutoReconnectRealWiimote = False
[Hotkeys]
ToggleFullscreen = 13
ToggleFullscreenModifier = 1
PlayPause = 349
PlayPauseModifier = 0
Stop = 27
StopModifier = 0
Wiimote1Connect = 344
Wiimote1ConnectModifier = 1
Wiimote2Connect = 345
Wiimote2ConnectModifier = 1
Wiimote3Connect = 346
Wiimote3ConnectModifier = 1
Wiimote4Connect = 347
Wiimote4ConnectModifier = 1
Screenshot = 348
ScreenshotModifier = 0
[Display]
FullscreenResolution = 1600x900
Fullscreen = False
RenderToMain = False
RenderWindowXPos = -759
RenderWindowYPos = -122
RenderWindowWidth = 640
RenderWindowHeight = 480

gfx_dx9.ini
Code:
[Hardware]
WindowedRes = 640x480
FullscreenRes = 640x480
Fullscreen = False
VSync = False
RenderToMainframe = True
Adapter = 0
SimpleFB = False
[Settings]
StretchToFit = True
2xResolution = False
KeepAR_4_3 = False
KeepAR_16_9 = False
Crop = False
wideScreenHack = False
HideCursor = False
UseXFB = False
AutoScale = True
SafeTextureCache = False
ShowFPS = False
OverlayStats = False
OverlayProjStats = False
DLOptimize = 0
Show = 0
DumpTextures = False
HiresTextures = False
DumpEFBTarget = False
DumpFrames = False
FreeLook = False
ShowEFBCopyRegions = False
ShowShaderErrors = False
MSAA = 0
TexFmtOverlayEnable = False
TexFmtOverlayCenter = False
Wireframe = False
DisableLighting = False
DisableTexturing = False
DstAlphaPass = False
DisableFog = True
AspectRatio = 0
UseRealXFB = False
SafeTextureCacheColorSamples = 0
UseNativeMips = False
EFBScale = 1
[Enhancements]
ForceFiltering = False
MaxAnisotropy = 1
PostProcessingShader =
[Hacks]
EFBAccessEnable = False
EFBCopyDisable = False
EFBCopyDisableHotKey = False
EFBToTextureEnable = True
ProjectionHack = -1
EFBScaledCopy = False
FIFOBPHack = False
EFBVerifyTextureModificationsByCPU = True

After reverting quite a bit (and unable to find an answer), I'm now convinced it may be what you say (a hardware/driver issue).
Between Dolphin's configuration and current graphics card settings/drivers, nothing has changed throughout revisions for me (and, likely, other users with this problem). r6025's description reads as such:

"DX9: Create textures needed for CPU->EFB access even if it's disabled. That way, one can toggle that option during emulation."

Textures created through the function that are necessary for certain games are to be created even if the option is toggled off. That was the intent, at least. For certain users such as myself, kirbypuff, heinermann, and other posters here, it seems as if off-textures are still created even if the option is unchecked. This ruins all games that don't normally use the function, leading to ingame images as seen in the first post. There's no doubt that the errors were introduced with r6025.

I took a look at the source code changes in r6025. Considering that the majority of users have ran into no such problem, it would seem as if the revision optimized the use of the CPU -> EFB option for convenience, with the notion that nobody would be negatively impacted by it. Such framebuffer changes in the DX9 plugin may have been incompatible with particular graphics cards. It may be that it the new DX9 plugin code is incompatible with integrated graphics, or certain older drivers.

I understand that, as a free program, the Dolphin Emulator is not meant to meet everyone's expectations, and therefore is not usable on all systems (such as those with single-core/low clock speed processors). However, it would at least be nice to be notified of certain incompatibilities instead of leaving the technologically-handicapped wandering in the dark on the situation. If this problem was not expected for any systems, though, then I apologize if I came out as arrogant or rude. Tongue

If it wouldn't inconvenience the Dolphin developers, I was wondering if it would be possible to alter the code so such a toggling option still exists in the way it was intended (and, majorly, properly utilized) in r6025 without making users with (possibly) incompatible graphics cards (or users of integrated graphics crap, such as myself) unable to use the (arguably) best graphics plugin for performance. I fully appreciate your suggestions, Xtreme2damax, but it seems that this is a problem that is best explained as a compatibility issue.

To narrow down this problem, it would be a benefit to those suffering from this to detail what their graphics card is. Maybe then the problem can be condensed into a more sufficient standout. I'm hoping for a swift solution to this problem.

If it helps, this is the configuration I have consistently used throughout the new revisions:

Emulator Settings

Enable Dual Core
Enable Idle Skipping
HLE the IPL
JIT Recompiler
Unlisted settings for the General tab are disabled

DX9 Plugin Settings

Vsync: Off
Widescreen Hack: Off
Aspect Ratio: Auto
SSAA Mode: Off
EFB Scale: 1x
CPU -> EFB Access Disabled
Safe Texture Cache: Off (unless playing Metroid Prime)
Texture Filtering Enhancements OFF
EFB Scaled Copy: On
Disable Fog
Enable EFB Copy (type is game dependent)
Use Native Mips

Sorry if my wall of text angered anyone! Smile
Hehe it's ok, I just want to see if it's an issue with something other than Dolphin. I remember experiencing this a while back with the same graphical issues and I managed to solve it, although it didn't involve disabling CPU -> EFB Access.

Not sure if this is the same issue though, just trying to think of anything else that might be causing it since myself and other ATI/Nvidia users are playing with CPU -> EFB access enabled without a problem.

You may want to try opening an issue on the issue tracker and see what the developers will say and so they can look into it if there is an issue. Wink

Another thing, have any of you tried deleting the shader cache files in /User/ShaderCache? If not, try deleting the shader cache files and see if you still have the same problem. Sometimes the developers forget to update the shader cache in the source and it causes graphical issues with the outdated cache files. In order to solve these problems I've had to manually delete the shader cache files and start fresh. It's usually a ritual with me when I update revisions just in case there is any work on the shaders and the developers forget to update the shader cache.
Tested with a discrete ATI card (Radeon HD 2600 Pro) and an ATI IGP (Radeon HD 3300). Same issue with both. I tried different versions of the Catalyst drivers without luck.



DOLPHIN CONFIG:

General
------------
Enable Dual Core ON
Enable Idle Skipping ON
Enable Cheats OFF
Framelimit Auto
Use FPS for limiting OFF
HLE the IPL ON
Enable OpenCL OFF
JIT Recompiler
Lock Threads to cores OFF
DSPLLE on thread OFF
Confirm on stop OFF
Use Panic handlers OFF


DX9 plugin
--------------
VSync OFF
Widescreen Hack OFF
SSAA OFF
EFB Scale 1x
Enable CPU->EFB access ON
Use Safe texture Cache OFF
Force Bilinear Filtering OFF
Enable 16x anisotropy OFF
Enable Hires Textures OFF
EFB Scaled Copy ON
Disable Fog OFF
Enable EFB Copy ON, To RAM (accuracy)
Enable XFB OFF
Enable real XFB OFF
Enable Hotkeys OFF
Enable Wireframe OFF
Use Native mipmaps ON
Dumping and debugging options - all OFF


Sound
---------
Enable HLE Audio ON
Enable DTK music ON
Enable Audio Throttle OFF
Audio Driver DSound
Volume 100%

Shader cache deleted before each run.
(08-08-2010, 11:54 AM)Xtreme2damax Wrote: [ -> ]Hehe it's ok, I just want to see if it's an issue with something other than Dolphin. I remember experiencing this a while back with the same graphical issues and I managed to solve it, although it didn't involve disabling CPU -> EFB Access.

Not sure if this is the same issue though, just trying to think of anything else that might be causing it since myself and other ATI/Nvidia users are playing with CPU -> EFB access enabled without a problem.

You may want to try opening an issue on the issue tracker and see what the developers will say and so they can look into it if there is an issue. Wink

Another thing, have any of you tried deleting the shader cache files in /User/ShaderCache? If not, try deleting the shader cache files and see if you still have the same problem. Sometimes the developers forget to update the shader cache in the source and it causes graphical issues with the outdated cache files. In order to solve these problems I've had to manually delete the shader cache files and start fresh. It's usually a ritual with me when I update revisions just in case there is any work on the shaders and the developers forget to update the shader cache.

Alright, I'll think about submitting an issue soon. Clearing the shader cache didn't help the graphics at all. I'm just wondering if this is a problem for people using older ATI graphics cards (4200 and earlier), seeing that kirbypuff's graphics cards are a bit old. The 3D engine used for those cards is a bit outdated compared to more recent ATI cards. Not sure if anyone with Nvidia cards suffers from this, too. Do you know anyone that runs Dolphin with ATI Radeon HD 4200 graphics or earlier? And, if so, are they suffering from similar problems?
HD 4290, HD 4250 and HD 4200 IGPs are nothing but rebadged versions of the older HD 3300 and HD 3200 DX 10 IGPs with added DX 10.1 support and an improved video decoder.

HD 3300 (HD 4290) is the fastest, most feature-rich IGP ever created. Not bad, even for running Dolphin Smile

HD 3200 (HD 4200, HD 4250) is a lower performance version of the HD 3300 (HD 4290) IGP. ~40% lower clocks and no sideport memory.

All IGPs are based on the low-end R600 discrete cards from ATI (HD 2400 Pro / HD 2400 XT / HD3450 / HD3470). Surprisingly, the IGPs tend to outperform these cards Smile

The HD2600 discrete card is a different story - it's 3.5x more powerful than the best IGP and has extra hardware features such as a tessellator, but still belongs to the R600 family of ATI cards (midrange level this time).

All cards / chips support DX 10 (.1) and OpenGL 3.3.
(08-08-2010, 11:38 AM)k2000 Wrote: [ -> ]If it wouldn't inconvenience the Dolphin developers, I was wondering if it would be possible to alter the code so such a toggling option still exists in the way it was intended (and, majorly, properly utilized) in r6025 without making users with (possibly) incompatible graphics cards (or users of integrated graphics crap, such as myself) unable to use the (arguably) best graphics plugin for performance. I fully appreciate your suggestions, Xtreme2damax, but it seems that this is a problem that is best explained as a compatibility issue.
Yeah.. just that NOTHING's wrong about the code which could break ANYTHING...
But: I just looked over the code, and there are some pieces which relied on all the EFB read surfaces being marked as uninitialized when EFB access is disabled... I'll commit a fix for this in the comming days.
Pages: 1 2 3 4 5