merge latest master changes

This commit is contained in:
Rodolfo Bogado 2016-09-03 00:44:57 -03:00
parent 8bf4391524
commit b3f7f04557
22 changed files with 55 additions and 85 deletions

View file

@ -17,7 +17,3 @@ EmulationIssues =
[ActionReplay]
# Add action replay cheats here.
[Video_Settings]
FastDepthCalc = False

View file

@ -5,7 +5,7 @@
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Needs real xfb for the videos to display. Shadow issues with fastdepth (D3D).
EmulationIssues = Needs real xfb for the videos to display.
EmulationStateId = 4
[OnLoad]
@ -20,4 +20,3 @@ EmulationStateId = 4
[Video_Settings]
UseXFB = True
UseRealXFB = True
FastDepthCalc = False

View file

@ -5,7 +5,7 @@
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Needs real xfb for the videos to display. Shadow issues with fastdepth (D3D).
EmulationIssues = Needs real xfb for the videos to display.
EmulationStateId = 4
[OnLoad]
@ -20,4 +20,3 @@ EmulationStateId = 4
[Video_Settings]
UseXFB = True
UseRealXFB = True
FastDepthCalc = False

View file

@ -5,7 +5,7 @@
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Needs real xfb for the videos to display. Shadow issues with fastdepth (D3D).
EmulationIssues = Needs real xfb for the videos to display.
EmulationStateId = 4
[OnLoad]
@ -20,4 +20,3 @@ EmulationStateId = 4
[Video_Settings]
UseXFB = True
UseRealXFB = True
FastDepthCalc = False

View file

@ -21,8 +21,5 @@ EmulationIssues =
EFBAccessEnable = True
EFBToTextureEnable = False
[Video_Settings]
FastDepthCalc = False
[Video_Stereoscopy]
StereoConvergence = 115

View file

@ -21,4 +21,3 @@ EmulationIssues =
[Video_Settings]
SafeTextureCacheColorSamples = 512
FastDepthCalc = False

View file

@ -16,6 +16,3 @@ EmulationIssues =
[ActionReplay]
# Add action replay cheats here.
[Video_Settings]
FastDepthCalc = False

View file

@ -19,5 +19,3 @@ EmulationStateId = 4
[Video_Settings]
SafeTextureCacheColorSamples = 512
FastDepthCalc = False

View file

@ -18,7 +18,6 @@ EmulationIssues = Sound crackling can be fixed by lle audio.
# Add action replay cheats here.
[Video_Settings]
FastDepthCalc = False
SafeTextureCacheColorSamples = 512
[Video_Stereoscopy]

View file

@ -6,7 +6,7 @@
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
EmulationIssues = Needs real wiimote and motion plus. Time stone transition needs Fast Depth off.
EmulationIssues = Needs real wiimote and motion plus.
[OnLoad]
# Add memory patches to be loaded once on boot here.
@ -18,6 +18,3 @@ EmulationIssues = Needs real wiimote and motion plus. Time stone transition need
[Video_Hacks]
EFBAccessEnable = True
EFBEmulateFormatChanges = True
[Video_Settings]
FastDepthCalc = False

View file

@ -2,6 +2,7 @@
[Core]
# Values set here will override the main Dolphin settings.
CPUThread = False
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
@ -17,6 +18,5 @@ EmulationIssues =
[ActionReplay]
# Add action replay cheats here.
[Core]
CPUThread = False
[Video_Hacks]
EFBToTextureEnable = False

View file

@ -5,7 +5,7 @@
[EmuState]
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Glitches in the game menu with fast depth enabled.
EmulationIssues =
EmulationStateId = 4
[OnLoad]
@ -16,6 +16,3 @@ EmulationStateId = 4
[ActionReplay]
# Add action replay cheats here.
[Video_Settings]
FastDepthCalc = False

View file

