mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-30 01:29:42 -06:00
Fix the video software backend. (closes issue 4269)
Some warning fixes and cleanup. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7361 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -23,9 +23,8 @@
|
||||
#include "../../../Plugins/Plugin_VideoDX11/Src/VideoBackend.h"
|
||||
#endif
|
||||
#include "../../../Plugins/Plugin_VideoOGL/Src/VideoBackend.h"
|
||||
#ifndef _WIN32
|
||||
#include "../../../Plugins/Plugin_VideoSoftware/Src/VideoBackend.h"
|
||||
#endif
|
||||
|
||||
std::vector<VideoBackend*> g_available_video_backends;
|
||||
VideoBackend* g_video_backend = NULL;
|
||||
|
||||
@ -37,11 +36,9 @@ void VideoBackend::PopulateList()
|
||||
g_available_video_backends.push_back(new DX11::VideoBackend);
|
||||
#endif
|
||||
g_available_video_backends.push_back(new OGL::VideoBackend);
|
||||
#ifndef _WIN32
|
||||
g_available_video_backends.push_back(new SW::VideoBackend);
|
||||
#endif
|
||||
g_video_backend = g_available_video_backends.front();
|
||||
g_available_video_backends.push_back(new SW::VideoSoftware);
|
||||
|
||||
g_video_backend = g_available_video_backends.front();
|
||||
}
|
||||
|
||||
void VideoBackend::ClearList()
|
||||
|
@ -23,6 +23,11 @@
|
||||
|
||||
#include "ChunkFile.h"
|
||||
|
||||
typedef void (*writeFn16)(const u16,const u32);
|
||||
typedef void (*writeFn32)(const u32,const u32);
|
||||
typedef void (*readFn16)(u16&, const u32);
|
||||
|
||||
|
||||
enum FieldType
|
||||
{
|
||||
FIELD_PROGRESSIVE = 0,
|
||||
@ -97,7 +102,6 @@ public:
|
||||
virtual void ShowConfig(void*) {}
|
||||
|
||||
virtual void Video_Prepare() = 0;
|
||||
|
||||
virtual void Video_EnterLoop() = 0;
|
||||
virtual void Video_ExitLoop() = 0;
|
||||
|
||||
@ -112,11 +116,17 @@ public:
|
||||
|
||||
virtual void Video_SetRendering(bool bEnabled) = 0;
|
||||
|
||||
static void Video_GatherPipeBursted();
|
||||
virtual void Video_GatherPipeBursted() = 0;
|
||||
|
||||
virtual bool Video_IsPossibleWaitingSetDrawDone() = 0;
|
||||
virtual void Video_AbortFrame() = 0;
|
||||
|
||||
virtual readFn16 Video_CPRead16() = 0;
|
||||
virtual writeFn16 Video_CPWrite16() = 0;
|
||||
virtual readFn16 Video_PERead16() = 0;
|
||||
virtual writeFn16 Video_PEWrite16() = 0;
|
||||
virtual writeFn32 Video_PEWrite32() = 0;
|
||||
|
||||
static void PopulateList();
|
||||
static void ClearList();
|
||||
static void ActivateBackend(const std::string& name);
|
||||
@ -126,7 +136,7 @@ extern std::vector<VideoBackend*> g_available_video_backends;
|
||||
extern VideoBackend* g_video_backend;
|
||||
|
||||
// inherited by dx9/dx11/ogl backends
|
||||
class VideoBackendHLE : public VideoBackend
|
||||
class VideoBackendHardware : public VideoBackend
|
||||
{
|
||||
void DoState(PointerWrap &p);
|
||||
void RunLoop(bool enable);
|
||||
@ -145,14 +155,16 @@ class VideoBackendHLE : public VideoBackend
|
||||
|
||||
void Video_SetRendering(bool bEnabled);
|
||||
|
||||
void Video_GatherPipeBursted();
|
||||
|
||||
bool Video_IsPossibleWaitingSetDrawDone();
|
||||
void Video_AbortFrame();
|
||||
};
|
||||
|
||||
// inherited by software renderer
|
||||
class VideoBackendLLE : public VideoBackend
|
||||
{
|
||||
|
||||
readFn16 Video_CPRead16();
|
||||
writeFn16 Video_CPWrite16();
|
||||
readFn16 Video_PERead16();
|
||||
writeFn16 Video_PEWrite16();
|
||||
writeFn32 Video_PEWrite32();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -45,8 +45,7 @@ may be redirected here (for example to Read_U32()).
|
||||
#include "WII_IPC.h"
|
||||
#include "../ConfigManager.h"
|
||||
#include "../Debugger/Debugger_SymbolMap.h"
|
||||
#include "CommandProcessor.h"
|
||||
#include "PixelEngine.h"
|
||||
#include "VideoBackendBase.h"
|
||||
|
||||
namespace Memory
|
||||
{
|
||||
@ -180,12 +179,12 @@ void InitHWMemFuncs()
|
||||
|
||||
for (int i = 0; i < BLOCKSIZE; i++)
|
||||
{
|
||||
hwRead16 [CP_START+i] = CommandProcessor::Read16;
|
||||
hwWrite16[CP_START+i] = CommandProcessor::Write16;
|
||||
hwRead16 [CP_START+i] = g_video_backend->Video_CPRead16();
|
||||
hwWrite16[CP_START+i] = g_video_backend->Video_CPWrite16();
|
||||
|
||||
hwRead16 [PE_START+i] = PixelEngine::Read16;
|
||||
hwWrite16[PE_START+i] = PixelEngine::Write16;
|
||||
hwWrite32[PE_START+i] = PixelEngine::Write32;
|
||||
hwRead16 [PE_START+i] = g_video_backend->Video_PERead16();
|
||||
hwWrite16[PE_START+i] = g_video_backend->Video_PEWrite16();
|
||||
hwWrite32[PE_START+i] = g_video_backend->Video_PEWrite32();
|
||||
|
||||
hwRead8 [VI_START+i] = VideoInterface::Read8;
|
||||
hwRead16 [VI_START+i] = VideoInterface::Read16;
|
||||
@ -253,12 +252,12 @@ void InitHWMemFuncsWii()
|
||||
// MI, PI, DSP are still mapped to 0xCCxxxxxx
|
||||
for (int i = 0; i < BLOCKSIZE; i++)
|
||||
{
|
||||
hwRead16 [CP_START+i] = CommandProcessor::Read16;
|
||||
hwWrite16[CP_START+i] = CommandProcessor::Write16;
|
||||
hwRead16 [CP_START+i] = g_video_backend->Video_CPRead16();
|
||||
hwWrite16[CP_START+i] = g_video_backend->Video_CPWrite16();
|
||||
|
||||
hwRead16 [PE_START+i] = PixelEngine::Read16;
|
||||
hwWrite16[PE_START+i] = PixelEngine::Write16;
|
||||
hwWrite32[PE_START+i] = PixelEngine::Write32;
|
||||
hwRead16 [PE_START+i] = g_video_backend->Video_PERead16();
|
||||
hwWrite16[PE_START+i] = g_video_backend->Video_PEWrite16();
|
||||
hwWrite32[PE_START+i] = g_video_backend->Video_PEWrite32();
|
||||
|
||||
hwRead16 [PI_START+i] = ProcessorInterface::Read16;
|
||||
hwRead32 [PI_START+i] = ProcessorInterface::Read32;
|
||||
|
@ -359,6 +359,9 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||
<ProjectReference Include="..\..\Plugins\Plugin_VideoOGL\Plugin_VideoOGL.vcxproj">
|
||||
<Project>{1909cd2d-1707-456f-86ca-0df42a727c99}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Plugins\Plugin_VideoSoftware\Plugin_VideoSoftware.vcxproj">
|
||||
<Project>{9e9da440-e9ad-413c-b648-91030e792211}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\AudioCommon\AudioCommon.vcxproj">
|
||||
<Project>{37d007bd-d66c-4eaf-b56c-bd1aac340a05}</Project>
|
||||
</ProjectReference>
|
||||
@ -384,4 +387,4 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
@ -199,7 +199,7 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
|
||||
if (wParam == WM_USER_KEYDOWN)
|
||||
{
|
||||
OnKeyDown(lParam);
|
||||
FreeLookInput(wParam, lParam);
|
||||
FreeLookInput((u32)wParam, lParam);
|
||||
}
|
||||
else if (wParam == WIIMOTE_DISCONNECT)
|
||||
{
|
||||
|
@ -143,7 +143,7 @@ void RunGpuLoop()
|
||||
if (!GpuRunningState) break;
|
||||
|
||||
fifo.isGpuReadingData = true;
|
||||
CommandProcessor::isPossibleWaitingSetDrawDone = fifo.bFF_GPLinkEnable;
|
||||
CommandProcessor::isPossibleWaitingSetDrawDone = fifo.bFF_GPLinkEnable ? true : false;
|
||||
|
||||
u32 readPtr = fifo.CPReadPointer;
|
||||
u8 *uData = Memory::GetPointer(readPtr);
|
||||
|
@ -39,24 +39,24 @@ static struct
|
||||
|
||||
static u32 s_AccessEFBResult = 0;
|
||||
|
||||
void VideoBackendHLE::EmuStateChange(EMUSTATE_CHANGE newState)
|
||||
void VideoBackendHardware::EmuStateChange(EMUSTATE_CHANGE newState)
|
||||
{
|
||||
EmulatorState((newState == EMUSTATE_CHANGE_PLAY) ? true : false);
|
||||
}
|
||||
|
||||
// Enter and exit the video loop
|
||||
void VideoBackendHLE::Video_EnterLoop()
|
||||
void VideoBackendHardware::Video_EnterLoop()
|
||||
{
|
||||
RunGpuLoop();
|
||||
}
|
||||
|
||||
void VideoBackendHLE::Video_ExitLoop()
|
||||
void VideoBackendHardware::Video_ExitLoop()
|
||||
{
|
||||
ExitGpuLoop();
|
||||
s_FifoShuttingDown = true;
|
||||
}
|
||||
|
||||
void VideoBackendHLE::Video_SetRendering(bool bEnabled)
|
||||
void VideoBackendHardware::Video_SetRendering(bool bEnabled)
|
||||
{
|
||||
Fifo_SetRendering(bEnabled);
|
||||
}
|
||||
@ -94,7 +94,7 @@ void VideoFifo_CheckSwapRequestAt(u32 xfbAddr, u32 fbWidth, u32 fbHeight)
|
||||
}
|
||||
|
||||
// Run from the CPU thread (from VideoInterface.cpp)
|
||||
void VideoBackendHLE::Video_BeginField(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight)
|
||||
void VideoBackendHardware::Video_BeginField(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight)
|
||||
{
|
||||
if (s_BackendInitialized && g_ActiveConfig.bUseXFB)
|
||||
{
|
||||
@ -108,7 +108,7 @@ void VideoBackendHLE::Video_BeginField(u32 xfbAddr, FieldType field, u32 fbWidth
|
||||
}
|
||||
|
||||
// Run from the CPU thread (from VideoInterface.cpp)
|
||||
void VideoBackendHLE::Video_EndField()
|
||||
void VideoBackendHardware::Video_EndField()
|
||||
{
|
||||
if (s_BackendInitialized)
|
||||
{
|
||||
@ -116,18 +116,18 @@ void VideoBackendHLE::Video_EndField()
|
||||
}
|
||||
}
|
||||
|
||||
void VideoBackendHLE::Video_AddMessage(const char* pstr, u32 milliseconds)
|
||||
void VideoBackendHardware::Video_AddMessage(const char* pstr, u32 milliseconds)
|
||||
{
|
||||
OSD::AddMessage(pstr, milliseconds);
|
||||
}
|
||||
|
||||
void VideoBackendHLE::Video_ClearMessages()
|
||||
void VideoBackendHardware::Video_ClearMessages()
|
||||
{
|
||||
OSD::ClearMessages();
|
||||
}
|
||||
|
||||
// Screenshot
|
||||
bool VideoBackendHLE::Video_Screenshot(const char *_szFilename)
|
||||
bool VideoBackendHardware::Video_Screenshot(const char *_szFilename)
|
||||
{
|
||||
Renderer::SetScreenshot(_szFilename);
|
||||
return true;
|
||||
@ -143,7 +143,7 @@ void VideoFifo_CheckEFBAccess()
|
||||
}
|
||||
}
|
||||
|
||||
u32 VideoBackendHLE::Video_AccessEFB(EFBAccessType type, u32 x, u32 y, u32 InputData)
|
||||
u32 VideoBackendHardware::Video_AccessEFB(EFBAccessType type, u32 x, u32 y, u32 InputData)
|
||||
{
|
||||
if (s_BackendInitialized)
|
||||
{
|
||||
@ -202,7 +202,7 @@ void VideoFifo_CheckStateRequest()
|
||||
}
|
||||
|
||||
// Run from the CPU thread
|
||||
void VideoBackendHLE::DoState(PointerWrap& p)
|
||||
void VideoBackendHardware::DoState(PointerWrap& p)
|
||||
{
|
||||
s_doStateArgs.ptr = p.ptr;
|
||||
s_doStateArgs.mode = p.mode;
|
||||
@ -217,7 +217,7 @@ void VideoBackendHLE::DoState(PointerWrap& p)
|
||||
VideoFifo_CheckStateRequest();
|
||||
}
|
||||
|
||||
void VideoBackendHLE::RunLoop(bool enable)
|
||||
void VideoBackendHardware::RunLoop(bool enable)
|
||||
{
|
||||
VideoCommon_RunLoop(enable);
|
||||
}
|
||||
@ -228,17 +228,39 @@ void VideoFifo_CheckAsyncRequest()
|
||||
VideoFifo_CheckEFBAccess();
|
||||
}
|
||||
|
||||
void VideoBackend::Video_GatherPipeBursted()
|
||||
void VideoBackendHardware::Video_GatherPipeBursted()
|
||||
{
|
||||
CommandProcessor::GatherPipeBursted();
|
||||
}
|
||||
|
||||
bool VideoBackendHLE::Video_IsPossibleWaitingSetDrawDone()
|
||||
bool VideoBackendHardware::Video_IsPossibleWaitingSetDrawDone()
|
||||
{
|
||||
return CommandProcessor::isPossibleWaitingSetDrawDone;
|
||||
}
|
||||
|
||||
void VideoBackendHLE::Video_AbortFrame()
|
||||
void VideoBackendHardware::Video_AbortFrame()
|
||||
{
|
||||
CommandProcessor::AbortFrame();
|
||||
}
|
||||
|
||||
readFn16 VideoBackendHardware::Video_CPRead16()
|
||||
{
|
||||
return CommandProcessor::Read16;
|
||||
}
|
||||
writeFn16 VideoBackendHardware::Video_CPWrite16()
|
||||
{
|
||||
return CommandProcessor::Write16;
|
||||
}
|
||||
|
||||
readFn16 VideoBackendHardware::Video_PERead16()
|
||||
{
|
||||
return PixelEngine::Read16;
|
||||
}
|
||||
writeFn16 VideoBackendHardware::Video_PEWrite16()
|
||||
{
|
||||
return PixelEngine::Write16;
|
||||
}
|
||||
writeFn32 VideoBackendHardware::Video_PEWrite32()
|
||||
{
|
||||
return PixelEngine::Write32;
|
||||
}
|
||||
|
Reference in New Issue
Block a user