Fixes to the software plugin command processor. Made it easy to use the command processor in place of the one in video common. Use frame skip setting from the application in the software plugin instead of the internal frame skipping config setting. The WGP does not loop if the write pointer is set beyond the end of the fifo.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4527 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
donkopunchstania
2009-11-11 03:14:38 +00:00
parent c2a4e33313
commit 52da977c73
10 changed files with 245 additions and 159 deletions

View File

@ -22,6 +22,22 @@
#include "pluginspecs_video.h"
class PointerWrap;
extern volatile bool g_bSkipCurrentFrame;
// for compatibility with video common
void Fifo_Init();
void Fifo_Shutdown();
void Fifo_DoState(PointerWrap &p);
void Fifo_EnterLoop(const SVideoInitialize &video_initialize);
void Fifo_ExitLoop();
void Fifo_SetRendering(bool bEnabled);
// Implemented by the Video Plugin
void VideoFifo_CheckSwapRequest();
void VideoFifo_CheckSwapRequestAt(u32 xfbAddr, u32 fbWidth, u32 fbHeight);
void VideoFifo_CheckEFBAccess();
namespace CommandProcessor
{
// internal hardware addresses
@ -76,11 +92,11 @@ namespace CommandProcessor
struct
{
unsigned GPReadEnable : 1;
unsigned BreakPointIntEnable : 1;
unsigned BPEnable : 1;
unsigned FifoOverflowIntEnable : 1;
unsigned FifoUnderflowIntEnable : 1;
unsigned GPLinkEnable : 1;
unsigned BPEnable : 1;
unsigned BreakPointIntEnable : 1;
unsigned : 10;
};
u16 Hex;
@ -134,6 +150,7 @@ namespace CommandProcessor
void DoState(PointerWrap &p);
bool RunBuffer();
void RunGpu();
// Read
void Read16(u16& _rReturnValue, const u32 _Address);
@ -143,8 +160,8 @@ namespace CommandProcessor
// for CGPFIFO
void GatherPipeBursted();
void UpdateInterrupts();
void UpdateInterruptsFromVideoPlugin();
void UpdateInterrupts(u64 userdata);
void UpdateInterruptsFromVideoPlugin(u64 userdata);
} // end of namespace CommandProcessor