@ -678,10 +678,10 @@ static void BeginField(FieldType field)
// has the first line. For the field with the second line, we
// offset the xfb by (-stride_of_one_line) to get the start
// address of the full xfb.
if (field == FieldType::FIELD_ODD && m_VBlankTimingOdd.PRB == m_VBlankTimingEven.PRB + 1)
if (field == FieldType::FIELD_ODD && m_VBlankTimingOdd.PRB == m_VBlankTimingEven.PRB + 1 && xfbAddr)
xfbAddr -= fbStride * 2;
if (field == FieldType::FIELD_EVEN && m_VBlankTimingOdd.PRB == m_VBlankTimingEven.PRB - 1)
if (field == FieldType::FIELD_EVEN && m_VBlankTimingOdd.PRB == m_VBlankTimingEven.PRB - 1 && xfbAddr)
xfbAddr -= fbStride * 2;
}

View file

@ -497,39 +497,29 @@ void Interpreter::lhzx(UGeckoInstruction _inst)
}
}
// TODO: is this right?
// FIXME: Should rollback if a DSI occurs
void Interpreter::lswx(UGeckoInstruction _inst)
{
u32 EA = Helper_Get_EA_X(_inst);
u32 n = (u8)PowerPC::ppcState.xer_stringctrl;
int r = _inst.RD;
int i = 0;
if (n > 0)
// Confirmed by hardware test that the zero case doesn't zero rGPR[r]
for (u32 n = 0; n < static_cast<u8>(PowerPC::ppcState.xer_stringctrl); n++)
{
rGPR[r] = 0;
do
{
u32 TempValue = PowerPC::Read_U8(EA) << (24 - i);
if (PowerPC::ppcState.Exceptions & EXCEPTION_DSI)
{
PanicAlert("DSI exception in lswx.");
NOTICE_LOG(POWERPC, "DSI exception in lswx");
return;
}
rGPR[r] |= TempValue;
int reg = (_inst.RD + (n >> 2)) & 0x1f;
int offset = (n & 3) << 3;
if ((n & 3) == 0)
rGPR[reg] = 0;
EA++;
n--;
i += 8;
if (i == 32)
{
i = 0;
r = (r + 1) & 31;
rGPR[r] = 0;
}
} while (n > 0);
u32 TempValue = PowerPC::Read_U8(EA) << (24 - offset);
if (PowerPC::ppcState.Exceptions & EXCEPTION_DSI)
{
PanicAlert("DSI exception in lswx.");
NOTICE_LOG(POWERPC, "DSI exception in lswx");
return;
}
rGPR[reg] |= TempValue;
EA++;
}
}
@ -740,7 +730,7 @@ void Interpreter::stswx(UGeckoInstruction _inst)
if (i == 32)
{
i = 0;
r++;
r = (r + 1) & 0x1f; // wrap
}
}
}

View file

@ -19,6 +19,7 @@
#include <wx/textdlg.h>
#include <wx/thread.h>
#include <wx/toolbar.h>
#include <wx/aui/dockart.h>
// clang-format on
#include "Common/BreakPoints.h"
@ -779,4 +780,5 @@ void CCodeWindow::UpdateButtonStates()
symbols->SetFont(DebuggerFont);
callers->SetFont(DebuggerFont);
calls->SetFont(DebuggerFont);
m_aui_manager.GetArtProvider()->SetFont(wxAUI_DOCKART_CAPTION_FONT, DebuggerFont);
}

View file

@ -18,6 +18,7 @@
#include <wx/aui/auibar.h>
#include <wx/aui/auibook.h>
#include <wx/aui/framemanager.h>
#include <wx/aui/dockart.h>
#include "Common/CommonTypes.h"
#include "Common/FileUtil.h"
@ -32,6 +33,8 @@
#include "DolphinWX/LogWindow.h"
#include "DolphinWX/WxUtils.h"
#include "DolphinWX/Debugger/CodeWindow.h"
#include "DolphinWX/WxUtils.h"
#include "DolphinWX/Debugger/DebuggerUIUtil.h"
// ------------
// Aui events
@ -622,6 +625,7 @@ void CFrame::TogglePaneStyle(bool On, int EventId)
Pane.Dockable(!m_bNoDocking);
}
}
m_Mgr->GetArtProvider()->SetFont(wxAUI_DOCKART_CAPTION_FONT, DebuggerFont);
m_Mgr->Update();
}

View file

@ -370,7 +370,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title)
szr_other->Add(CreateCheckBox(page_general, _("Show NetPlay Ping"),
wxGetTranslation(show_netplay_ping_desc),
vconfig.bShowNetPlayPing));
szr_other->Add(CreateCheckBox(page_general, _("Auto adjust Window Size"), (auto_window_size_desc), SConfig::GetInstance().bRenderWindowAutoSize));
szr_other->Add(CreateCheckBox(page_general, _("Auto Adjust Window Size"), (auto_window_size_desc), SConfig::GetInstance().bRenderWindowAutoSize));
szr_other->Add(CreateCheckBox(page_general, _("Show NetPlay Messages"),
wxGetTranslation(show_netplay_messages_desc),
vconfig.bShowNetPlayMessages));
@ -912,7 +912,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title)
szr_utility->Add(shaderprecompile = CreateCheckBox(page_advanced, _("Compile Shaders on Startup"), (shader_precompile_desc), vconfig.bCompileShaderOnStartup));
#if !defined WIN32 && defined HAVE_LIBAV
szr_utility->Add(CreateCheckBox(page_advanced, _("Frame Dumps use FFV1"), (use_ffv1_desc), vconfig.bUseFFV1));
szr_utility->Add(CreateCheckBox(page_advanced, _("Frame Dumps Use FFV1"), (use_ffv1_desc), vconfig.bUseFFV1));
#endif
wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_advanced, _("Utility"));

View file

@ -569,7 +569,7 @@ void Renderer::ClearScreen(const EFBRectangle& rc, bool color_enable, bool alpha
void Renderer::ReinterpretPixelData(unsigned int convtype)
{
// EXISTINGD3D11TODO: MSAA support..
D3D12_RECT source = CD3DX12_RECT(0, 0, g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight());
D3D12_RECT source = CD3DX12_RECT(0, 0, GetTargetWidth(), GetTargetHeight());
D3D12_SHADER_BYTECODE pixel_shader = {};
@ -586,7 +586,7 @@ void Renderer::ReinterpretPixelData(unsigned int convtype)
ERROR_LOG(VIDEO, "Trying to reinterpret pixel data with unsupported conversion type %d", convtype);
return;
}
D3D::SetViewportAndScissor(0, 0, g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight());
D3D::SetViewportAndScissor(0, 0, GetTargetWidth(), GetTargetHeight());
FramebufferManager::GetEFBColorTempTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTempTexture()->GetRTV(), FALSE, nullptr);
@ -595,8 +595,8 @@ void Renderer::ReinterpretPixelData(unsigned int convtype)
D3D::DrawShadedTexQuad(
FramebufferManager::GetEFBColorTexture(),
&source,
g_renderer->GetTargetWidth(),
g_renderer->GetTargetHeight(),
GetTargetWidth(),
GetTargetHeight(),
pixel_shader,
StaticShaderCache::GetSimpleVertexShader(),
StaticShaderCache::GetSimpleVertexShaderInputLayout(),

View file

@ -541,7 +541,7 @@ void Renderer::ClearScreen(const EFBRectangle& rc, bool colorEnable, bool alphaE
void Renderer::ReinterpretPixelData(unsigned int convtype)
{
// TODO: MSAA support..
D3D11_RECT source = CD3D11_RECT(0, 0, g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight());
D3D11_RECT source = CD3D11_RECT(0, 0, GetTargetWidth(), GetTargetHeight());
ID3D11PixelShader* pixel_shader;
if (convtype == 0) pixel_shader = PixelShaderCache::ReinterpRGB8ToRGBA6(true);
@ -553,17 +553,17 @@ void Renderer::ReinterpretPixelData(unsigned int convtype)
}
// convert data and set the target texture as our new EFB
g_renderer->ResetAPIState();
ResetAPIState();
D3D::context->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTempTexture()->GetRTV(), nullptr);
D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)g_renderer->GetTargetWidth(), (float)g_renderer->GetTargetHeight());
D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)GetTargetWidth(), (float)GetTargetHeight());
D3D::context->RSSetViewports(1, &vp);
D3D::SetPointCopySampler();
D3D::drawShadedTexQuad(
FramebufferManager::GetEFBColorTexture()->GetSRV(),
&source,
g_renderer->GetTargetWidth(),
g_renderer->GetTargetHeight(),
GetTargetWidth(),
GetTargetHeight(),
pixel_shader,
VertexShaderCache::GetSimpleVertexShader(),
VertexShaderCache::GetSimpleInputLayout());

