mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 13:27:45 -07:00
Minor consistency changes
Mostly small changes, like capitalization and spelling
This commit is contained in:
parent
b3474c8218
commit
cb86db7b68
@ -132,7 +132,7 @@ void OpenALStream::SoundLoop()
|
||||
#if defined(__APPLE__)
|
||||
bool float32_capable = false;
|
||||
const ALenum AL_FORMAT_STEREO_FLOAT32 = 0;
|
||||
// OSX does not have the alext AL_FORMAT_51CHN32 yet.
|
||||
// OS X does not have the alext AL_FORMAT_51CHN32 yet.
|
||||
surround_capable = false;
|
||||
const ALenum AL_FORMAT_51CHN32 = 0;
|
||||
#else
|
||||
|
@ -149,11 +149,11 @@ CPUInfo::CPUInfo()
|
||||
Detect();
|
||||
}
|
||||
|
||||
// Detects the various cpu features
|
||||
// Detects the various CPU features
|
||||
void CPUInfo::Detect()
|
||||
{
|
||||
// Set some defaults here
|
||||
// When ARMv8 cpus come out, these need to be updated.
|
||||
// When ARMv8 CPUs come out, these need to be updated.
|
||||
HTT = false;
|
||||
#ifdef _M_ARM_64
|
||||
OS64bit = true;
|
||||
@ -251,7 +251,7 @@ void CPUInfo::Detect()
|
||||
#endif
|
||||
}
|
||||
|
||||
// Turn the cpu info into a string we can show
|
||||
// Turn the CPU info into a string we can show
|
||||
std::string CPUInfo::Summarize()
|
||||
{
|
||||
std::string sum;
|
||||
|
@ -390,7 +390,7 @@ public:
|
||||
void MCR(u32 coproc, u32 opc1, ARMReg Rt, u32 CRn, u32 CRm, u32 opc2 = 0);
|
||||
|
||||
// Do nothing
|
||||
void NOP(int count = 1); //nop padding - TODO: fast nop slides, for amd and intel (check their manuals)
|
||||
void NOP(int count = 1); //nop padding - TODO: fast nop slides, for AMD and Intel (check their manuals)
|
||||
|
||||
#ifdef CALL
|
||||
#undef CALL
|
||||
@ -476,7 +476,7 @@ public:
|
||||
void UBFX(ARMReg dest, ARMReg op2, u8 lsb, u8 width);
|
||||
void CLZ(ARMReg rd, ARMReg rm);
|
||||
|
||||
// Using just MSR here messes with our defines on the PPC side of stuff (when this code was in dolphin...)
|
||||
// Using just MSR here messes with our defines on the PPC side of stuff (when this code was in Dolphin...)
|
||||
// Just need to put an underscore here, bit annoying.
|
||||
void _MSR (bool nzcvq, bool g, Operand2 op2);
|
||||
void _MSR (bool nzcvq, bool g, ARMReg src);
|
||||
|
@ -81,7 +81,7 @@ private:
|
||||
#define GC_ALIGNED16_DECL(x) __declspec(align(16)) x
|
||||
#define GC_ALIGNED64_DECL(x) __declspec(align(64)) x
|
||||
|
||||
// Since they are always around on windows
|
||||
// Since they are always around on Windows
|
||||
#define HAVE_WX 1
|
||||
#define HAVE_OPENAL 1
|
||||
|
||||
|
@ -108,7 +108,7 @@ inline u64 _rotr64(u64 x, unsigned int shift)
|
||||
#define snprintf _snprintf
|
||||
#define vscprintf _vscprintf
|
||||
|
||||
// 64 bit offsets for windows
|
||||
// 64 bit offsets for Windows
|
||||
#define fseeko _fseeki64
|
||||
#define ftello _ftelli64
|
||||
#define atoll _atoi64
|
||||
|
@ -31,7 +31,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Shared data dirs (Sys and shared User for linux)
|
||||
// Shared data dirs (Sys and shared User for Linux)
|
||||
#ifdef _WIN32
|
||||
#define SYSDATA_DIR "Sys"
|
||||
#elif defined __APPLE__
|
||||
|
@ -40,7 +40,7 @@ typedef int32_t s32;
|
||||
typedef int64_t s64;
|
||||
|
||||
#endif
|
||||
// For using windows lock code
|
||||
// For using Windows lock code
|
||||
#define TCHAR char
|
||||
#define LONG int
|
||||
|
||||
|
@ -469,7 +469,7 @@ u32 ScanDirectoryTree(const std::string &directory, FSTEntry& parentEntry)
|
||||
FindClose(hFind);
|
||||
return foundEntries;
|
||||
}
|
||||
// windows loop
|
||||
// Windows loop
|
||||
do
|
||||
{
|
||||
FSTEntry entry;
|
||||
@ -481,7 +481,7 @@ u32 ScanDirectoryTree(const std::string &directory, FSTEntry& parentEntry)
|
||||
if (!dirp)
|
||||
return 0;
|
||||
|
||||
// non windows loop
|
||||
// non Windows loop
|
||||
while (!readdir_r(dirp, &dirent, &result) && result)
|
||||
{
|
||||
FSTEntry entry;
|
||||
@ -538,7 +538,7 @@ bool DeleteDirRecursively(const std::string &directory)
|
||||
return false;
|
||||
}
|
||||
|
||||
// windows loop
|
||||
// Windows loop
|
||||
do
|
||||
{
|
||||
const std::string virtualName(TStrToUTF8(ffd.cFileName));
|
||||
@ -548,7 +548,7 @@ bool DeleteDirRecursively(const std::string &directory)
|
||||
if (!dirp)
|
||||
return false;
|
||||
|
||||
// non windows loop
|
||||
// non Windows loop
|
||||
while (!readdir_r(dirp, &dirent, &result) && result)
|
||||
{
|
||||
const std::string virtualName = result->d_name;
|
||||
|
@ -218,7 +218,7 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
|
||||
return false;
|
||||
|
||||
size_t dir_end = full_path.find_last_of("/"
|
||||
// windows needs the : included for something like just "C:" to be considered a directory
|
||||
// Windows needs the : included for something like just "C:" to be considered a directory
|
||||
#ifdef _WIN32
|
||||
":"
|
||||
#endif
|
||||
|
@ -32,7 +32,7 @@ int CurrentThreadId();
|
||||
void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask);
|
||||
void SetCurrentThreadAffinity(u32 mask);
|
||||
|
||||
// TODO: doesn't work on windows with (count > 2)
|
||||
// TODO: doesn't work on Windows with (count > 2)
|
||||
class Barrier
|
||||
{
|
||||
public:
|
||||
|
@ -374,7 +374,7 @@ void XEmitter::JMPptr(const OpArg &arg2)
|
||||
}
|
||||
|
||||
//Can be used to trap other processors, before overwriting their code
|
||||
// not used in dolphin
|
||||
// not used in Dolphin
|
||||
void XEmitter::JMPself()
|
||||
{
|
||||
Write8(0xEB);
|
||||
@ -954,8 +954,8 @@ void XEmitter::WriteShift(int bits, OpArg dest, OpArg &shift, int ext)
|
||||
Write8((u8)shift.offset);
|
||||
}
|
||||
|
||||
// large rotates and shift are slower on intel than amd
|
||||
// intel likes to rotate by 1, and the op is smaller too
|
||||
// large rotates and shift are slower on Intel than AMD
|
||||
// Intel likes to rotate by 1, and the op is smaller too
|
||||
void XEmitter::ROL(int bits, OpArg dest, OpArg shift) {WriteShift(bits, dest, shift, 0);}
|
||||
void XEmitter::ROR(int bits, OpArg dest, OpArg shift) {WriteShift(bits, dest, shift, 1);}
|
||||
void XEmitter::RCL(int bits, OpArg dest, OpArg shift) {WriteShift(bits, dest, shift, 2);}
|
||||
|
@ -375,7 +375,7 @@ static bool batchdecrypt(u32 *codes, u16 size)
|
||||
getbitstring(tmparray,tmparray2+5,2); // Region
|
||||
|
||||
// Grab gameid and region from the last decrypted code
|
||||
// TODO: Maybe check this against dolphin's GameID? - "code is for wrong game" type msg
|
||||
// TODO: Maybe check this against Dolphin's GameID? - "code is for wrong game" type msg
|
||||
//gameid = tmparray2[1];
|
||||
//region = tmparray2[5];
|
||||
|
||||
|
@ -901,7 +901,7 @@ bool RunCode(const ARCode &arcode)
|
||||
|
||||
default:
|
||||
LogInfo("ZCode: Unknown");
|
||||
PanicAlertT("Zero code unknown to dolphin: %08x", zcode);
|
||||
PanicAlertT("Zero code unknown to Dolphin: %08x", zcode);
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ static s16 ADPCM_Step(u32& _rSamplePos)
|
||||
|
||||
_rSamplePos++;
|
||||
|
||||
// The advanced interpolation (linear, polyphase,...) is done by the UCode,
|
||||
// The advanced interpolation (linear, polyphase,...) is done by the ucode,
|
||||
// so we don't need to bother with it here.
|
||||
return val;
|
||||
}
|
||||
@ -116,7 +116,7 @@ u16 dsp_read_accelerator()
|
||||
// let's do the "hardware" decode DSP_FORMAT is interesting - the Zelda
|
||||
// ucode seems to indicate that the bottom two bits specify the "read size"
|
||||
// and the address multiplier. The bits above that may be things like sign
|
||||
// extention and do/do not use ADPCM. It also remains to be figured out
|
||||
// extension and do/do not use ADPCM. It also remains to be figured out
|
||||
// whether there's a difference between the usual accelerator "read
|
||||
// address" and 0xd3.
|
||||
switch (g_dsp.ifx_regs[DSP_FORMAT])
|
||||
@ -152,7 +152,7 @@ u16 dsp_read_accelerator()
|
||||
|
||||
// TODO: Take GAIN into account
|
||||
// adpcm = 0, pcm8 = 0x100, pcm16 = 0x800
|
||||
// games using pcm8 : Phoenix Wright Ace Attorney (Wiiware), Megaman 9-10 (WiiWare)
|
||||
// games using pcm8 : Phoenix Wright Ace Attorney (WiiWare), Megaman 9-10 (WiiWare)
|
||||
// games using pcm16: GC Sega games, ...
|
||||
|
||||
// Check for loop.
|
||||
|
@ -532,7 +532,7 @@ void applyWriteBackLog()
|
||||
// then 0 | ext output = ext output and if it did then bitwise or is still the
|
||||
// right thing to do
|
||||
// Only needed for cases when mainop and extended are modifying the same ACC
|
||||
// Games are not doing that + in motorola (similar dsp) dox this is forbidden to do.
|
||||
// Games are not doing that + in motorola (similar DSP) dox this is forbidden to do.
|
||||
void zeroWriteBackLog()
|
||||
{
|
||||
#ifdef PRECISE_BACKLOG
|
||||
|
@ -48,7 +48,7 @@ void WriteCR(u16 val)
|
||||
else if (val == 4)
|
||||
{
|
||||
// HAX!
|
||||
// OSInitAudioSystem ucode should send this mail - not dsp core itself
|
||||
// OSInitAudioSystem ucode should send this mail - not DSP core itself
|
||||
INFO_LOG(DSPLLE,"DSP_CONTROL INIT");
|
||||
init_hax = true;
|
||||
val |= 0x800;
|
||||
|
@ -121,7 +121,7 @@ void GetStringVA(std::string& _rOutBuffer, u32 strReg)
|
||||
}
|
||||
|
||||
case 'p':
|
||||
// Override, so 64bit dolphin prints 32bit pointers, since the ppc is 32bit :)
|
||||
// Override, so 64bit Dolphin prints 32bit pointers, since the ppc is 32bit :)
|
||||
_rOutBuffer += StringFromFormat("%x", (u32)Parameter);
|
||||
break;
|
||||
|
||||
|
@ -184,7 +184,7 @@ static DSPEmulator *dsp_emulator;
|
||||
static int dsp_slice = 0;
|
||||
static bool dsp_is_lle = false;
|
||||
|
||||
//time given to lle dsp on every read of the high bits in a mailbox
|
||||
// time given to LLE DSP on every read of the high bits in a mailbox
|
||||
static const int DSP_MAIL_SLICE=72;
|
||||
|
||||
void DoState(PointerWrap &p)
|
||||
@ -245,7 +245,7 @@ void Init(bool hle)
|
||||
}
|
||||
else
|
||||
{
|
||||
// On the GC, ARAM is accessible only through this interface.
|
||||
// On the GameCube, ARAM is accessible only through this interface.
|
||||
g_ARAM.wii_mode = false;
|
||||
g_ARAM.size = ARAM_SIZE;
|
||||
g_ARAM.mask = ARAM_MASK;
|
||||
@ -366,7 +366,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
|
||||
|
||||
// Not really sure if this is correct, but it works...
|
||||
// Kind of a hack because DSP_CONTROL_MASK should make this bit
|
||||
// only viewable to dsp emulator
|
||||
// only viewable to DSP emulator
|
||||
if (val & 1 /*DSPReset*/)
|
||||
{
|
||||
g_audioDMA.AudioDMAControl.Hex = 0;
|
||||
@ -480,15 +480,15 @@ void GenerateDSPInterruptFromDSPEmu(DSPInterruptType type)
|
||||
CoreTiming::ScheduleEvent_Threadsafe_Immediate(et_GenerateDSPInterrupt, type);
|
||||
}
|
||||
|
||||
// called whenever SystemTimers thinks the dsp deserves a few more cycles
|
||||
// called whenever SystemTimers thinks the DSP deserves a few more cycles
|
||||
void UpdateDSPSlice(int cycles)
|
||||
{
|
||||
if (dsp_is_lle)
|
||||
{
|
||||
//use up the rest of the slice(if any)
|
||||
// use up the rest of the slice(if any)
|
||||
dsp_emulator->DSP_Update(dsp_slice);
|
||||
dsp_slice %= 6;
|
||||
//note the new budget
|
||||
// note the new budget
|
||||
dsp_slice += cycles;
|
||||
}
|
||||
else
|
||||
@ -588,7 +588,7 @@ static void Do_ARAM_DMA()
|
||||
}
|
||||
else
|
||||
{
|
||||
// Assuming no external ARAM installed; returns zeroes on out of bounds reads (verified on real HW)
|
||||
// Assuming no external ARAM installed; returns zeros on out of bounds reads (verified on real HW)
|
||||
while (g_arDMA.Cnt.count)
|
||||
{
|
||||
Memory::Write_U64(0, g_arDMA.MMAddr);
|
||||
@ -646,7 +646,7 @@ static void Do_ARAM_DMA()
|
||||
|
||||
// (shuffle2) I still don't believe that this hack is actually needed... :(
|
||||
// Maybe the Wii Sports ucode is processed incorrectly?
|
||||
// (LM) It just means that dsp reads via '0xffdd' on WII can end up in EXRAM or main RAM
|
||||
// (LM) It just means that DSP reads via '0xffdd' on WII can end up in EXRAM or main RAM
|
||||
u8 ReadARAM(u32 _iAddress)
|
||||
{
|
||||
//NOTICE_LOG(DSPINTERFACE, "ReadARAM 0x%08x", _iAddress);
|
||||
@ -665,8 +665,8 @@ u8 ReadARAM(u32 _iAddress)
|
||||
|
||||
void WriteARAM(u8 value, u32 _uAddress)
|
||||
{
|
||||
//NOTICE_LOG(DSPINTERFACE, "WriteARAM 0x%08x", _uAddress);
|
||||
//TODO: verify this on WII
|
||||
// NOTICE_LOG(DSPINTERFACE, "WriteARAM 0x%08x", _uAddress);
|
||||
// TODO: verify this on WII
|
||||
g_ARAM.ptr[_uAddress & g_ARAM.mask] = value;
|
||||
}
|
||||
|
||||
|
@ -337,7 +337,7 @@ void DSPLLE::DSP_Update(int cycles)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wait for dsp thread to complete its cycle. Note: this logic should be thought through.
|
||||
// Wait for DSP thread to complete its cycle. Note: this logic should be thought through.
|
||||
ppcEvent.Wait();
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(m_csDSPCycleCountActive);
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include "Core/HW/Memmap.h"
|
||||
|
||||
// XXX: The BBA stores multi-byte elements as little endian.
|
||||
// Multiple parts of this implementation depend on dolphin
|
||||
// Multiple parts of this implementation depend on Dolphin
|
||||
// being compiled for a little endian host.
|
||||
|
||||
|
||||
|
@ -216,7 +216,7 @@ void CEXIMemoryCard::SetupGciFolder(u16 sizeMb)
|
||||
{
|
||||
// TODO more user friendly abort
|
||||
PanicAlertT("%s is not a directory, failed to move to *.original.\n Verify your write permissions or move "
|
||||
"the file outside of dolphin",
|
||||
"the file outside of Dolphin",
|
||||
strDirectoryName.c_str());
|
||||
exit(0);
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ void GCPad::LoadDefaults(const ControllerInterface& ciface)
|
||||
#ifdef _WIN32
|
||||
set_control(m_buttons, 5, "RETURN"); // Start
|
||||
#else
|
||||
// osx/linux
|
||||
// OS X/Linux
|
||||
set_control(m_buttons, 5, "Return"); // Start
|
||||
#endif
|
||||
|
||||
|
@ -290,7 +290,7 @@ struct SVIFilterCoefTables
|
||||
UVIFilterCoefTable4 Tables36[4];
|
||||
};
|
||||
|
||||
// Debug video mode only, probably never used in dolphin...
|
||||
// Debug video mode only, probably never used in Dolphin...
|
||||
union UVIBorderBlankRegister
|
||||
{
|
||||
u32 Hex;
|
||||
|
@ -630,7 +630,7 @@ void Stop()
|
||||
wiimote->EmuStop();
|
||||
}
|
||||
|
||||
// called when the dolphin app exits
|
||||
// called when the Dolphin app exits
|
||||
void Shutdown()
|
||||
{
|
||||
g_wiimote_scanner.StopScanning();
|
||||
|
@ -424,7 +424,7 @@ void WiiSocket::Update(bool read, bool write, bool except)
|
||||
u32 flags = Memory::Read_U32(BufferIn2 + 0x04);
|
||||
u32 has_destaddr = Memory::Read_U32(BufferIn2 + 0x08);
|
||||
|
||||
// Not a string, windows requires a const char* for sendto
|
||||
// Not a string, Windows requires a const char* for sendto
|
||||
const char* data = (const char*)Memory::GetPointer(BufferIn);
|
||||
|
||||
// Act as non blocking when SO_MSG_NONBLOCK is specified
|
||||
@ -459,7 +459,7 @@ void WiiSocket::Update(bool read, bool write, bool except)
|
||||
case IOCTLV_SO_RECVFROM:
|
||||
{
|
||||
u32 flags = Memory::Read_U32(BufferIn + 0x04);
|
||||
// Not a string, windows requires a char* for recvfrom
|
||||
// Not a string, Windows requires a char* for recvfrom
|
||||
char* data = (char*)Memory::GetPointer(BufferOut);
|
||||
int data_len = BufferOutSize;
|
||||
|
||||
|
@ -133,7 +133,7 @@ unsigned int NetPlayServer::OnConnect(std::unique_ptr<sf::TcpSocket>& socket)
|
||||
|
||||
std::string npver;
|
||||
rpac >> npver;
|
||||
// dolphin netplay version
|
||||
// Dolphin netplay version
|
||||
if (npver != NETPLAY_VERSION)
|
||||
return CON_ERR_VERSION_MISMATCH;
|
||||
|
||||
|
@ -832,7 +832,7 @@ void Interpreter::sync(UGeckoInstruction _inst)
|
||||
void Interpreter::tlbia(UGeckoInstruction _inst)
|
||||
{
|
||||
// Gekko does not support this instructions.
|
||||
PanicAlert("The GC CPU does not support tlbia");
|
||||
PanicAlert("The GameCube CPU does not support tlbia");
|
||||
// invalid the whole TLB
|
||||
//MessageBox(0,"TLBIA","TLBIA",0);
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ static void fregSpill(RegInfo& RI, X64Reg reg)
|
||||
// (TODO: if we could lock RCX here too then we could allocate it - needed for
|
||||
// shifts)
|
||||
|
||||
// 64-bit - calling conventions differ between linux & windows, so...
|
||||
// 64-bit - calling conventions differ between Linux & Windows, so...
|
||||
#ifdef _WIN32
|
||||
static const X64Reg RegAllocOrder[] = {RSI, RDI, R12, R13, R14, R8, R9, R10, R11};
|
||||
#else
|
||||
|
@ -220,7 +220,7 @@ protected:
|
||||
choice_backend->Disable();
|
||||
label_backend->Disable();
|
||||
|
||||
//D3D only
|
||||
// D3D only
|
||||
if (vconfig.backend_info.Adapters.size())
|
||||
{
|
||||
choice_adapter->Disable();
|
||||
@ -228,7 +228,7 @@ protected:
|
||||
}
|
||||
|
||||
#ifndef __APPLE__
|
||||
// This isn't supported on OSX.
|
||||
// This isn't supported on OS X.
|
||||
|
||||
choice_display_resolution->Disable();
|
||||
label_display_resolution->Disable();
|
||||
|
@ -328,9 +328,9 @@ static void InitDriverInfo()
|
||||
int glrelease = 0;
|
||||
int major = 0;
|
||||
int minor = 0;
|
||||
// TODO: this is known to be broken on windows
|
||||
// nvidia seems to have removed their driver version from this string, so we can't get it.
|
||||
// hopefully we'll never have to workaround nvidia bugs
|
||||
// TODO: this is known to be broken on Windows
|
||||
// Nvidia seems to have removed their driver version from this string, so we can't get it.
|
||||
// hopefully we'll never have to workaround Nvidia bugs
|
||||
sscanf(g_ogl_config.gl_version, "%d.%d.%d NVIDIA %d.%d", &glmajor, &glminor, &glrelease, &major, &minor);
|
||||
version = 100*major + minor;
|
||||
}
|
||||
@ -554,7 +554,7 @@ Renderer::Renderer()
|
||||
// It also isn't useful as we don't render anything to the default framebuffer.
|
||||
// We also try to get a non-msaa fb, so this only happens when forced by the driver.
|
||||
PanicAlert("MSAA on default framebuffer isn't supported.\n"
|
||||
"Please avoid forcing dolphin to use MSAA by the driver.\n"
|
||||
"Please avoid forcing Dolphin to use MSAA by the driver.\n"
|
||||
"%d samples on default framebuffer found.", samples);
|
||||
bSuccess = false;
|
||||
}
|
||||
|
@ -36,9 +36,9 @@ StreamBuffer::~StreamBuffer()
|
||||
glDeleteBuffers(1, &m_buffer);
|
||||
}
|
||||
|
||||
/* Shared synchronisation code for ring buffers
|
||||
/* Shared synchronization code for ring buffers
|
||||
*
|
||||
* The next three functions are to create/delete/use the OpenGL synchronisation.
|
||||
* The next three functions are to create/delete/use the OpenGL synchronization.
|
||||
* ARB_sync (OpenGL 3.2) is used and required.
|
||||
*
|
||||
* To reduce overhead, the complete buffer is splitted up into SYNC_POINTS chunks.
|
||||
@ -52,11 +52,11 @@ StreamBuffer::~StreamBuffer()
|
||||
*
|
||||
* So on alloc, we have to wait for all slots between m_free_iterator and m_iterator (and set m_free_iterator to m_iterator afterwards).
|
||||
*
|
||||
* We also assume that this buffer is accessed by the gpu between the Unmap and Map function,
|
||||
* We also assume that this buffer is accessed by the GPU between the Unmap and Map function,
|
||||
* so we may create the fences on the start of mapping.
|
||||
* Some here, new fences for the chunks between m_used_iterator and m_iterator (also update m_used_iterator).
|
||||
*
|
||||
* As ring buffers have an ugly behavoir on rollover, have fun to read this code ;)
|
||||
* As ring buffers have an ugly behavior on rollover, have fun to read this code ;)
|
||||
*/
|
||||
|
||||
void StreamBuffer::CreateFences()
|
||||
@ -116,7 +116,7 @@ void StreamBuffer::AllocMemory(u32 size)
|
||||
}
|
||||
}
|
||||
|
||||
/* The usual way to stream data to the gpu.
|
||||
/* The usual way to stream data to the GPU.
|
||||
* Described here: https://www.opengl.org/wiki/Buffer_Object_Streaming#Unsynchronized_buffer_mapping
|
||||
* Just do unsync appends until the buffer is full.
|
||||
* When it's full, orphan (alloc a new buffer and free the old one)
|
||||
@ -159,7 +159,7 @@ public:
|
||||
/* A modified streaming way without reallocation
|
||||
* This one fixes the reallocation overhead of the MapAndOrphan one.
|
||||
* So it alloc a ring buffer on initialization.
|
||||
* But with this limited ressource, we have to care about the cpu-gpu distance.
|
||||
* But with this limited resource, we have to care about the CPU-GPU distance.
|
||||
* Else this fifo may overflow.
|
||||
* So we had traded orphan vs syncing.
|
||||
*/
|
||||
@ -194,9 +194,9 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/* Streaming fifo without mapping ovearhead.
|
||||
/* Streaming fifo without mapping overhead.
|
||||
* This one usually requires ARB_buffer_storage (OpenGL 4.4).
|
||||
* And is usually not available on OpenGL3 gpus.
|
||||
* And is usually not available on OpenGL3 GPUs.
|
||||
*
|
||||
* ARB_buffer_storage allows us to render from a mapped buffer.
|
||||
* So we map it persistently in the initialization.
|
||||
@ -250,7 +250,7 @@ public:
|
||||
* Another streaming fifo without mapping overhead.
|
||||
* As we can't orphan without mapping, we have to sync.
|
||||
*
|
||||
* This one uses AMD_pinned_memory which is available on all AMD gpus.
|
||||
* This one uses AMD_pinned_memory which is available on all AMD GPUs.
|
||||
* OpenGL 4.4 drivers should use BufferStorage.
|
||||
*/
|
||||
class PinnedMemory : public StreamBuffer
|
||||
@ -371,7 +371,7 @@ StreamBuffer* StreamBuffer::Create(u32 type, u32 size)
|
||||
// Prefer the syncing buffers over the orphaning one
|
||||
if (g_ogl_config.bSupportsGLSync)
|
||||
{
|
||||
// pinned memory is much faster than buffer storage on amd cards
|
||||
// pinned memory is much faster than buffer storage on AMD cards
|
||||
if (g_ogl_config.bSupportsGLPinnedMemory &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_BROKENPINNEDMEMORY) && type == GL_ELEMENT_ARRAY_BUFFER))
|
||||
return new PinnedMemory(type, size);
|
||||
@ -382,7 +382,7 @@ StreamBuffer* StreamBuffer::Create(u32 type, u32 size)
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_INTELBROKENBUFFERSTORAGE) && type == GL_ELEMENT_ARRAY_BUFFER))
|
||||
return new BufferStorage(type, size);
|
||||
|
||||
// don't fall back to MapAnd* for nvidia drivers
|
||||
// don't fall back to MapAnd* for Nvidia drivers
|
||||
if (DriverDetails::HasBug(DriverDetails::BUG_BROKENUNSYNCMAPPING))
|
||||
return new BufferSubData(type, size);
|
||||
|
||||
|
@ -21,7 +21,7 @@ public:
|
||||
|
||||
/* This mapping function will return a pair of:
|
||||
* - the pointer to the mapped buffer
|
||||
* - the offset into the real gpu buffer (always multiple of stride)
|
||||
* - the offset into the real GPU buffer (always multiple of stride)
|
||||
* On mapping, the maximum of size for allocation has to be set.
|
||||
* The size really pushed into this fifo only has to be known on Unmapping.
|
||||
* Mapping invalidates the current buffer content,
|
||||
|
@ -135,8 +135,8 @@ static void InitBackendInfo()
|
||||
g_Config.backend_info.APIType = API_OPENGL;
|
||||
g_Config.backend_info.bUseMinimalMipCount = false;
|
||||
g_Config.backend_info.bSupportsExclusiveFullscreen = false;
|
||||
//g_Config.backend_info.bSupportsDualSourceBlend = true; // is gpu dependent and must be set in renderer
|
||||
//g_Config.backend_info.bSupportsEarlyZ = true; // is gpu dependent and must be set in renderer
|
||||
//g_Config.backend_info.bSupportsDualSourceBlend = true; // is GPU dependent and must be set in renderer
|
||||
//g_Config.backend_info.bSupportsEarlyZ = true; // is GPU dependent and must be set in renderer
|
||||
g_Config.backend_info.bSupportsOversizedViewports = true;
|
||||
g_Config.backend_info.bSupportsGeometryShaders = true;
|
||||
g_Config.backend_info.bSupports3DVision = false;
|
||||
|
@ -34,7 +34,7 @@ static u8 lastPrimCmd;
|
||||
void DoState(PointerWrap &p)
|
||||
{
|
||||
p.Do(minCommandSize);
|
||||
// Not sure what is wrong with this. Something(s) in here is causing dolphin to crash/hang when loading states saved from another run of dolphin. Doesn't seem too important anyway...
|
||||
// Not sure what is wrong with this. Something(s) in here is causing Dolphin to crash/hang when loading states saved from another run of Dolphin. Doesn't seem too important anyway...
|
||||
//vertexLoader.DoState(p);
|
||||
p.Do(readOpcode);
|
||||
p.Do(inObjectStream);
|
||||
|
@ -163,7 +163,7 @@ void SetupUnit::SetupPoint()
|
||||
|
||||
void SetupUnit::DoState(PointerWrap &p)
|
||||
{
|
||||
// TODO: some or all of this is making the save states stop working once dolphin is closed...sometimes (usually)
|
||||
// TODO: some or all of this is making the save states stop working once Dolphin is closed...sometimes (usually)
|
||||
// I have no idea what specifically is wrong, or if this is even important. Disabling it doesn't seem to make any noticible difference...
|
||||
/* p.Do(m_PrimType);
|
||||
p.Do(m_VertexCounter);
|
||||
|
@ -97,10 +97,10 @@ namespace DriverDetails
|
||||
// Started Version: ?
|
||||
// Ended Version: 13.9 working for me (neobrain).
|
||||
// Affected OS: Linux
|
||||
// Pinned memory is disabled for index buffer as the amd driver (the only one with pinned memory support) seems
|
||||
// Pinned memory is disabled for index buffer as the AMD driver (the only one with pinned memory support) seems
|
||||
// to be broken. We just get flickering/black rendering when using pinned memory here -- degasus - 2013/08/20
|
||||
// This bug only happens when paired with base_vertex.
|
||||
// Please see issue #6105 on google code. Let's hope buffer storage solves this issues.
|
||||
// Please see issue #6105 on Google Code. Let's hope buffer storage solves this issues.
|
||||
// TODO: Detect broken drivers.
|
||||
BUG_BROKENPINNEDMEMORY,
|
||||
// Bug: Entirely broken UBOs
|
||||
@ -134,7 +134,7 @@ namespace DriverDetails
|
||||
// If a shader includes a textureSize function call then the shader compiler will call abort()
|
||||
BUG_BROKENTEXTURESIZE,
|
||||
// Bug: ARB_buffer_storage doesn't work with ARRAY_BUFFER type streams
|
||||
// Affected devices: Geforce 4xx+
|
||||
// Affected devices: GeForce 4xx+
|
||||
// Started Version: -1
|
||||
// Ended Version: 332.21
|
||||
// The buffer_storage streaming method is required for greater speed gains in our buffer streaming
|
||||
@ -150,14 +150,14 @@ namespace DriverDetails
|
||||
// Intel HD 4000 series isn't affected by the bug
|
||||
BUG_PRIMITIVERESTART,
|
||||
// Bug: unsync mapping doesn't work fine
|
||||
// Affected devices: nvidia driver
|
||||
// Affected devices: Nvidia driver
|
||||
// Started Version: -1
|
||||
// Ended Version: -1
|
||||
// The nvidia driver (both windows + linux) doesn't like unsync mapping performance wise.
|
||||
// Because of their threaded behavoir, they seem not to handle unsync mapping complete unsync,
|
||||
// The Nvidia driver (both Windows + Linux) doesn't like unsync mapping performance wise.
|
||||
// Because of their threaded behavior, they seem not to handle unsync mapping complete unsync,
|
||||
// in fact, they serialize the driver which adds a much bigger overhead.
|
||||
// Workaround: Use BufferSubData
|
||||
// TODO: some windows AMD driver/gpu combination seems also affected
|
||||
// TODO: some Windows AMD driver/GPU combination seems also affected
|
||||
// but as they all support pinned memory, it doesn't matter
|
||||
BUG_BROKENUNSYNCMAPPING,
|
||||
// Bug: Intel's Window driver broke buffer_storage with GL_ELEMENT_ARRAY_BUFFER
|
||||
|
@ -924,7 +924,7 @@ static inline void WriteTevRegular(T& out, const char* components, int bias, int
|
||||
};
|
||||
|
||||
// Regular TEV stage: (d + bias + lerp(a,b,c)) * scale
|
||||
// The GC/Wii GPU uses a very sophisticated algorithm for scale-lerping:
|
||||
// The GameCube/Wii GPU uses a very sophisticated algorithm for scale-lerping:
|
||||
// - c is scaled from 0..255 to 0..256, which allows dividing the result by 256 instead of 255
|
||||
// - if scale is bigger than one, it is moved inside the lerp calculation for increased accuracy
|
||||
// - a rounding bias is added before dividing by 256
|
||||
|
@ -5,7 +5,7 @@
|
||||
// ---------------------------------------------------------------------------------------------
|
||||
// GC graphics pipeline
|
||||
// ---------------------------------------------------------------------------------------------
|
||||
// 3d commands are issued through the fifo. The gpu draws to the 2MB EFB.
|
||||
// 3d commands are issued through the fifo. The GPU draws to the 2MB EFB.
|
||||
// The efb can be copied back into ram in two forms: as textures or as XFB.
|
||||
// The XFB is the region in RAM that the VI chip scans out to the television.
|
||||
// So, after all rendering to EFB is done, the image is copied into one of two XFBs in RAM.
|
||||
|
@ -5,7 +5,7 @@
|
||||
// ---------------------------------------------------------------------------------------------
|
||||
// GC graphics pipeline
|
||||
// ---------------------------------------------------------------------------------------------
|
||||
// 3d commands are issued through the fifo. The gpu draws to the 2MB EFB.
|
||||
// 3d commands are issued through the fifo. The GPU draws to the 2MB EFB.
|
||||
// The efb can be copied back into ram in two forms: as textures or as XFB.
|
||||
// The XFB is the region in RAM that the VI chip scans out to the television.
|
||||
// So, after all rendering to EFB is done, the image is copied into one of two XFBs in RAM.
|
||||
|
@ -35,12 +35,12 @@ clr15
|
||||
;step 1: context setup
|
||||
call send_back_40
|
||||
|
||||
call 0x807e ; loop until dsp->cpu mailbox is empty
|
||||
call 0x807e ; loop until DSP->CPU mailbox is empty
|
||||
si @DMBH, #0xdcd1
|
||||
si @DMBL, #0x0000 ; sendmail 0xdcd10000
|
||||
si @DIRQ, #0x0001
|
||||
|
||||
; wait for cpu mail == 0xabbaxxxx
|
||||
; wait for CPU mail == 0xabbaxxxx
|
||||
wait_cpu_init:
|
||||
call 0x8078
|
||||
lrs $AC0.L, @CMBL
|
||||
@ -59,22 +59,22 @@ lri $IX3, #0x0000 ; there will be no ucode/iram upload
|
||||
lri $AR0, #do_main ; return addr after dram upload
|
||||
jmp 0x80bc ; DRAM upload !!
|
||||
; $AX0.H-$AX0.L - CPU(PPC) addr = mail & 0x0fffffff
|
||||
; upload data from mainmem to dsp dram and jump to 0x41 after that
|
||||
; upload data from mainmem to DSP dram and jump to 0x41 after that
|
||||
|
||||
; ucode addr 0x0041
|
||||
do_main:
|
||||
;step 2: got data from cpu, before going into BigCrazyFunction
|
||||
;step 2: got data from CPU, before going into BigCrazyFunction
|
||||
call send_back
|
||||
|
||||
call BigCrazyFunction ; <<------------- main crap is here!!!!!!!!!
|
||||
call 0x807e ; loop until dsp->cpu mailbox is empty
|
||||
call 0x807e ; loop until DSP->CPU mailbox is empty
|
||||
|
||||
si @DMBH, #0xdcd1
|
||||
si @DMBL, #0x0003 ; sendmail 0xdcd10003 (aka... calc is over, result is in main mem now)
|
||||
si @DIRQ, #0x0001
|
||||
set40
|
||||
|
||||
; wait for cpu to tell us what to do after calc'ing
|
||||
; wait for CPU to tell us what to do after calc'ing
|
||||
wait_cpu_end:
|
||||
call 0x8078
|
||||
cmpi $AC0.M, #0xcdd1
|
||||
@ -82,16 +82,16 @@ jnz wait_cpu_end
|
||||
|
||||
lrs $AC0.M, @CMBL
|
||||
cmpi $AC0.M, #0x0001
|
||||
jz PrepareBootUcode ; if cpu->dsp mail was 0xcdd10001 -> 005e_PrepareBootUcode()
|
||||
jz PrepareBootUcode ; if CPU->DSP mail was 0xcdd10001 -> 005e_PrepareBootUcode()
|
||||
|
||||
cmpi $AC0.M, #0x0002
|
||||
jz 0x8000 ; if cpu->dsp mail was 0xcdd10002 -> dsp reset ( jmp to irom(0x8000))
|
||||
jz 0x8000 ; if CPU->DSP mail was 0xcdd10002 -> DSP reset ( jmp to irom(0x8000))
|
||||
|
||||
; THIS IS CUSTOM CODE
|
||||
cmpi $AC0.M, #0xbabe
|
||||
jz end_of_test ; wait for dsp to be reset by cpu
|
||||
jz end_of_test ; wait for DSP to be reset by CPU
|
||||
|
||||
jmp wait_cpu_end ; wait for next mail from cpu
|
||||
jmp wait_cpu_end ; wait for next mail from CPU
|
||||
halt
|
||||
|
||||
|
||||
@ -574,21 +574,21 @@ call send_back
|
||||
|
||||
Unk_01a5:
|
||||
; this is where result is written to main memory
|
||||
; dsp mem 0x20-0x23 (8 bytes) are written back (DMA limitation),
|
||||
; DSP mem 0x20-0x23 (8 bytes) are written back (DMA limitation),
|
||||
; but only values @22 and @23 were modified (result is 32bit)
|
||||
sr @0x0023, $AC0.M
|
||||
call send_back
|
||||
lr $AX0.H, @0x0008 ; cpu addr high
|
||||
lr $AX0.H, @0x0008 ; CPU addr high
|
||||
call send_back
|
||||
lr $AX0.L, @0x0009 ; cpu addr low
|
||||
lr $AX0.L, @0x0009 ; CPU addr low
|
||||
call send_back
|
||||
lri $AX1.H, #0x0020 ; dsp addr
|
||||
lri $AX1.H, #0x0020 ; DSP addr
|
||||
call send_back
|
||||
lri $AX1.L, #0x0008 ; length
|
||||
call send_back
|
||||
lri $IX3, #0x0000 ; there will be no iram dma
|
||||
call send_back
|
||||
call 0x808b ; dram->cpu <<<--- important!!
|
||||
call 0x808b ; dram->CPU <<<--- important!!
|
||||
call send_back
|
||||
ret
|
||||
; }
|
||||
|
@ -353,7 +353,7 @@ void handle_dsp_mail(void)
|
||||
}
|
||||
else if (mail == 0x8888dead)
|
||||
{
|
||||
// Send memory dump (dsp dram from someone's cube?)
|
||||
// Send memory dump (DSP dram from someone's cube?)
|
||||
// not really sure why this is important - I guess just to try to keep tests predictable
|
||||
u16* tmpBuf = (u16 *)MEM_VIRTUAL_TO_PHYSICAL(mem_dump);
|
||||
|
||||
@ -363,7 +363,7 @@ void handle_dsp_mail(void)
|
||||
}
|
||||
else if (mail == 0x8888beef)
|
||||
{
|
||||
// Provide register base to dsp (if using dsp_base.inc, it will dma them to the correct place)
|
||||
// Provide register base to DSP (if using dsp_base.inc, it will dma them to the correct place)
|
||||
while (real_dsp.CheckMailTo());
|
||||
real_dsp.SendMailTo((u32)dspbufP);
|
||||
while (real_dsp.CheckMailTo());
|
||||
@ -415,7 +415,7 @@ void handle_dsp_mail(void)
|
||||
}
|
||||
else if (mail == 0xdcd10003) // DSP_DONE
|
||||
{
|
||||
real_dsp.SendMailTo(0xcdd1babe); // custom mail to tell dsp to halt (calls end_of_test)
|
||||
real_dsp.SendMailTo(0xcdd1babe); // custom mail to tell DSP to halt (calls end_of_test)
|
||||
while (real_dsp.CheckMailTo());
|
||||
|
||||
DCInvalidateRange(SecParams_out, sizeof(SecParams_out));
|
||||
|
@ -70,7 +70,7 @@
|
||||
// This numeral indicates the "minimum system required" to run the resulting
|
||||
// program. Dolphin targets Vista+, so it should be 0x0600. However in practice,
|
||||
// _WIN32_WINNT just removes up-level API declarations from headers. This is a
|
||||
// problem for XAudio2 and XInput, where dolphin expects to compile against the
|
||||
// problem for XAudio2 and XInput, where Dolphin expects to compile against the
|
||||
// Win8+ versions of their headers. So while we really need Vista+ level of
|
||||
// support, we declare Win8+ here globally. If this becomes a problem, the
|
||||
// higher declaration can be contained to just the XAudio2/XInput related code.
|
||||
@ -78,7 +78,7 @@
|
||||
|
||||
// Exclude rarely-used stuff from Windows headers
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
// Don't include windows min/max definitions. They would conflict with the STL.
|
||||
// Don't include Windows min/max definitions. They would conflict with the STL.
|
||||
#define NOMINMAX
|
||||
#include <Windows.h>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user