Merge pull request #228 from delroth/trailing-whitespaces
Remove all trailing whitespaces from our codebase.
This commit is contained in:
commit
47d96e449a
|
@ -24,7 +24,7 @@
|
||||||
// This shouldn't be a global, at least not here.
|
// This shouldn't be a global, at least not here.
|
||||||
SoundStream *soundStream = nullptr;
|
SoundStream *soundStream = nullptr;
|
||||||
|
|
||||||
namespace AudioCommon
|
namespace AudioCommon
|
||||||
{
|
{
|
||||||
SoundStream *InitSoundStream(CMixer *mixer, void *hWnd)
|
SoundStream *InitSoundStream(CMixer *mixer, void *hWnd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,7 +59,7 @@ private:
|
||||||
public:
|
public:
|
||||||
XAudio2_7(CMixer *mixer);
|
XAudio2_7(CMixer *mixer);
|
||||||
virtual ~XAudio2_7();
|
virtual ~XAudio2_7();
|
||||||
|
|
||||||
virtual bool Start();
|
virtual bool Start();
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Licensed under GPLv2
|
// Licensed under GPLv2
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@ struct ArraySizeImpl : public std::extent<T>
|
||||||
#define b32(x) (b16(x) | (b16(x) >>16) )
|
#define b32(x) (b16(x) | (b16(x) >>16) )
|
||||||
#define ROUND_UP_POW2(x) (b32(x - 1) + 1)
|
#define ROUND_UP_POW2(x) (b32(x - 1) + 1)
|
||||||
|
|
||||||
#ifndef __GNUC_PREREQ
|
#ifndef __GNUC_PREREQ
|
||||||
#define __GNUC_PREREQ(a, b) 0
|
#define __GNUC_PREREQ(a, b) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined __GNUC__ && !__GNUC_PREREQ(4,9)) && \
|
#if (defined __GNUC__ && !__GNUC_PREREQ(4,9)) && \
|
||||||
|
@ -188,7 +188,7 @@ inline u32 swap24(const u8* _data) {return (_data[0] << 16) | (_data[1] << 8) |
|
||||||
inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);}
|
inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);}
|
||||||
inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);}
|
inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);}
|
||||||
inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);}
|
inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);}
|
||||||
#elif _M_ARM_32
|
#elif _M_ARM_32
|
||||||
inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;}
|
inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;}
|
||||||
inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;}
|
inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;}
|
||||||
inline u64 swap64(u64 _data) {return ((u64)swap32(_data) << 32) | swap32(_data >> 32);}
|
inline u64 swap64(u64 _data) {return ((u64)swap32(_data) << 32) | swap32(_data >> 32);}
|
||||||
|
|
|
@ -145,6 +145,6 @@ private:
|
||||||
Section* GetSection(const std::string& section);
|
Section* GetSection(const std::string& section);
|
||||||
std::string* GetLine(const std::string& section, const std::string& key);
|
std::string* GetLine(const std::string& section, const std::string& key);
|
||||||
void CreateSection(const std::string& section);
|
void CreateSection(const std::string& section);
|
||||||
|
|
||||||
static const std::string& NULL_STRING;
|
static const std::string& NULL_STRING;
|
||||||
};
|
};
|
||||||
|
|
|
@ -128,7 +128,7 @@ void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,
|
||||||
|
|
||||||
std::string msg = StringFromFormat("%s %s:%u %c[%s]: %s\n",
|
std::string msg = StringFromFormat("%s %s:%u %c[%s]: %s\n",
|
||||||
Common::Timer::GetTimeFormatted().c_str(),
|
Common::Timer::GetTimeFormatted().c_str(),
|
||||||
file, line,
|
file, line,
|
||||||
LogTypes::LOG_LEVEL_TO_CHAR[(int)level],
|
LogTypes::LOG_LEVEL_TO_CHAR[(int)level],
|
||||||
log->GetShortName(), temp);
|
log->GetShortName(), temp);
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
|
|
|
@ -52,7 +52,7 @@ void* AllocateExecutableMemory(size_t size, bool low)
|
||||||
|
|
||||||
// printf("Mapped executable memory at %p (size %ld)\n", ptr,
|
// printf("Mapped executable memory at %p (size %ld)\n", ptr,
|
||||||
// (unsigned long)size);
|
// (unsigned long)size);
|
||||||
|
|
||||||
#if defined(__FreeBSD__)
|
#if defined(__FreeBSD__)
|
||||||
if (ptr == MAP_FAILED)
|
if (ptr == MAP_FAILED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace Common
|
||||||
std::string GetTicketFileName(u64 _titleID)
|
std::string GetTicketFileName(u64 _titleID)
|
||||||
{
|
{
|
||||||
return StringFromFormat("%sticket/%08x/%08x.tik",
|
return StringFromFormat("%sticket/%08x/%08x.tik",
|
||||||
File::GetUserPath(D_WIIUSER_IDX).c_str(),
|
File::GetUserPath(D_WIIUSER_IDX).c_str(),
|
||||||
(u32)(_titleID >> 32), (u32)_titleID);
|
(u32)(_titleID >> 32), (u32)_titleID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ std::string GetTMDFileName(u64 _titleID)
|
||||||
std::string GetTitleContentPath(u64 _titleID)
|
std::string GetTitleContentPath(u64 _titleID)
|
||||||
{
|
{
|
||||||
return StringFromFormat("%stitle/%08x/%08x/content/",
|
return StringFromFormat("%stitle/%08x/%08x/content/",
|
||||||
File::GetUserPath(D_WIIUSER_IDX).c_str(),
|
File::GetUserPath(D_WIIUSER_IDX).c_str(),
|
||||||
(u32)(_titleID >> 32), (u32)_titleID);
|
(u32)(_titleID >> 32), (u32)_titleID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ public:
|
||||||
// Key used to encrypt/decrypt setting.txt contents
|
// Key used to encrypt/decrypt setting.txt contents
|
||||||
INITIAL_SEED = 0x73B5DBFA
|
INITIAL_SEED = 0x73B5DBFA
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSetting(const std::string& key, const std::string& value);
|
void AddSetting(const std::string& key, const std::string& value);
|
||||||
|
|
||||||
const u8 *GetData() const;
|
const u8 *GetData() const;
|
||||||
|
|
|
@ -59,8 +59,8 @@ public:
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lk(m_mutex);
|
std::unique_lock<std::mutex> lk(m_mutex);
|
||||||
// no other action required, since wait loops on
|
// no other action required, since wait loops on
|
||||||
// the predicate and any lingering signal will get
|
// the predicate and any lingering signal will get
|
||||||
// cleared on the first iteration
|
// cleared on the first iteration
|
||||||
is_set = false;
|
is_set = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,7 +171,7 @@ std::string Timer::GetTimeFormatted()
|
||||||
{
|
{
|
||||||
time_t sysTime;
|
time_t sysTime;
|
||||||
time(&sysTime);
|
time(&sysTime);
|
||||||
|
|
||||||
struct tm * gmTime = localtime(&sysTime);
|
struct tm * gmTime = localtime(&sysTime);
|
||||||
|
|
||||||
char tmp[13];
|
char tmp[13];
|
||||||
|
|
|
@ -210,7 +210,7 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg,
|
||||||
#if _M_X86_64
|
#if _M_X86_64
|
||||||
u64 ripAddr = (u64)emit->GetCodePtr() + 4 + extraBytes;
|
u64 ripAddr = (u64)emit->GetCodePtr() + 4 + extraBytes;
|
||||||
s64 distance = (s64)offset - (s64)ripAddr;
|
s64 distance = (s64)offset - (s64)ripAddr;
|
||||||
_assert_msg_(DYNA_REC,
|
_assert_msg_(DYNA_REC,
|
||||||
(distance < 0x80000000LL &&
|
(distance < 0x80000000LL &&
|
||||||
distance >= -0x80000000LL) ||
|
distance >= -0x80000000LL) ||
|
||||||
!warn_64bit_offset,
|
!warn_64bit_offset,
|
||||||
|
|
|
@ -200,7 +200,7 @@ inline OpArg ImmPtr(const void* imm) {return Imm64((u64)imm);}
|
||||||
inline OpArg ImmPtr(const void* imm) {return Imm32((u32)imm);}
|
inline OpArg ImmPtr(const void* imm) {return Imm32((u32)imm);}
|
||||||
#endif
|
#endif
|
||||||
inline u32 PtrOffset(void* ptr, void* base) {
|
inline u32 PtrOffset(void* ptr, void* base) {
|
||||||
#ifdef _ARCH_64
|
#ifdef _ARCH_64
|
||||||
s64 distance = (s64)ptr-(s64)base;
|
s64 distance = (s64)ptr-(s64)base;
|
||||||
if (distance >= 0x80000000LL ||
|
if (distance >= 0x80000000LL ||
|
||||||
distance < -0x80000000LL) {
|
distance < -0x80000000LL) {
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
#include "DiscIO/Volume.h"
|
#include "DiscIO/Volume.h"
|
||||||
using DiscIO::IVolume;
|
using DiscIO::IVolume;
|
||||||
|
|
||||||
typedef struct CountrySetting
|
typedef struct CountrySetting
|
||||||
{
|
{
|
||||||
const std::string area;
|
const std::string area;
|
||||||
const std::string video;
|
const std::string video;
|
||||||
const std::string game;
|
const std::string game;
|
||||||
const std::string code;
|
const std::string code;
|
||||||
} CountrySetting;
|
} CountrySetting;
|
||||||
|
|
||||||
class CBoot
|
class CBoot
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -171,9 +171,9 @@ bool CBoot::SetupWiiMemory(IVolume::ECountry country)
|
||||||
{IVolume::COUNTRY_TAIWAN, {"JPN", "NTSC", "JP", "LJ"}}
|
{IVolume::COUNTRY_TAIWAN, {"JPN", "NTSC", "JP", "LJ"}}
|
||||||
};
|
};
|
||||||
auto entryPos = country_settings.find(country);
|
auto entryPos = country_settings.find(country);
|
||||||
const CountrySetting& country_setting =
|
const CountrySetting& country_setting =
|
||||||
(entryPos != country_settings.end()) ?
|
(entryPos != country_settings.end()) ?
|
||||||
entryPos->second :
|
entryPos->second :
|
||||||
SETTING_EUROPE; //Default to EUROPE
|
SETTING_EUROPE; //Default to EUROPE
|
||||||
|
|
||||||
SettingsHandler gen;
|
SettingsHandler gen;
|
||||||
|
@ -210,7 +210,7 @@ bool CBoot::SetupWiiMemory(IVolume::ECountry country)
|
||||||
gen.AddSetting("SERNO", serno);
|
gen.AddSetting("SERNO", serno);
|
||||||
gen.AddSetting("VIDEO", country_setting.video);
|
gen.AddSetting("VIDEO", country_setting.video);
|
||||||
gen.AddSetting("GAME", country_setting.game);
|
gen.AddSetting("GAME", country_setting.game);
|
||||||
|
|
||||||
File::CreateFullPath(settings_Filename);
|
File::CreateFullPath(settings_Filename);
|
||||||
{
|
{
|
||||||
File::IOFile settingsFileHandle(settings_Filename, "wb");
|
File::IOFile settingsFileHandle(settings_Filename, "wb");
|
||||||
|
@ -225,7 +225,7 @@ bool CBoot::SetupWiiMemory(IVolume::ECountry country)
|
||||||
}
|
}
|
||||||
|
|
||||||
INFO_LOG(BOOT, "Setup Wii Memory...");
|
INFO_LOG(BOOT, "Setup Wii Memory...");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Set hardcoded global variables to Wii memory. These are partly collected from
|
Set hardcoded global variables to Wii memory. These are partly collected from
|
||||||
Wiibrew. These values are needed for the games to function correctly. A few
|
Wiibrew. These values are needed for the games to function correctly. A few
|
||||||
|
|
|
@ -357,9 +357,9 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_)
|
||||||
//if(((((u8*)&wm->m_reg_ext)[0xf0] == 0xaa) || ((u8*)&wm->m_reg_motion_plus)[0xf0] == 0xaa) && rdr->address>>8 < 0xf0) {
|
//if(((((u8*)&wm->m_reg_ext)[0xf0] == 0xaa) || ((u8*)&wm->m_reg_motion_plus)[0xf0] == 0xaa) && rdr->address>>8 < 0xf0) {
|
||||||
|
|
||||||
//if(!wm->GetMotionPlusActive() && ((u8*)&wm->m_reg_ext)[0xf0] == 0xaa && rdr->address>>8 < 0xf0) {
|
//if(!wm->GetMotionPlusActive() && ((u8*)&wm->m_reg_ext)[0xf0] == 0xaa && rdr->address>>8 < 0xf0) {
|
||||||
|
|
||||||
//if(!wm->GetMotionPlusActive() && ((u8*)&wm->m_reg_ext)[0xf0] == 0xaa) {
|
//if(!wm->GetMotionPlusActive() && ((u8*)&wm->m_reg_ext)[0xf0] == 0xaa) {
|
||||||
|
|
||||||
// SWARN_LOG(CONSOLE, "key %s", ArrayToString(((u8*)&wm->m_ext_key), sizeof(wm->m_ext_key), 0, 30).c_str());
|
// SWARN_LOG(CONSOLE, "key %s", ArrayToString(((u8*)&wm->m_ext_key), sizeof(wm->m_ext_key), 0, 30).c_str());
|
||||||
// SWARN_LOG(CONSOLE, "decrypt %s", ArrayToString(rdr->data, rdr->size+1, 0, 30).c_str());
|
// SWARN_LOG(CONSOLE, "decrypt %s", ArrayToString(rdr->data, rdr->size+1, 0, 30).c_str());
|
||||||
// wiimote_decrypt(&wm->m_ext_key, rdr->data, dataReply[2]&0xffff, rdr->size+1);
|
// wiimote_decrypt(&wm->m_ext_key, rdr->data, dataReply[2]&0xffff, rdr->size+1);
|
||||||
|
|
|
@ -299,7 +299,7 @@ void Wiimote::Update()
|
||||||
// Send the report
|
// Send the report
|
||||||
if (!rpt.empty() && m_channel > 0)
|
if (!rpt.empty() && m_channel > 0)
|
||||||
{
|
{
|
||||||
Core::Callback_WiimoteInterruptChannel(index, m_channel,
|
Core::Callback_WiimoteInterruptChannel(index, m_channel,
|
||||||
rpt.data(), (u32)rpt.size());
|
rpt.data(), (u32)rpt.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -400,7 +400,7 @@ void CWII_IPC_HLE_Device_hid::FillOutDevices(u32 BufferOut, u32 BufferOutSize)
|
||||||
for (ic = 0; ic < config->bNumInterfaces; ic++)
|
for (ic = 0; ic < config->bNumInterfaces; ic++)
|
||||||
{
|
{
|
||||||
const struct libusb_interface *interfaceContainer = &config->interface[ic];
|
const struct libusb_interface *interfaceContainer = &config->interface[ic];
|
||||||
|
|
||||||
for (i = 0; i < interfaceContainer->num_altsetting; i++)
|
for (i = 0; i < interfaceContainer->num_altsetting; i++)
|
||||||
{
|
{
|
||||||
const struct libusb_interface_descriptor *interface = &interfaceContainer->altsetting[i];
|
const struct libusb_interface_descriptor *interface = &interfaceContainer->altsetting[i];
|
||||||
|
|
|
@ -408,7 +408,7 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress)
|
||||||
|
|
||||||
case IOCTLV_NCD_GETWIRELESSMACADDRESS:
|
case IOCTLV_NCD_GETWIRELESSMACADDRESS:
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS");
|
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS");
|
||||||
|
|
||||||
u8 address[MAC_ADDRESS_SIZE];
|
u8 address[MAC_ADDRESS_SIZE];
|
||||||
GetMacAddress(address);
|
GetMacAddress(address);
|
||||||
Memory::WriteBigEData(address,
|
Memory::WriteBigEData(address,
|
||||||
|
@ -505,7 +505,7 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress)
|
||||||
// Probably used to disallow certain channels?
|
// Probably used to disallow certain channels?
|
||||||
memcpy(info->country, "US", 2);
|
memcpy(info->country, "US", 2);
|
||||||
info->ntr_allowed_channels = Common::swap16(0xfffe);
|
info->ntr_allowed_channels = Common::swap16(0xfffe);
|
||||||
|
|
||||||
u8 address[MAC_ADDRESS_SIZE];
|
u8 address[MAC_ADDRESS_SIZE];
|
||||||
GetMacAddress(address);
|
GetMacAddress(address);
|
||||||
memcpy(info->mac, address, sizeof(info->mac));
|
memcpy(info->mac, address, sizeof(info->mac));
|
||||||
|
|
|
@ -208,7 +208,7 @@ _SSL_NEW_ERROR:
|
||||||
ssl_free(&ssl->ctx);
|
ssl_free(&ssl->ctx);
|
||||||
|
|
||||||
entropy_free(&ssl->entropy);
|
entropy_free(&ssl->entropy);
|
||||||
|
|
||||||
x509_crt_free(&ssl->cacert);
|
x509_crt_free(&ssl->cacert);
|
||||||
x509_crt_free(&ssl->clicert);
|
x509_crt_free(&ssl->clicert);
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ u8 LanguageBaseAttributeIDList[] = {
|
||||||
0x35, 0x09,
|
0x35, 0x09,
|
||||||
0x09, 0x65, 0x6e,
|
0x09, 0x65, 0x6e,
|
||||||
0x09, 0x00, 0x6a,
|
0x09, 0x00, 0x6a,
|
||||||
0x09, 0x01, 0x00
|
0x09, 0x01, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x09 (checked)
|
// 0x09 (checked)
|
||||||
|
@ -46,7 +46,7 @@ u8 BluetoothProfileDescriptorList[] = {
|
||||||
0x35, 0x08,
|
0x35, 0x08,
|
||||||
0x35, 0x06,
|
0x35, 0x06,
|
||||||
0x19, 0x11, 0x24,
|
0x19, 0x11, 0x24,
|
||||||
0x09, 0x01, 0x00
|
0x09, 0x01, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x0D (checked)
|
// 0x0D (checked)
|
||||||
|
|
|
@ -290,7 +290,7 @@ void Jit64::WriteExit(u32 destination)
|
||||||
linkData.linkStatus = false;
|
linkData.linkStatus = false;
|
||||||
|
|
||||||
// Link opportunity!
|
// Link opportunity!
|
||||||
int block;
|
int block;
|
||||||
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
||||||
{
|
{
|
||||||
// It exists! Joy of joy!
|
// It exists! Joy of joy!
|
||||||
|
|
|
@ -393,7 +393,7 @@ void JitIL::WriteExit(u32 destination)
|
||||||
linkData.linkStatus = false;
|
linkData.linkStatus = false;
|
||||||
|
|
||||||
// Link opportunity!
|
// Link opportunity!
|
||||||
int block;
|
int block;
|
||||||
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
||||||
{
|
{
|
||||||
// It exists! Joy of joy!
|
// It exists! Joy of joy!
|
||||||
|
@ -541,7 +541,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
|
||||||
// Analyze the block, collect all instructions it is made of (including inlining,
|
// Analyze the block, collect all instructions it is made of (including inlining,
|
||||||
// if that is enabled), reorder instructions for optimal performance, and join joinable instructions.
|
// if that is enabled), reorder instructions for optimal performance, and join joinable instructions.
|
||||||
u32 exitAddress = em_address;
|
u32 exitAddress = em_address;
|
||||||
|
|
||||||
u32 merged_addresses[32];
|
u32 merged_addresses[32];
|
||||||
const int capacity_of_merged_addresses = sizeof(merged_addresses) / sizeof(merged_addresses[0]);
|
const int capacity_of_merged_addresses = sizeof(merged_addresses) / sizeof(merged_addresses[0]);
|
||||||
int size_of_merged_addresses = 0;
|
int size_of_merged_addresses = 0;
|
||||||
|
|
|
@ -187,7 +187,7 @@ void JitArm::WriteExit(u32 destination)
|
||||||
linkData.linkStatus = false;
|
linkData.linkStatus = false;
|
||||||
|
|
||||||
// Link opportunity!
|
// Link opportunity!
|
||||||
int block;
|
int block;
|
||||||
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
||||||
{
|
{
|
||||||
// It exists! Joy of joy!
|
// It exists! Joy of joy!
|
||||||
|
|
|
@ -955,7 +955,7 @@ void JitArm::twx(UGeckoInstruction inst)
|
||||||
|
|
||||||
gpr.Flush();
|
gpr.Flush();
|
||||||
fpr.Flush();
|
fpr.Flush();
|
||||||
|
|
||||||
ARMReg RA = gpr.GetReg();
|
ARMReg RA = gpr.GetReg();
|
||||||
ARMReg RB = gpr.GetReg();
|
ARMReg RB = gpr.GetReg();
|
||||||
MOV(RA, inst.TO);
|
MOV(RA, inst.TO);
|
||||||
|
@ -1001,7 +1001,7 @@ void JitArm::twx(UGeckoInstruction inst)
|
||||||
SetJumpTarget(take3);
|
SetJumpTarget(take3);
|
||||||
SetJumpTarget(take4);
|
SetJumpTarget(take4);
|
||||||
SetJumpTarget(take5);
|
SetJumpTarget(take5);
|
||||||
|
|
||||||
LDR(RA, R9, PPCSTATE_OFF(Exceptions));
|
LDR(RA, R9, PPCSTATE_OFF(Exceptions));
|
||||||
MOVI2R(RB, EXCEPTION_PROGRAM); // XXX: Can be optimized
|
MOVI2R(RB, EXCEPTION_PROGRAM); // XXX: Can be optimized
|
||||||
ORR(RA, RA, RB);
|
ORR(RA, RA, RB);
|
||||||
|
|
|
@ -128,7 +128,7 @@ void JitArmIL::WriteExit(u32 destination)
|
||||||
linkData.linkStatus = false;
|
linkData.linkStatus = false;
|
||||||
|
|
||||||
// Link opportunity!
|
// Link opportunity!
|
||||||
int block;
|
int block;
|
||||||
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
if (jo.enableBlocklink && (block = blocks.GetBlockNumberFromStartAddress(destination)) >= 0)
|
||||||
{
|
{
|
||||||
// It exists! Joy of joy!
|
// It exists! Joy of joy!
|
||||||
|
|
|
@ -96,7 +96,7 @@ TODO (in no particular order):
|
||||||
- Scheduling to reduce register pressure: PowerPCcompilers like to push
|
- Scheduling to reduce register pressure: PowerPCcompilers like to push
|
||||||
uses far away from definitions, but it's rather unfriendly to modern
|
uses far away from definitions, but it's rather unfriendly to modern
|
||||||
x86 processors, which are short on registers and extremely good at instruction reordering.
|
x86 processors, which are short on registers and extremely good at instruction reordering.
|
||||||
|
|
||||||
- Common subexpression elimination
|
- Common subexpression elimination
|
||||||
- Optimize load/store of sum using complex addressing (partially implemented)
|
- Optimize load/store of sum using complex addressing (partially implemented)
|
||||||
- Loop optimizations (loop-carried registers, LICM)
|
- Loop optimizations (loop-carried registers, LICM)
|
||||||
|
|
|
@ -189,7 +189,7 @@ void PrintInstructionRunCounts()
|
||||||
GekkoOPInfo *pInst = m_allInstructions[i];
|
GekkoOPInfo *pInst = m_allInstructions[i];
|
||||||
temp.emplace_back(pInst->opname, pInst->runCount);
|
temp.emplace_back(pInst->opname, pInst->runCount);
|
||||||
}
|
}
|
||||||
std::sort(temp.begin(), temp.end(),
|
std::sort(temp.begin(), temp.end(),
|
||||||
[](const OpInfo &a, const OpInfo &b)
|
[](const OpInfo &a, const OpInfo &b)
|
||||||
{
|
{
|
||||||
return a.second > b.second;
|
return a.second > b.second;
|
||||||
|
|
|
@ -143,7 +143,7 @@ void FindFilename(u64 offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string filename = pFileSystem->GetFileName(offset);
|
const std::string filename = pFileSystem->GetFileName(offset);
|
||||||
|
|
||||||
if (filename.empty())
|
if (filename.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace ButtonManager
|
||||||
Button() : m_state(BUTTON_RELEASED) {}
|
Button() : m_state(BUTTON_RELEASED) {}
|
||||||
void SetState(ButtonState state) { m_state = state; }
|
void SetState(ButtonState state) { m_state = state; }
|
||||||
bool Pressed() { return m_state == BUTTON_PRESSED; }
|
bool Pressed() { return m_state == BUTTON_PRESSED; }
|
||||||
|
|
||||||
~Button() {}
|
~Button() {}
|
||||||
};
|
};
|
||||||
class Axis
|
class Axis
|
||||||
|
|
|
@ -119,7 +119,7 @@ void Host_SysMessage(const char *fmt, ...)
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
__android_log_vprint(ANDROID_LOG_INFO, DOLPHIN_TAG, fmt, args);
|
__android_log_vprint(ANDROID_LOG_INFO, DOLPHIN_TAG, fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ std::string GetJString(JNIEnv *env, jstring jstr)
|
||||||
std::string result = "";
|
std::string result = "";
|
||||||
if (!jstr)
|
if (!jstr)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
const char *s = env->GetStringUTFChars(jstr, nullptr);
|
const char *s = env->GetStringUTFChars(jstr, nullptr);
|
||||||
result = s;
|
result = s;
|
||||||
env->ReleaseStringUTFChars(jstr, s);
|
env->ReleaseStringUTFChars(jstr, s);
|
||||||
|
|
|
@ -126,7 +126,7 @@ void Host_SysMessage(const char *fmt, ...)
|
||||||
msg[len - 1] = '\n';
|
msg[len - 1] = '\n';
|
||||||
msg[len] = '\0';
|
msg[len] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "%s", msg);
|
fprintf(stderr, "%s", msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -463,7 +463,7 @@ void CWiiSaveCrypted::do_sig()
|
||||||
|
|
||||||
u32 NG_key_id = 0x6AAB8C59;
|
u32 NG_key_id = 0x6AAB8C59;
|
||||||
|
|
||||||
u8 NG_priv[30] = {
|
u8 NG_priv[30] = {
|
||||||
0, 0xAB, 0xEE, 0xC1, 0xDD, 0xB4, 0xA6, 0x16, 0x6B, 0x70, 0xFD, 0x7E, 0x56, 0x67, 0x70,
|
0, 0xAB, 0xEE, 0xC1, 0xDD, 0xB4, 0xA6, 0x16, 0x6B, 0x70, 0xFD, 0x7E, 0x56, 0x67, 0x70,
|
||||||
0x57, 0x55, 0x27, 0x38, 0xA3, 0x26, 0xC5, 0x46, 0x16, 0xF7, 0x62, 0xC9, 0xED, 0x73, 0xF2
|
0x57, 0x55, 0x27, 0x38, 0xA3, 0x26, 0xC5, 0x46, 0x16, 0xF7, 0x62, 0xC9, 0xED, 0x73, 0xF2
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,7 +37,7 @@ private:
|
||||||
const ButtonManager::ButtonType _index;
|
const ButtonManager::ButtonType _index;
|
||||||
const float _neg;
|
const float _neg;
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool UpdateInput() { return true; }
|
bool UpdateInput() { return true; }
|
||||||
bool UpdateOutput() { return true; }
|
bool UpdateOutput() { return true; }
|
||||||
|
|
|
@ -171,13 +171,13 @@ template<>
|
||||||
void ForceFeedbackDevice::ForceConstant::SetState(const ControlState state)
|
void ForceFeedbackDevice::ForceConstant::SetState(const ControlState state)
|
||||||
{
|
{
|
||||||
const LONG new_val = LONG(10000 * state);
|
const LONG new_val = LONG(10000 * state);
|
||||||
|
|
||||||
LONG &val = params.lMagnitude;
|
LONG &val = params.lMagnitude;
|
||||||
if (val != new_val)
|
if (val != new_val)
|
||||||
{
|
{
|
||||||
val = new_val;
|
val = new_val;
|
||||||
m_state.params = ¶ms; // tells UpdateOutput the state has changed
|
m_state.params = ¶ms; // tells UpdateOutput the state has changed
|
||||||
|
|
||||||
// tells UpdateOutput to either start or stop the force
|
// tells UpdateOutput to either start or stop the force
|
||||||
m_state.size = new_val ? sizeof(params) : 0;
|
m_state.size = new_val ? sizeof(params) : 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Licensed under GPLv2
|
// Licensed under GPLv2
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The OS X Force Feedback API is very similar to the DirectInput API,
|
* The OS X Force Feedback API is very similar to the DirectInput API,
|
||||||
* but it is no longer object-oriented and all prefixes have been changed.
|
* but it is no longer object-oriented and all prefixes have been changed.
|
||||||
*
|
*
|
||||||
|
@ -155,7 +155,7 @@ class FFDeviceAdapter : public IUnknownImpl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FFDeviceObjectReference m_device;
|
FFDeviceObjectReference m_device;
|
||||||
|
|
||||||
FFDeviceAdapter(FFDeviceObjectReference device) : m_device(device) {}
|
FFDeviceAdapter(FFDeviceObjectReference device) : m_device(device) {}
|
||||||
~FFDeviceAdapter() { FFReleaseDevice(m_device); }
|
~FFDeviceAdapter() { FFReleaseDevice(m_device); }
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ public:
|
||||||
// There are only two properties supported
|
// There are only two properties supported
|
||||||
if (property != DIPROP_FFGAIN && property != DIPROP_AUTOCENTER)
|
if (property != DIPROP_FFGAIN && property != DIPROP_AUTOCENTER)
|
||||||
return DIERR_UNSUPPORTED;
|
return DIERR_UNSUPPORTED;
|
||||||
|
|
||||||
// And they are both device properties
|
// And they are both device properties
|
||||||
if (pdiph->dwHow != DIPH_DEVICE)
|
if (pdiph->dwHow != DIPH_DEVICE)
|
||||||
return DIERR_INVALIDPARAM;
|
return DIERR_INVALIDPARAM;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define all constants from ForceFeedbackConstants.h with DirectInput prefixes.
|
* Define all constants from ForceFeedbackConstants.h with DirectInput prefixes.
|
||||||
*
|
*
|
||||||
* No effort was made to confirm if all definitions are actually supported by
|
* No effort was made to confirm if all definitions are actually supported by
|
||||||
|
|
|
@ -86,7 +86,7 @@ void Init(std::vector<Core::Device*>& devices)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XINPUT_CAPABILITIES caps;
|
XINPUT_CAPABILITIES caps;
|
||||||
for (int i = 0; i != 4; ++i)
|
for (int i = 0; i != 4; ++i)
|
||||||
if (ERROR_SUCCESS == PXInputGetCapabilities(i, 0, &caps))
|
if (ERROR_SUCCESS == PXInputGetCapabilities(i, 0, &caps))
|
||||||
|
|
|
@ -1582,7 +1582,7 @@ namespace GLExtensions
|
||||||
const char* extensions = (const char*)glGetString(GL_EXTENSIONS);
|
const char* extensions = (const char*)glGetString(GL_EXTENSIONS);
|
||||||
std::string tmp(extensions);
|
std::string tmp(extensions);
|
||||||
std::istringstream buffer(tmp);
|
std::istringstream buffer(tmp);
|
||||||
|
|
||||||
while (buffer >> tmp)
|
while (buffer >> tmp)
|
||||||
m_extension_list[tmp] = true;
|
m_extension_list[tmp] = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace GLExtensions
|
||||||
// Function for checking if the hardware supports an extension
|
// Function for checking if the hardware supports an extension
|
||||||
// example: if (GLExtensions::Supports("GL_ARB_multi_map"))
|
// example: if (GLExtensions::Supports("GL_ARB_multi_map"))
|
||||||
bool Supports(const std::string& name);
|
bool Supports(const std::string& name);
|
||||||
|
|
||||||
// Returns OpenGL version in format 430
|
// Returns OpenGL version in format 430
|
||||||
u32 Version();
|
u32 Version();
|
||||||
}
|
}
|
||||||
|
|
|
@ -372,7 +372,7 @@ Renderer::Renderer()
|
||||||
g_ogl_config.glsl_version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION);
|
g_ogl_config.glsl_version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION);
|
||||||
|
|
||||||
InitDriverInfo();
|
InitDriverInfo();
|
||||||
|
|
||||||
// check for the max vertex attributes
|
// check for the max vertex attributes
|
||||||
GLint numvertexattribs = 0;
|
GLint numvertexattribs = 0;
|
||||||
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &numvertexattribs);
|
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &numvertexattribs);
|
||||||
|
|
|
@ -39,25 +39,25 @@ StreamBuffer::~StreamBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Shared synchronisation code for ring buffers
|
/* Shared synchronisation 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 synchronisation.
|
||||||
* ARB_sync (OpenGL 3.2) is used and required.
|
* ARB_sync (OpenGL 3.2) is used and required.
|
||||||
*
|
*
|
||||||
* To reduce overhead, the complete buffer is splitted up into SYNC_POINTS chunks.
|
* To reduce overhead, the complete buffer is splitted up into SYNC_POINTS chunks.
|
||||||
* For each of this chunks, there is a fence which checks if this chunk is still in use.
|
* For each of this chunks, there is a fence which checks if this chunk is still in use.
|
||||||
*
|
*
|
||||||
* As our API allows to alloc more memory then it has to use, we have to catch how much is already written.
|
* As our API allows to alloc more memory then it has to use, we have to catch how much is already written.
|
||||||
*
|
*
|
||||||
* m_iterator - writing position
|
* m_iterator - writing position
|
||||||
* m_free_iterator - last position checked if free
|
* m_free_iterator - last position checked if free
|
||||||
* m_used_iterator - last position known to be written
|
* m_used_iterator - last position known to be written
|
||||||
*
|
*
|
||||||
* 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).
|
* 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.
|
* 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).
|
* 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 behavoir on rollover, have fun to read this code ;)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void StreamBuffer::Align(u32 stride)
|
||||||
* Described here: https://www.opengl.org/wiki/Buffer_Object_Streaming#Unsynchronized_buffer_mapping
|
* Described here: https://www.opengl.org/wiki/Buffer_Object_Streaming#Unsynchronized_buffer_mapping
|
||||||
* Just do unsync appends until the buffer is full.
|
* Just do unsync appends until the buffer is full.
|
||||||
* When it's full, orphan (alloc a new buffer and free the old one)
|
* When it's full, orphan (alloc a new buffer and free the old one)
|
||||||
*
|
*
|
||||||
* As reallocation is an overhead, this method isn't as fast as it is known to be.
|
* As reallocation is an overhead, this method isn't as fast as it is known to be.
|
||||||
*/
|
*/
|
||||||
class MapAndOrphan : public StreamBuffer
|
class MapAndOrphan : public StreamBuffer
|
||||||
|
@ -203,14 +203,14 @@ public:
|
||||||
/* Streaming fifo without mapping ovearhead.
|
/* Streaming fifo without mapping ovearhead.
|
||||||
* This one usually requires ARB_buffer_storage (OpenGL 4.4).
|
* 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.
|
* ARB_buffer_storage allows us to render from a mapped buffer.
|
||||||
* So we map it persistently in the initialization.
|
* So we map it persistently in the initialization.
|
||||||
*
|
*
|
||||||
* Unsync mapping sounds like an easy task, but it isn't for threaded drivers.
|
* Unsync mapping sounds like an easy task, but it isn't for threaded drivers.
|
||||||
* So every mapping on current close-source driver _will_ end in
|
* So every mapping on current close-source driver _will_ end in
|
||||||
* at least a round trip time between two threads.
|
* at least a round trip time between two threads.
|
||||||
*
|
*
|
||||||
* As persistently mapped buffer can't use orphaning, we also have to sync.
|
* As persistently mapped buffer can't use orphaning, we also have to sync.
|
||||||
*/
|
*/
|
||||||
class BufferStorage : public StreamBuffer
|
class BufferStorage : public StreamBuffer
|
||||||
|
@ -224,9 +224,9 @@ public:
|
||||||
// COHERENT_BIT is set so we don't have to use a MemoryBarrier on write
|
// COHERENT_BIT is set so we don't have to use a MemoryBarrier on write
|
||||||
// CLIENT_STORAGE_BIT is set since we access the buffer more frequently on the client side then server side
|
// CLIENT_STORAGE_BIT is set since we access the buffer more frequently on the client side then server side
|
||||||
glBufferStorage(m_buffertype, m_size, nullptr,
|
glBufferStorage(m_buffertype, m_size, nullptr,
|
||||||
GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT | GL_CLIENT_STORAGE_BIT);
|
GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT | GL_CLIENT_STORAGE_BIT);
|
||||||
m_pointer = (u8*)glMapBufferRange(m_buffertype, 0, m_size,
|
m_pointer = (u8*)glMapBufferRange(m_buffertype, 0, m_size,
|
||||||
GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
~BufferStorage() {
|
~BufferStorage() {
|
||||||
|
@ -251,7 +251,7 @@ public:
|
||||||
/* --- AMD only ---
|
/* --- AMD only ---
|
||||||
* Another streaming fifo without mapping overhead.
|
* Another streaming fifo without mapping overhead.
|
||||||
* As we can't orphan without mapping, we have to sync.
|
* 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.
|
* OpenGL 4.4 drivers should use BufferStorage.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -40,7 +40,7 @@ protected:
|
||||||
|
|
||||||
const u32 m_buffertype;
|
const u32 m_buffertype;
|
||||||
const size_t m_size;
|
const size_t m_size;
|
||||||
|
|
||||||
size_t m_iterator;
|
size_t m_iterator;
|
||||||
size_t m_used_iterator;
|
size_t m_used_iterator;
|
||||||
size_t m_free_iterator;
|
size_t m_free_iterator;
|
||||||
|
|
|
@ -180,8 +180,8 @@ void Init()
|
||||||
glBindTexture(GL_TEXTURE_2D, s_dstTexture);
|
glBindTexture(GL_TEXTURE_2D, s_dstTexture);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderBufferWidth, renderBufferHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderBufferWidth, renderBufferHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
|
||||||
|
|
||||||
|
|
||||||
FramebufferManager::SetFramebuffer(s_texConvFrameBuffer[0]);
|
FramebufferManager::SetFramebuffer(s_texConvFrameBuffer[0]);
|
||||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, s_dstTexture, 0);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, s_dstTexture, 0);
|
||||||
FramebufferManager::SetFramebuffer(0);
|
FramebufferManager::SetFramebuffer(0);
|
||||||
|
|
|
@ -157,7 +157,7 @@ void DumpDepth(const std::string& filename)
|
||||||
{
|
{
|
||||||
u32 depth = EfbInterface::GetDepth(x, y);
|
u32 depth = EfbInterface::GetDepth(x, y);
|
||||||
// depth to rgba
|
// depth to rgba
|
||||||
*(writePtr++) = depth & 0xff;
|
*(writePtr++) = depth & 0xff;
|
||||||
*(writePtr++) = (depth >> 8) & 0xff;
|
*(writePtr++) = (depth >> 8) & 0xff;
|
||||||
*(writePtr++) = (depth >> 16) & 0xff;
|
*(writePtr++) = (depth >> 16) & 0xff;
|
||||||
*(writePtr++) = 255;
|
*(writePtr++) = 255;
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace SWRenderer
|
||||||
void Init();
|
void Init();
|
||||||
void Prepare();
|
void Prepare();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
|
||||||
void SetScreenshot(const char *_szFilename);
|
void SetScreenshot(const char *_szFilename);
|
||||||
void RenderText(const char* pstr, int left, int top, u32 color);
|
void RenderText(const char* pstr, int left, int top, u32 color);
|
||||||
void DrawDebugText();
|
void DrawDebugText();
|
||||||
|
|
|
@ -516,7 +516,7 @@ void Tev::Draw()
|
||||||
#if ALLOW_TEV_DUMPS
|
#if ALLOW_TEV_DUMPS
|
||||||
if (g_SWVideoConfig.bDumpTevStages)
|
if (g_SWVideoConfig.bDumpTevStages)
|
||||||
{
|
{
|
||||||
u8 stage[4] = {
|
u8 stage[4] = {
|
||||||
IndirectTex[stageNum][TextureSampler::ALP_SMP],
|
IndirectTex[stageNum][TextureSampler::ALP_SMP],
|
||||||
IndirectTex[stageNum][TextureSampler::BLU_SMP],
|
IndirectTex[stageNum][TextureSampler::BLU_SMP],
|
||||||
IndirectTex[stageNum][TextureSampler::GRN_SMP],
|
IndirectTex[stageNum][TextureSampler::GRN_SMP],
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace DriverDetails
|
||||||
const u32 m_os = OS_ALL | OS_ANDROID;
|
const u32 m_os = OS_ALL | OS_ANDROID;
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
const u32 m_os = OS_ALL | OS_OSX;
|
const u32 m_os = OS_ALL | OS_OSX;
|
||||||
#elif __linux__
|
#elif __linux__
|
||||||
const u32 m_os = OS_ALL | OS_LINUX;
|
const u32 m_os = OS_ALL | OS_LINUX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
namespace DriverDetails
|
namespace DriverDetails
|
||||||
{
|
{
|
||||||
// Enum of supported operating systems
|
// Enum of supported operating systems
|
||||||
enum OS
|
enum OS
|
||||||
{
|
{
|
||||||
OS_ALL = (1 << 0),
|
OS_ALL = (1 << 0),
|
||||||
OS_WINDOWS = (1 << 1),
|
OS_WINDOWS = (1 << 1),
|
||||||
|
@ -132,13 +132,13 @@ namespace DriverDetails
|
||||||
// The driver stalls in each instance no matter what you do
|
// The driver stalls in each instance no matter what you do
|
||||||
// Apparently Mali and Adreno share code in this regard since it was wrote by the same person.
|
// Apparently Mali and Adreno share code in this regard since it was wrote by the same person.
|
||||||
BUG_BROKENBUFFERSTREAM,
|
BUG_BROKENBUFFERSTREAM,
|
||||||
// Bug: GLSL ES 3.0 textureSize causes abort
|
// Bug: GLSL ES 3.0 textureSize causes abort
|
||||||
// Affected devices: Adreno a3xx
|
// Affected devices: Adreno a3xx
|
||||||
// Started Version: -1 (Noticed in v53)
|
// Started Version: -1 (Noticed in v53)
|
||||||
// Ended Version: -1
|
// Ended Version: -1
|
||||||
// If a shader includes a textureSize function call then the shader compiler will call abort()
|
// If a shader includes a textureSize function call then the shader compiler will call abort()
|
||||||
BUG_BROKENTEXTURESIZE,
|
BUG_BROKENTEXTURESIZE,
|
||||||
// Bug: ARB_buffer_storage doesn't work with ARRAY_BUFFER type streams
|
// Bug: ARB_buffer_storage doesn't work with ARRAY_BUFFER type streams
|
||||||
// Affected devices: Geforce 4xx+
|
// Affected devices: Geforce 4xx+
|
||||||
// Started Version: -1
|
// Started Version: -1
|
||||||
// Ended Version: 332.21
|
// Ended Version: 332.21
|
||||||
|
@ -165,7 +165,7 @@ namespace DriverDetails
|
||||||
// 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
|
// but as they all support pinned memory, it doesn't matter
|
||||||
BUG_BROKENUNSYNCMAPPING,
|
BUG_BROKENUNSYNCMAPPING,
|
||||||
// Bug: Adreno now rotates the framebuffer on blit a full 180 degrees
|
// Bug: Adreno now rotates the framebuffer on blit a full 180 degrees
|
||||||
// Affected devices: Adreno
|
// Affected devices: Adreno
|
||||||
// Started Version: v53 (dev drivers)
|
// Started Version: v53 (dev drivers)
|
||||||
// Ended Version: -1
|
// Ended Version: -1
|
||||||
|
|
|
@ -752,7 +752,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1.0f;
|
colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1.0f;
|
||||||
ColorMask[0] = ColorMask[3] = 15.0f;
|
ColorMask[0] = ColorMask[3] = 15.0f;
|
||||||
ColorMask[4] = ColorMask[7] = 1.0f / 15.0f;
|
ColorMask[4] = ColorMask[7] = 1.0f / 15.0f;
|
||||||
|
|
||||||
cbufid = 16;
|
cbufid = 16;
|
||||||
if (!efbHasAlpha) {
|
if (!efbHasAlpha) {
|
||||||
ColorMask[3] = 0.0f;
|
ColorMask[3] = 0.0f;
|
||||||
|
@ -762,7 +762,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
break;
|
break;
|
||||||
case 3: // RA8
|
case 3: // RA8
|
||||||
colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1.0f;
|
colmat[0] = colmat[4] = colmat[8] = colmat[15] = 1.0f;
|
||||||
|
|
||||||
cbufid = 18;
|
cbufid = 18;
|
||||||
if (!efbHasAlpha) {
|
if (!efbHasAlpha) {
|
||||||
ColorMask[3] = 0.0f;
|
ColorMask[3] = 0.0f;
|
||||||
|
@ -773,7 +773,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
|
|
||||||
case 7: // A8
|
case 7: // A8
|
||||||
colmat[3] = colmat[7] = colmat[11] = colmat[15] = 1.0f;
|
colmat[3] = colmat[7] = colmat[11] = colmat[15] = 1.0f;
|
||||||
|
|
||||||
cbufid = 20;
|
cbufid = 20;
|
||||||
if (!efbHasAlpha) {
|
if (!efbHasAlpha) {
|
||||||
ColorMask[3] = 0.0f;
|
ColorMask[3] = 0.0f;
|
||||||
|
@ -820,7 +820,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
ColorMask[4] = ColorMask[5] = ColorMask[6] = 1.0f / 31.0f;
|
ColorMask[4] = ColorMask[5] = ColorMask[6] = 1.0f / 31.0f;
|
||||||
ColorMask[3] = 7.0f;
|
ColorMask[3] = 7.0f;
|
||||||
ColorMask[7] = 1.0f / 7.0f;
|
ColorMask[7] = 1.0f / 7.0f;
|
||||||
|
|
||||||
cbufid = 27;
|
cbufid = 27;
|
||||||
if (!efbHasAlpha) {
|
if (!efbHasAlpha) {
|
||||||
ColorMask[3] = 0.0f;
|
ColorMask[3] = 0.0f;
|
||||||
|
@ -830,7 +830,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
break;
|
break;
|
||||||
case 6: // RGBA8
|
case 6: // RGBA8
|
||||||
colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1.0f;
|
colmat[0] = colmat[5] = colmat[10] = colmat[15] = 1.0f;
|
||||||
|
|
||||||
cbufid = 29;
|
cbufid = 29;
|
||||||
if (!efbHasAlpha) {
|
if (!efbHasAlpha) {
|
||||||
ColorMask[3] = 0.0f;
|
ColorMask[3] = 0.0f;
|
||||||
|
|
|
@ -597,8 +597,8 @@ void VertexLoader::CompileVertexTranslator()
|
||||||
if (pFunc == nullptr)
|
if (pFunc == nullptr)
|
||||||
{
|
{
|
||||||
Host_SysMessage(
|
Host_SysMessage(
|
||||||
StringFromFormat("VertexLoader_Normal::GetFunction(%i %i %i %i) returned zero!",
|
StringFromFormat("VertexLoader_Normal::GetFunction(%i %i %i %i) returned zero!",
|
||||||
m_VtxDesc.Normal, m_VtxAttr.NormalFormat,
|
m_VtxDesc.Normal, m_VtxAttr.NormalFormat,
|
||||||
m_VtxAttr.NormalElements, m_VtxAttr.NormalIndex3).c_str());
|
m_VtxAttr.NormalElements, m_VtxAttr.NormalIndex3).c_str());
|
||||||
}
|
}
|
||||||
WriteCall(pFunc);
|
WriteCall(pFunc);
|
||||||
|
|
|
@ -135,7 +135,7 @@ static void ViewportCorrectionMatrix(Matrix44& result)
|
||||||
float intendedY = xfregs.viewport.yOrig + xfregs.viewport.ht - scissorYOff;
|
float intendedY = xfregs.viewport.yOrig + xfregs.viewport.ht - scissorYOff;
|
||||||
float intendedWd = 2.0f * xfregs.viewport.wd;
|
float intendedWd = 2.0f * xfregs.viewport.wd;
|
||||||
float intendedHt = -2.0f * xfregs.viewport.ht;
|
float intendedHt = -2.0f * xfregs.viewport.ht;
|
||||||
|
|
||||||
if (intendedWd < 0.f)
|
if (intendedWd < 0.f)
|
||||||
{
|
{
|
||||||
intendedX += intendedWd;
|
intendedX += intendedWd;
|
||||||
|
@ -152,11 +152,11 @@ static void ViewportCorrectionMatrix(Matrix44& result)
|
||||||
float Y = (intendedY >= 0.f) ? intendedY : 0.f;
|
float Y = (intendedY >= 0.f) ? intendedY : 0.f;
|
||||||
float Wd = (X + intendedWd <= EFB_WIDTH) ? intendedWd : (EFB_WIDTH - X);
|
float Wd = (X + intendedWd <= EFB_WIDTH) ? intendedWd : (EFB_WIDTH - X);
|
||||||
float Ht = (Y + intendedHt <= EFB_HEIGHT) ? intendedHt : (EFB_HEIGHT - Y);
|
float Ht = (Y + intendedHt <= EFB_HEIGHT) ? intendedHt : (EFB_HEIGHT - Y);
|
||||||
|
|
||||||
Matrix44::LoadIdentity(result);
|
Matrix44::LoadIdentity(result);
|
||||||
if (Wd == 0 || Ht == 0)
|
if (Wd == 0 || Ht == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
result.data[4*0+0] = intendedWd / Wd;
|
result.data[4*0+0] = intendedWd / Wd;
|
||||||
result.data[4*0+3] = (intendedWd - 2.f * (X - intendedX)) / Wd - 1.f;
|
result.data[4*0+3] = (intendedWd - 2.f * (X - intendedX)) / Wd - 1.f;
|
||||||
result.data[4*1+1] = intendedHt / Ht;
|
result.data[4*1+1] = intendedHt / Ht;
|
||||||
|
@ -363,7 +363,7 @@ void VertexShaderManager::SetConstants()
|
||||||
dirty = true;
|
dirty = true;
|
||||||
// This is so implementation-dependent that we can't have it here.
|
// This is so implementation-dependent that we can't have it here.
|
||||||
g_renderer->SetViewport();
|
g_renderer->SetViewport();
|
||||||
|
|
||||||
// Update projection if the viewport isn't 1:1 useable
|
// Update projection if the viewport isn't 1:1 useable
|
||||||
if (!g_ActiveConfig.backend_info.bSupportsOversizedViewports)
|
if (!g_ActiveConfig.backend_info.bSupportsOversizedViewports)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue