mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 00:59:44 -06:00
Add 'immediate xfb' which reduces xfb latency at the cost of graphical errors
This commit is contained in:
@ -225,6 +225,7 @@ void DolphinAnalytics::MakePerGameBuilder()
|
||||
builder.AddData("cfg-gfx-efb-copy-format-changes", g_Config.bEFBEmulateFormatChanges);
|
||||
builder.AddData("cfg-gfx-efb-copy-ram", !g_Config.bSkipEFBCopyToRam);
|
||||
builder.AddData("cfg-gfx-xfb-copy-ram", !g_Config.bSkipXFBCopyToRam);
|
||||
builder.AddData("cfg-gfx-immediate-xfb", !g_Config.bImmediateXFB);
|
||||
builder.AddData("cfg-gfx-efb-copy-scaled", g_Config.bCopyEFBScaled);
|
||||
builder.AddData("cfg-gfx-internal-resolution", g_Config.iEFBScale);
|
||||
builder.AddData("cfg-gfx-tc-samples", g_Config.iSafeTextureCache_ColorSamples);
|
||||
|
@ -133,6 +133,7 @@ const ConfigInfo<bool> GFX_HACK_SKIP_EFB_COPY_TO_RAM{{System::GFX, "Hacks", "EFB
|
||||
true};
|
||||
const ConfigInfo<bool> GFX_HACK_SKIP_XFB_COPY_TO_RAM{{System::GFX, "Hacks", "XFBToTextureEnable"},
|
||||
true};
|
||||
const ConfigInfo<bool> GFX_HACK_IMMEDIATE_XFB{{System::GFX, "Hacks", "ImmediateXFBEnable"}, false};
|
||||
const ConfigInfo<bool> GFX_HACK_COPY_EFB_ENABLED{{System::GFX, "Hacks", "EFBScaledCopy"}, true};
|
||||
const ConfigInfo<bool> GFX_HACK_EFB_EMULATE_FORMAT_CHANGES{
|
||||
{System::GFX, "Hacks", "EFBEmulateFormatChanges"}, false};
|
||||
|
@ -100,6 +100,7 @@ extern const ConfigInfo<bool> GFX_HACK_BBOX_PREFER_STENCIL_IMPLEMENTATION;
|
||||
extern const ConfigInfo<bool> GFX_HACK_FORCE_PROGRESSIVE;
|
||||
extern const ConfigInfo<bool> GFX_HACK_SKIP_EFB_COPY_TO_RAM;
|
||||
extern const ConfigInfo<bool> GFX_HACK_SKIP_XFB_COPY_TO_RAM;
|
||||
extern const ConfigInfo<bool> GFX_HACK_IMMEDIATE_XFB;
|
||||
extern const ConfigInfo<bool> GFX_HACK_COPY_EFB_ENABLED;
|
||||
extern const ConfigInfo<bool> GFX_HACK_EFB_EMULATE_FORMAT_CHANGES;
|
||||
extern const ConfigInfo<bool> GFX_HACK_VERTEX_ROUDING;
|
||||
|
@ -108,6 +108,7 @@ static const INIToLocationMap& GetINIToLocationMap()
|
||||
{{"Video_Hacks", "ForceProgressive"}, {Config::GFX_HACK_FORCE_PROGRESSIVE.location}},
|
||||
{{"Video_Hacks", "EFBToTextureEnable"}, {Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM.location}},
|
||||
{{"Video_Hacks", "XFBToTextureEnable"}, {Config::GFX_HACK_SKIP_XFB_COPY_TO_RAM.location}},
|
||||
{{"Video_Hacks", "ImmediateXFBEnable"}, {Config::GFX_HACK_IMMEDIATE_XFB.location}},
|
||||
{{"Video_Hacks", "EFBScaledCopy"}, {Config::GFX_EFB_SCALE.location}},
|
||||
{{"Video_Hacks", "EFBEmulateFormatChanges"},
|
||||
{Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES.location}},
|
||||
|
@ -74,6 +74,7 @@ bool IsSettingSaveable(const Config::ConfigLocation& config_location)
|
||||
Config::GFX_HACK_BBOX_PREFER_STENCIL_IMPLEMENTATION.location,
|
||||
Config::GFX_HACK_FORCE_PROGRESSIVE.location, Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM.location,
|
||||
Config::GFX_HACK_SKIP_XFB_COPY_TO_RAM.location,
|
||||
Config::GFX_HACK_IMMEDIATE_XFB.location,
|
||||
Config::GFX_HACK_COPY_EFB_ENABLED.location,
|
||||
Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES.location,
|
||||
Config::GFX_HACK_VERTEX_ROUDING.location,
|
||||
|
@ -43,6 +43,7 @@ static void LoadFromDTM(Config::Layer* config_layer, Movie::DTMHeader* dtm)
|
||||
config_layer->Set(Config::GFX_HACK_EFB_ACCESS_ENABLE, dtm->bEFBAccessEnable);
|
||||
config_layer->Set(Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM, dtm->bSkipEFBCopyToRam);
|
||||
config_layer->Set(Config::GFX_HACK_SKIP_XFB_COPY_TO_RAM, dtm->bSkipXFBCopyToRam);
|
||||
config_layer->Set(Config::GFX_HACK_IMMEDIATE_XFB, dtm->bImmediateXFB);
|
||||
config_layer->Set(Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES, dtm->bEFBEmulateFormatChanges);
|
||||
}
|
||||
|
||||
@ -65,6 +66,7 @@ void SaveToDTM(Movie::DTMHeader* dtm)
|
||||
dtm->bEFBAccessEnable = Config::Get(Config::GFX_HACK_EFB_ACCESS_ENABLE);
|
||||
dtm->bSkipEFBCopyToRam = Config::Get(Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM);
|
||||
dtm->bSkipXFBCopyToRam = Config::Get(Config::GFX_HACK_SKIP_XFB_COPY_TO_RAM);
|
||||
dtm->bImmediateXFB = Config::Get(Config::GFX_HACK_IMMEDIATE_XFB);
|
||||
dtm->bEFBEmulateFormatChanges = Config::Get(Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES);
|
||||
|
||||
// This never used the regular config
|
||||
|
@ -73,6 +73,7 @@ const std::string hotkey_labels[] = {
|
||||
_trans("Toggle Aspect Ratio"),
|
||||
_trans("Toggle EFB Copies"),
|
||||
_trans("Toggle XFB Copies"),
|
||||
_trans("Toggle XFB Immediate Mode"),
|
||||
_trans("Toggle Fog"),
|
||||
_trans("Toggle Texture Dumping"),
|
||||
_trans("Toggle Custom Textures"),
|
||||
|
@ -71,6 +71,7 @@ enum Hotkey
|
||||
HK_TOGGLE_AR,
|
||||
HK_TOGGLE_EFBCOPIES,
|
||||
HK_TOGGLE_XFBCOPIES,
|
||||
HK_TOGGLE_IMMEDIATE_XFB,
|
||||
HK_TOGGLE_FOG,
|
||||
HK_TOGGLE_DUMPTEXTURES,
|
||||
HK_TOGGLE_TEXTURES,
|
||||
|
@ -1368,6 +1368,7 @@ void SetGraphicsConfig()
|
||||
g_Config.bEFBAccessEnable = tmpHeader.bEFBAccessEnable;
|
||||
g_Config.bSkipEFBCopyToRam = tmpHeader.bSkipEFBCopyToRam;
|
||||
g_Config.bSkipXFBCopyToRam = tmpHeader.bSkipXFBCopyToRam;
|
||||
g_Config.bImmediateXFB = tmpHeader.bImmediateXFB;
|
||||
g_Config.bEFBEmulateFormatChanges = tmpHeader.bEFBEmulateFormatChanges;
|
||||
}
|
||||
|
||||
|
@ -88,6 +88,7 @@ struct DTMHeader
|
||||
bool bEFBCopyEnable;
|
||||
bool bSkipEFBCopyToRam;
|
||||
bool bSkipXFBCopyToRam;
|
||||
bool bImmediateXFB;
|
||||
bool bEFBCopyCacheEnable;
|
||||
bool bEFBEmulateFormatChanges;
|
||||
u8 memcards; // Memcards inserted (from least to most significant, the bits are slot A and B)
|
||||
@ -97,7 +98,7 @@ struct DTMHeader
|
||||
bool bNetPlay;
|
||||
bool bPAL60;
|
||||
u8 language;
|
||||
u8 reserved[12]; // Padding for any new config options
|
||||
u8 reserved[11]; // Padding for any new config options
|
||||
u8 discChange[40]; // Name of iso file to switch to, for two disc games.
|
||||
u8 revision[20]; // Git hash
|
||||
u32 DSPiromHash;
|
||||
|
Reference in New Issue
Block a user