View file

@ -418,7 +418,7 @@ void Renderer::ClearScreen(const EFBRectangle& rc, bool colorEnable, bool alphaE
void Renderer::ReinterpretPixelData(unsigned int convtype)
{
RECT source;
SetRect(&source, 0, 0, g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight());
SetRect(&source, 0, 0, GetTargetWidth(), GetTargetHeight());
LPDIRECT3DPIXELSHADER9 pixel_shader;
if (convtype == 0) pixel_shader = PixelShaderCache::ReinterpRGB8ToRGBA6();
@ -430,24 +430,24 @@ void Renderer::ReinterpretPixelData(unsigned int convtype)
}
// convert data and set the target texture as our new EFB
g_renderer->ResetAPIState();
ResetAPIState();
D3D::dev->SetRenderTarget(0, FramebufferManager::GetEFBColorReinterpretSurface());
D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = g_renderer->GetTargetWidth();
vp.Height = g_renderer->GetTargetHeight();
vp.Width = GetTargetWidth();
vp.Height = GetTargetHeight();
vp.MinZ = 0.0;
vp.MaxZ = 1.0;
D3D::dev->SetViewport(&vp);
D3D::ChangeSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
D3D::drawShadedTexQuad(FramebufferManager::GetEFBColorTexture(), &source,
g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight(),
g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight(),
GetTargetWidth(), GetTargetHeight(),
GetTargetWidth(), GetTargetHeight(),
pixel_shader, VertexShaderCache::GetSimpleVertexShader(0));
FramebufferManager::SwapReinterpretTexture();
D3D::RefreshSamplerState(0, D3DSAMP_MINFILTER);
g_renderer->RestoreAPIState();
RestoreAPIState();
FramebufferManager::InvalidateEFBCache();
}

View file

@ -937,13 +937,13 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
{
if (s_MSAASamples > 1)
{
g_renderer->ResetAPIState();
ResetAPIState();
// Resolve our rectangle.
FramebufferManager::GetEFBDepthTexture(efbPixelRc);
glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer());
g_renderer->RestoreAPIState();
RestoreAPIState();
}
std::unique_ptr<float[]> depthMap(new float[targetPixelRcWidth * targetPixelRcHeight]);
@ -976,13 +976,13 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
{
if (s_MSAASamples > 1)
{
g_renderer->ResetAPIState();
ResetAPIState();
// Resolve our rectangle.
FramebufferManager::GetEFBColorTexture(efbPixelRc);
glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer());
g_renderer->RestoreAPIState();
RestoreAPIState();
}
std::unique_ptr<u32[]> colorMap(new u32[targetPixelRcWidth * targetPixelRcHeight]);

View file

@ -532,9 +532,6 @@ TextureCacheBase::TCacheEntryBase* TextureCacheBase::Load(const u32 stage)
u32 tex_levels = use_mipmaps ? ((tex.texMode1[id].max_lod + 0xf) / 0x10 + 1) : 1;
const bool from_tmem = tex.texImage1[id].image_type != 0;
if (0 == address)
return nullptr;
// TexelSizeInNibbles(format) * width * height / 16;
const u32 bsw = TexDecoder_GetBlockWidthInTexels(texformat);
const u32 bsh = TexDecoder_GetBlockHeightInTexels(texformat);