mirror of
https://github.com/izzy2lost/dolphin.git
synced 2026-06-19 01:16:48 -07:00
Implement proper thread naming on linux. This fixes a segmentation fault with thte wiimote new configuration dialog when a thread was named without first calling ThreadInit.
Also take care of some more eols. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5843 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Vendored
+2
-1
@@ -187,7 +187,8 @@ static int wiiuse_connect_single(struct wiimote_t* wm, char* address) {
|
||||
str2ba(address, &addr.l2_bdaddr);
|
||||
else
|
||||
{
|
||||
bacmp(bdaddr, BDADDR_ANY);
|
||||
if (bacmp(bdaddr, BDADDR_ANY) == 0)
|
||||
return 0;
|
||||
/* use address of device discovered */
|
||||
addr.l2_bdaddr = *bdaddr;
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ bool AlsaSound::AlsaInit()
|
||||
ERROR_LOG(AUDIO, "Sample format not available: %s\n", snd_strerror(err));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
err = snd_pcm_hw_params_set_rate_near(handle, hwparams, &sample_rate, &dir);
|
||||
if (err < 0)
|
||||
{
|
||||
|
||||
@@ -37,11 +37,6 @@ namespace Common
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
void InitThreading()
|
||||
{
|
||||
// Nothing to do in Win32 build.
|
||||
}
|
||||
|
||||
CriticalSection::CriticalSection(int spincount)
|
||||
{
|
||||
if (spincount)
|
||||
@@ -306,7 +301,8 @@ namespace Common
|
||||
|
||||
#else // !WIN32, so must be POSIX threads
|
||||
|
||||
pthread_key_t threadname_key;
|
||||
static pthread_key_t threadname_key;
|
||||
static pthread_once_t threadname_key_once = PTHREAD_ONCE_INIT;
|
||||
|
||||
CriticalSection::CriticalSection(int spincount_unused)
|
||||
{
|
||||
@@ -411,17 +407,6 @@ namespace Common
|
||||
{
|
||||
return pthread_equal(pthread_self(), thread_id) != 0;
|
||||
}
|
||||
|
||||
void InitThreading() {
|
||||
static int thread_init_done = 0;
|
||||
if (thread_init_done)
|
||||
return;
|
||||
|
||||
if (pthread_key_create(&threadname_key, NULL/*free*/) != 0)
|
||||
perror("Unable to create thread name key: ");
|
||||
|
||||
thread_init_done++;
|
||||
}
|
||||
|
||||
void SleepCurrentThread(int ms)
|
||||
{
|
||||
@@ -433,16 +418,26 @@ namespace Common
|
||||
usleep(1000 * 1);
|
||||
}
|
||||
|
||||
static void FreeThreadName(void* threadname)
|
||||
{
|
||||
free(threadname);
|
||||
}
|
||||
|
||||
static void ThreadnameKeyAlloc()
|
||||
{
|
||||
pthread_key_create(&threadname_key, FreeThreadName);
|
||||
}
|
||||
|
||||
void SetCurrentThreadName(const TCHAR* szThreadName)
|
||||
{
|
||||
char *name = strdup(szThreadName);
|
||||
// pthread_setspecific returns 0 on success
|
||||
// free the string from strdup if fails
|
||||
// creates a memory leak if it actually doesn't fail
|
||||
// since we don't delete it once we delete the thread
|
||||
// we are using a single threadname_key anyway for all threads
|
||||
if(!pthread_setspecific(threadname_key, name))
|
||||
free(name);
|
||||
pthread_once(&threadname_key_once, ThreadnameKeyAlloc);
|
||||
|
||||
void* threadname;
|
||||
if ((threadname = pthread_getspecific(threadname_key)) != NULL)
|
||||
free(threadname);
|
||||
|
||||
pthread_setspecific(threadname_key, strdup(szThreadName));
|
||||
|
||||
INFO_LOG(COMMON, "%s(%s)\n", __FUNCTION__, szThreadName);
|
||||
}
|
||||
|
||||
|
||||
@@ -203,7 +203,6 @@ namespace Common
|
||||
#endif
|
||||
};
|
||||
|
||||
void InitThreading();
|
||||
void SleepCurrentThread(int ms);
|
||||
void SwitchCurrentThread(); // On Linux, this is equal to sleep 1ms
|
||||
|
||||
|
||||
@@ -190,8 +190,6 @@ bool Init()
|
||||
CPluginManager &pManager = CPluginManager::GetInstance();
|
||||
SCoreStartupParameter &_CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter;
|
||||
|
||||
Common::InitThreading();
|
||||
|
||||
g_CoreStartupParameter = _CoreParameter;
|
||||
// FIXME DEBUG_LOG(BOOT, dump_params());
|
||||
Host_SetWaitCursor(true);
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
// Gekko related unions, structs, ...
|
||||
//
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
// Gekko related unions, structs, ...
|
||||
//
|
||||
|
||||
#ifndef _LUT_frsqrtex_h_
|
||||
#define _LUT_frsqrtex_h_
|
||||
|
||||
@@ -1,167 +1,167 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "PPCCache.h"
|
||||
#include "../HW/Memmap.h"
|
||||
#include "PowerPC.h"
|
||||
|
||||
namespace PowerPC
|
||||
{
|
||||
|
||||
u32 plru_mask[8] = {11,11,19,19,37,37,69,69};
|
||||
u32 plru_value[8] = {11,3,17,1,36,4,64,0};
|
||||
|
||||
InstructionCache::InstructionCache()
|
||||
{
|
||||
for (u32 m = 0; m < 0xff; m++)
|
||||
{
|
||||
u32 w = 0;
|
||||
while (m & (1<<w)) w++;
|
||||
way_from_valid[m] = w;
|
||||
}
|
||||
|
||||
for (u32 m = 0; m < 128; m++)
|
||||
{
|
||||
u32 b[7];
|
||||
for (int i = 0; i < 7; i++) b[i] = m & (1<<i);
|
||||
u32 w;
|
||||
if (b[0])
|
||||
if (b[2])
|
||||
if (b[6])
|
||||
w = 7;
|
||||
else
|
||||
w = 6;
|
||||
else
|
||||
if (b[5])
|
||||
w = 5;
|
||||
else
|
||||
w = 4;
|
||||
else
|
||||
if (b[1])
|
||||
if (b[4])
|
||||
w = 3;
|
||||
else
|
||||
w = 2;
|
||||
else
|
||||
if (b[3])
|
||||
w = 1;
|
||||
else
|
||||
w = 0;
|
||||
way_from_plru[m] = w;
|
||||
}
|
||||
}
|
||||
|
||||
void InstructionCache::Reset()
|
||||
{
|
||||
memset(valid, 0, sizeof(valid));
|
||||
memset(plru, 0, sizeof(plru));
|
||||
#ifdef FAST_ICACHE
|
||||
memset(lookup_table, 0xff, sizeof(lookup_table));
|
||||
memset(lookup_table_ex, 0xff, sizeof(lookup_table_ex));
|
||||
memset(lookup_table_vmem, 0xff, sizeof(lookup_table_vmem));
|
||||
#endif
|
||||
}
|
||||
|
||||
void InstructionCache::Invalidate(u32 addr)
|
||||
{
|
||||
if (!HID0.ICE)
|
||||
return;
|
||||
// invalidates the whole set
|
||||
u32 set = (addr >> 5) & 0x7f;
|
||||
#ifdef FAST_ICACHE
|
||||
for (int i = 0; i < 8; i++)
|
||||
if (valid[set] & (1<<i))
|
||||
{
|
||||
if (tags[set][i] & (ICACHE_VMEM_BIT >> 12))
|
||||
lookup_table_vmem[((tags[set][i] << 7) | set) & 0xfffff] = 0xff;
|
||||
else if (tags[set][i] & (ICACHE_EXRAM_BIT >> 12))
|
||||
lookup_table_ex[((tags[set][i] << 7) | set) & 0x1fffff] = 0xff;
|
||||
else
|
||||
lookup_table[((tags[set][i] << 7) | set) & 0xfffff] = 0xff;
|
||||
}
|
||||
#endif
|
||||
valid[set] = 0;
|
||||
}
|
||||
|
||||
u32 InstructionCache::ReadInstruction(u32 addr)
|
||||
{
|
||||
if (!HID0.ICE) // instuction cache is disabled
|
||||
return Memory::ReadUnchecked_U32(addr);
|
||||
u32 set = (addr >> 5) & 0x7f;
|
||||
u32 tag = addr >> 12;
|
||||
#ifdef FAST_ICACHE
|
||||
u32 t;
|
||||
if (addr & ICACHE_VMEM_BIT)
|
||||
{
|
||||
t = lookup_table_vmem[(addr>>5) & 0xfffff];
|
||||
}
|
||||
else if (addr & ICACHE_EXRAM_BIT)
|
||||
{
|
||||
t = lookup_table_ex[(addr>>5) & 0x1fffff];
|
||||
}
|
||||
else
|
||||
{
|
||||
t = lookup_table[(addr>>5) & 0xfffff];
|
||||
}
|
||||
#else
|
||||
u32 t = 0xff;
|
||||
for (u32 i = 0; i < 8; i++)
|
||||
if (tags[set][i] == tag && (valid[set] & (1<<i)))
|
||||
{
|
||||
t = i;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (t == 0xff) // load to the cache
|
||||
{
|
||||
if (HID0.ILOCK) // instruction cache is locked
|
||||
return Memory::ReadUnchecked_U32(addr);
|
||||
// select a way
|
||||
if (valid[set] != 0xff)
|
||||
t = way_from_valid[valid[set]];
|
||||
else
|
||||
t = way_from_plru[plru[set]];
|
||||
// load
|
||||
u8 *p = Memory::GetPointer(addr & ~0x1f);
|
||||
memcpy(data[set][t], p, 32);
|
||||
#ifdef FAST_ICACHE
|
||||
if (valid[set] & (1<<t))
|
||||
{
|
||||
if (tags[set][t] & (ICACHE_VMEM_BIT >> 12))
|
||||
lookup_table_vmem[((tags[set][t] << 7) | set) & 0xfffff] = 0xff;
|
||||
else if (tags[set][t] & (ICACHE_EXRAM_BIT >> 12))
|
||||
lookup_table_ex[((tags[set][t] << 7) | set) & 0x1fffff] = 0xff;
|
||||
else
|
||||
lookup_table[((tags[set][t] << 7) | set) & 0xfffff] = 0xff;
|
||||
}
|
||||
if (addr & ICACHE_VMEM_BIT)
|
||||
lookup_table_vmem[(addr>>5) & 0xfffff] = t;
|
||||
else if (addr & ICACHE_EXRAM_BIT)
|
||||
lookup_table_ex[(addr>>5) & 0x1fffff] = t;
|
||||
else
|
||||
lookup_table[(addr>>5) & 0xfffff] = t;
|
||||
#endif
|
||||
tags[set][t] = tag;
|
||||
valid[set] |= 1<<t;
|
||||
}
|
||||
// update plru
|
||||
plru[set] = (plru[set] & ~plru_mask[t]) | plru_value[t];
|
||||
u32 res = Common::swap32(data[set][t][(addr>>2)&7]);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "PPCCache.h"
|
||||
#include "../HW/Memmap.h"
|
||||
#include "PowerPC.h"
|
||||
|
||||
namespace PowerPC
|
||||
{
|
||||
|
||||
u32 plru_mask[8] = {11,11,19,19,37,37,69,69};
|
||||
u32 plru_value[8] = {11,3,17,1,36,4,64,0};
|
||||
|
||||
InstructionCache::InstructionCache()
|
||||
{
|
||||
for (u32 m = 0; m < 0xff; m++)
|
||||
{
|
||||
u32 w = 0;
|
||||
while (m & (1<<w)) w++;
|
||||
way_from_valid[m] = w;
|
||||
}
|
||||
|
||||
for (u32 m = 0; m < 128; m++)
|
||||
{
|
||||
u32 b[7];
|
||||
for (int i = 0; i < 7; i++) b[i] = m & (1<<i);
|
||||
u32 w;
|
||||
if (b[0])
|
||||
if (b[2])
|
||||
if (b[6])
|
||||
w = 7;
|
||||
else
|
||||
w = 6;
|
||||
else
|
||||
if (b[5])
|
||||
w = 5;
|
||||
else
|
||||
w = 4;
|
||||
else
|
||||
if (b[1])
|
||||
if (b[4])
|
||||
w = 3;
|
||||
else
|
||||
w = 2;
|
||||
else
|
||||
if (b[3])
|
||||
w = 1;
|
||||
else
|
||||
w = 0;
|
||||
way_from_plru[m] = w;
|
||||
}
|
||||
}
|
||||
|
||||
void InstructionCache::Reset()
|
||||
{
|
||||
memset(valid, 0, sizeof(valid));
|
||||
memset(plru, 0, sizeof(plru));
|
||||
#ifdef FAST_ICACHE
|
||||
memset(lookup_table, 0xff, sizeof(lookup_table));
|
||||
memset(lookup_table_ex, 0xff, sizeof(lookup_table_ex));
|
||||
memset(lookup_table_vmem, 0xff, sizeof(lookup_table_vmem));
|
||||
#endif
|
||||
}
|
||||
|
||||
void InstructionCache::Invalidate(u32 addr)
|
||||
{
|
||||
if (!HID0.ICE)
|
||||
return;
|
||||
// invalidates the whole set
|
||||
u32 set = (addr >> 5) & 0x7f;
|
||||
#ifdef FAST_ICACHE
|
||||
for (int i = 0; i < 8; i++)
|
||||
if (valid[set] & (1<<i))
|
||||
{
|
||||
if (tags[set][i] & (ICACHE_VMEM_BIT >> 12))
|
||||
lookup_table_vmem[((tags[set][i] << 7) | set) & 0xfffff] = 0xff;
|
||||
else if (tags[set][i] & (ICACHE_EXRAM_BIT >> 12))
|
||||
lookup_table_ex[((tags[set][i] << 7) | set) & 0x1fffff] = 0xff;
|
||||
else
|
||||
lookup_table[((tags[set][i] << 7) | set) & 0xfffff] = 0xff;
|
||||
}
|
||||
#endif
|
||||
valid[set] = 0;
|
||||
}
|
||||
|
||||
u32 InstructionCache::ReadInstruction(u32 addr)
|
||||
{
|
||||
if (!HID0.ICE) // instuction cache is disabled
|
||||
return Memory::ReadUnchecked_U32(addr);
|
||||
u32 set = (addr >> 5) & 0x7f;
|
||||
u32 tag = addr >> 12;
|
||||
#ifdef FAST_ICACHE
|
||||
u32 t;
|
||||
if (addr & ICACHE_VMEM_BIT)
|
||||
{
|
||||
t = lookup_table_vmem[(addr>>5) & 0xfffff];
|
||||
}
|
||||
else if (addr & ICACHE_EXRAM_BIT)
|
||||
{
|
||||
t = lookup_table_ex[(addr>>5) & 0x1fffff];
|
||||
}
|
||||
else
|
||||
{
|
||||
t = lookup_table[(addr>>5) & 0xfffff];
|
||||
}
|
||||
#else
|
||||
u32 t = 0xff;
|
||||
for (u32 i = 0; i < 8; i++)
|
||||
if (tags[set][i] == tag && (valid[set] & (1<<i)))
|
||||
{
|
||||
t = i;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (t == 0xff) // load to the cache
|
||||
{
|
||||
if (HID0.ILOCK) // instruction cache is locked
|
||||
return Memory::ReadUnchecked_U32(addr);
|
||||
// select a way
|
||||
if (valid[set] != 0xff)
|
||||
t = way_from_valid[valid[set]];
|
||||
else
|
||||
t = way_from_plru[plru[set]];
|
||||
// load
|
||||
u8 *p = Memory::GetPointer(addr & ~0x1f);
|
||||
memcpy(data[set][t], p, 32);
|
||||
#ifdef FAST_ICACHE
|
||||
if (valid[set] & (1<<t))
|
||||
{
|
||||
if (tags[set][t] & (ICACHE_VMEM_BIT >> 12))
|
||||
lookup_table_vmem[((tags[set][t] << 7) | set) & 0xfffff] = 0xff;
|
||||
else if (tags[set][t] & (ICACHE_EXRAM_BIT >> 12))
|
||||
lookup_table_ex[((tags[set][t] << 7) | set) & 0x1fffff] = 0xff;
|
||||
else
|
||||
lookup_table[((tags[set][t] << 7) | set) & 0xfffff] = 0xff;
|
||||
}
|
||||
if (addr & ICACHE_VMEM_BIT)
|
||||
lookup_table_vmem[(addr>>5) & 0xfffff] = t;
|
||||
else if (addr & ICACHE_EXRAM_BIT)
|
||||
lookup_table_ex[(addr>>5) & 0x1fffff] = t;
|
||||
else
|
||||
lookup_table[(addr>>5) & 0xfffff] = t;
|
||||
#endif
|
||||
tags[set][t] = tag;
|
||||
valid[set] |= 1<<t;
|
||||
}
|
||||
// update plru
|
||||
plru[set] = (plru[set] & ~plru_mask[t]) | plru_value[t];
|
||||
u32 res = Common::swap32(data[set][t][(addr>>2)&7]);
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _BPMEMLOADER_H_
|
||||
#define _BPMEMLOADER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../../../Core/VideoCommon/Src/BPMemory.h"
|
||||
|
||||
void InitBPMemory();
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _BPMEMLOADER_H_
|
||||
#define _BPMEMLOADER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../../../Core/VideoCommon/Src/BPMemory.h"
|
||||
|
||||
void InitBPMemory();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _CPMEMLOADER_H_
|
||||
#define _CPMEMLOADER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../../../Core/VideoCommon/Src/CPMemory.h"
|
||||
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _CPMEMLOADER_H_
|
||||
#define _CPMEMLOADER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../../../Core/VideoCommon/Src/CPMemory.h"
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _CLIPPER_H_
|
||||
#define _CLIPPER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
|
||||
namespace Clipper
|
||||
{
|
||||
void Init();
|
||||
|
||||
void SetViewOffset();
|
||||
|
||||
void ProcessTriangle(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2);
|
||||
|
||||
void ProcessLine(OutputVertexData *v0, OutputVertexData *v1);
|
||||
|
||||
bool CullTest(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2, bool &backface);
|
||||
|
||||
void PerspectiveDivide(OutputVertexData *vertex);
|
||||
}
|
||||
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _CLIPPER_H_
|
||||
#define _CLIPPER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
|
||||
namespace Clipper
|
||||
{
|
||||
void Init();
|
||||
|
||||
void SetViewOffset();
|
||||
|
||||
void ProcessTriangle(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2);
|
||||
|
||||
void ProcessLine(OutputVertexData *v0, OutputVertexData *v1);
|
||||
|
||||
bool CullTest(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2, bool &backface);
|
||||
|
||||
void PerspectiveDivide(OutputVertexData *vertex);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _DEBUGUTIL_H
|
||||
#define _DEBUGUTIL_H
|
||||
|
||||
namespace DebugUtil
|
||||
{
|
||||
void Init();
|
||||
|
||||
void GetTextureBGRA(u8 *dst, u32 texmap, s32 mip, int width, int height);
|
||||
|
||||
void DumpActiveTextures();
|
||||
|
||||
void OnObjectBegin();
|
||||
void OnObjectEnd();
|
||||
|
||||
void OnFrameEnd();
|
||||
|
||||
void DrawObjectBuffer(s16 x, s16 y, u8 *color, int buffer, const char *name);
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _DEBUGUTIL_H
|
||||
#define _DEBUGUTIL_H
|
||||
|
||||
namespace DebugUtil
|
||||
{
|
||||
void Init();
|
||||
|
||||
void GetTextureBGRA(u8 *dst, u32 texmap, s32 mip, int width, int height);
|
||||
|
||||
void DumpActiveTextures();
|
||||
|
||||
void OnObjectBegin();
|
||||
void OnObjectEnd();
|
||||
|
||||
void OnFrameEnd();
|
||||
|
||||
void DrawObjectBuffer(s16 x, s16 y, u8 *color, int buffer, const char *name);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _EFB_COPY_H_
|
||||
#define _EFB_COPY_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace EfbCopy
|
||||
{
|
||||
// Copy the EFB to RAM as a texture format or XFB
|
||||
// Clear the EFB if needed
|
||||
void CopyEfb();
|
||||
}
|
||||
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _EFB_COPY_H_
|
||||
#define _EFB_COPY_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace EfbCopy
|
||||
{
|
||||
// Copy the EFB to RAM as a texture format or XFB
|
||||
// Clear the EFB if needed
|
||||
void CopyEfb();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
#ifndef _SETUPUNIT_H_
|
||||
#define _SETUPUNIT_H_
|
||||
|
||||
#include "Common.h"
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
class SetupUnit
|
||||
{
|
||||
u8 m_PrimType;
|
||||
int m_VertexCounter;
|
||||
|
||||
OutputVertexData m_Vertices[3];
|
||||
OutputVertexData *m_VertPointer[3];
|
||||
OutputVertexData *m_VertWritePointer;
|
||||
|
||||
void SetupQuad();
|
||||
void SetupTriangle();
|
||||
void SetupTriStrip();
|
||||
void SetupTriFan();
|
||||
void SetupLine();
|
||||
void SetupLineStrip();
|
||||
void SetupPoint();
|
||||
|
||||
public:
|
||||
void Init(u8 primitiveType);
|
||||
|
||||
OutputVertexData* GetVertex() { return m_VertWritePointer; }
|
||||
|
||||
void SetupVertex();
|
||||
};
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
#ifndef _SETUPUNIT_H_
|
||||
#define _SETUPUNIT_H_
|
||||
|
||||
#include "Common.h"
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
class SetupUnit
|
||||
{
|
||||
u8 m_PrimType;
|
||||
int m_VertexCounter;
|
||||
|
||||
OutputVertexData m_Vertices[3];
|
||||
OutputVertexData *m_VertPointer[3];
|
||||
OutputVertexData *m_VertWritePointer;
|
||||
|
||||
void SetupQuad();
|
||||
void SetupTriangle();
|
||||
void SetupTriStrip();
|
||||
void SetupTriFan();
|
||||
void SetupLine();
|
||||
void SetupLineStrip();
|
||||
void SetupPoint();
|
||||
|
||||
public:
|
||||
void Init(u8 primitiveType);
|
||||
|
||||
OutputVertexData* GetVertex() { return m_VertWritePointer; }
|
||||
|
||||
void SetupVertex();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
#ifndef _OPCODEDECODER_H_
|
||||
#define _OPCODEDECODER_H_
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace TextureEncoder
|
||||
{
|
||||
void Encode(u8 *dest_ptr);
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
#ifndef _OPCODEDECODER_H_
|
||||
#define _OPCODEDECODER_H_
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace TextureEncoder
|
||||
{
|
||||
void Encode(u8 *dest_ptr);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _TEXTURESAMPLER_H_
|
||||
#define _TEXTURESAMPLER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace TextureSampler
|
||||
{
|
||||
void Sample(s32 s, s32 t, s32 lod, bool linear, u8 texmap, u8 *sample);
|
||||
|
||||
void SampleMip(s32 s, s32 t, s32 mip, bool linear, u8 texmap, u8 *sample);
|
||||
}
|
||||
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _TEXTURESAMPLER_H_
|
||||
#define _TEXTURESAMPLER_H_
|
||||
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
namespace TextureSampler
|
||||
{
|
||||
void Sample(s32 s, s32 t, s32 lod, bool linear, u8 texmap, u8 *sample);
|
||||
|
||||
void SampleMip(s32 s, s32 t, s32 mip, bool linear, u8 texmap, u8 *sample);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,37 +1,37 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _TRANSFORM_UNIT_H_
|
||||
#define _TRANSFORM_UNIT_H_
|
||||
|
||||
struct InputVertexData;
|
||||
struct OutputVertexData;
|
||||
|
||||
namespace TransformUnit
|
||||
{
|
||||
void MultiplyVec2Mat24(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec2Mat34(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec3Mat33(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec3Mat34(const float *vec, const float *mat, float *result);
|
||||
|
||||
void TransformPosition(const InputVertexData *src, OutputVertexData *dst);
|
||||
void TransformNormal(const InputVertexData *src, bool nbt, OutputVertexData *dst);
|
||||
void TransformColor(const InputVertexData *src, OutputVertexData *dst);
|
||||
void TransformTexCoord(const InputVertexData *src, OutputVertexData *dst, bool specialCase);
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _TRANSFORM_UNIT_H_
|
||||
#define _TRANSFORM_UNIT_H_
|
||||
|
||||
struct InputVertexData;
|
||||
struct OutputVertexData;
|
||||
|
||||
namespace TransformUnit
|
||||
{
|
||||
void MultiplyVec2Mat24(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec2Mat34(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec3Mat33(const float *vec, const float *mat, float *result);
|
||||
void MultiplyVec3Mat34(const float *vec, const float *mat, float *result);
|
||||
|
||||
void TransformPosition(const InputVertexData *src, OutputVertexData *dst);
|
||||
void TransformNormal(const InputVertexData *src, bool nbt, OutputVertexData *dst);
|
||||
void TransformColor(const InputVertexData *src, OutputVertexData *dst);
|
||||
void TransformTexCoord(const InputVertexData *src, OutputVertexData *dst, bool specialCase);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,75 +1,75 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "VertexFormatConverter.h"
|
||||
|
||||
|
||||
namespace VertexFormatConverter
|
||||
{
|
||||
void LoadNormal1_Byte(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = (float)(s8)src[0] / 128;
|
||||
dst->normal[0].y = (float)(s8)src[1] / 128;
|
||||
dst->normal[0].z = (float)(s8)src[2] / 128;
|
||||
}
|
||||
|
||||
void LoadNormal1_Short(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = (float)((s16*)src)[0] / 32768;
|
||||
dst->normal[0].y = (float)((s16*)src)[1] / 32768;
|
||||
dst->normal[0].z = (float)((s16*)src)[2] / 32768;
|
||||
}
|
||||
|
||||
void LoadNormal1_Float(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = ((float*)src)[0];
|
||||
dst->normal[0].y = ((float*)src)[1];
|
||||
dst->normal[0].z = ((float*)src)[2];
|
||||
}
|
||||
|
||||
void LoadNormal3_Byte(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = (float)(s8)src[j + 0] / 128;
|
||||
dst->normal[i].y = (float)(s8)src[j + 1] / 128;
|
||||
dst->normal[i].z = (float)(s8)src[j + 2] / 128;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadNormal3_Short(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = (float)((s16*)src)[j + 0] / 32768;
|
||||
dst->normal[i].y = (float)((s16*)src)[j + 1] / 32768;
|
||||
dst->normal[i].z = (float)((s16*)src)[j + 2] / 32768;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadNormal3_Float(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = ((float*)src)[j + 0];
|
||||
dst->normal[i].y = ((float*)src)[j + 1];
|
||||
dst->normal[i].z = ((float*)src)[j + 2];
|
||||
}
|
||||
}
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "VertexFormatConverter.h"
|
||||
|
||||
|
||||
namespace VertexFormatConverter
|
||||
{
|
||||
void LoadNormal1_Byte(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = (float)(s8)src[0] / 128;
|
||||
dst->normal[0].y = (float)(s8)src[1] / 128;
|
||||
dst->normal[0].z = (float)(s8)src[2] / 128;
|
||||
}
|
||||
|
||||
void LoadNormal1_Short(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = (float)((s16*)src)[0] / 32768;
|
||||
dst->normal[0].y = (float)((s16*)src)[1] / 32768;
|
||||
dst->normal[0].z = (float)((s16*)src)[2] / 32768;
|
||||
}
|
||||
|
||||
void LoadNormal1_Float(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
dst->normal[0].x = ((float*)src)[0];
|
||||
dst->normal[0].y = ((float*)src)[1];
|
||||
dst->normal[0].z = ((float*)src)[2];
|
||||
}
|
||||
|
||||
void LoadNormal3_Byte(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = (float)(s8)src[j + 0] / 128;
|
||||
dst->normal[i].y = (float)(s8)src[j + 1] / 128;
|
||||
dst->normal[i].z = (float)(s8)src[j + 2] / 128;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadNormal3_Short(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = (float)((s16*)src)[j + 0] / 32768;
|
||||
dst->normal[i].y = (float)((s16*)src)[j + 1] / 32768;
|
||||
dst->normal[i].z = (float)((s16*)src)[j + 2] / 32768;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadNormal3_Float(InputVertexData *dst, u8 *src)
|
||||
{
|
||||
for (int i = 0, j = 0; i < 3; i++, j+=3)
|
||||
{
|
||||
dst->normal[i].x = ((float*)src)[j + 0];
|
||||
dst->normal[i].y = ((float*)src)[j + 1];
|
||||
dst->normal[i].z = ((float*)src)[j + 2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _VERTEXFORMATCONVERTER_H
|
||||
#define _VERTEXFORMATCONVERTER_H
|
||||
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
namespace VertexFormatConverter
|
||||
{
|
||||
typedef void (*NormalConverter)(InputVertexData*, u8*);
|
||||
|
||||
void LoadNormal1_Byte(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal1_Short(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal1_Float(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Byte(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Short(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Float(InputVertexData *dst, u8 *src);
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _VERTEXFORMATCONVERTER_H
|
||||
#define _VERTEXFORMATCONVERTER_H
|
||||
|
||||
#include "NativeVertexFormat.h"
|
||||
|
||||
namespace VertexFormatConverter
|
||||
{
|
||||
typedef void (*NormalConverter)(InputVertexData*, u8*);
|
||||
|
||||
void LoadNormal1_Byte(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal1_Short(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal1_Float(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Byte(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Short(InputVertexData *dst, u8 *src);
|
||||
void LoadNormal3_Float(InputVertexData *dst, u8 *src);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,78 +1,78 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _VERTEXLOADER_H_
|
||||
#define _VERTEXLOADER_H_
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "NativeVertexFormat.h"
|
||||
#include "VertexFormatConverter.h"
|
||||
#include "CPMemLoader.h"
|
||||
|
||||
class SetupUnit;
|
||||
|
||||
class VertexLoader
|
||||
{
|
||||
u32 m_VertexSize;
|
||||
|
||||
VAT* m_CurrentVat;
|
||||
|
||||
TPipelineFunction m_positionLoader;
|
||||
TPipelineFunction m_normalLoader;
|
||||
TPipelineFunction m_colorLoader[2];
|
||||
TPipelineFunction m_texCoordLoader[8];
|
||||
|
||||
VertexFormatConverter::NormalConverter m_normalConverter;
|
||||
|
||||
InputVertexData m_Vertex;
|
||||
|
||||
typedef void (*AttributeLoader)(VertexLoader*, InputVertexData*, u8);
|
||||
struct AttrLoaderCall
|
||||
{
|
||||
AttributeLoader loader;
|
||||
u8 index;
|
||||
};
|
||||
AttrLoaderCall m_AttributeLoaders[1+8+1+1+2+8];
|
||||
int m_NumAttributeLoaders;
|
||||
void AddAttributeLoader(AttributeLoader loader, u8 index=0);
|
||||
|
||||
// attribute loader functions
|
||||
static void LoadPosMtx(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadTexMtx(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
static void LoadPosition(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadNormal(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadColor(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
static void LoadTexCoord(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
|
||||
SetupUnit *m_SetupUnit;
|
||||
|
||||
bool m_TexGenSpecialCase;
|
||||
|
||||
public:
|
||||
VertexLoader();
|
||||
~VertexLoader();
|
||||
|
||||
void SetFormat(u8 attributeIndex, u8 primitiveType);
|
||||
|
||||
u32 GetVertexSize() { return m_VertexSize; }
|
||||
|
||||
void LoadVertex();
|
||||
|
||||
};
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _VERTEXLOADER_H_
|
||||
#define _VERTEXLOADER_H_
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "NativeVertexFormat.h"
|
||||
#include "VertexFormatConverter.h"
|
||||
#include "CPMemLoader.h"
|
||||
|
||||
class SetupUnit;
|
||||
|
||||
class VertexLoader
|
||||
{
|
||||
u32 m_VertexSize;
|
||||
|
||||
VAT* m_CurrentVat;
|
||||
|
||||
TPipelineFunction m_positionLoader;
|
||||
TPipelineFunction m_normalLoader;
|
||||
TPipelineFunction m_colorLoader[2];
|
||||
TPipelineFunction m_texCoordLoader[8];
|
||||
|
||||
VertexFormatConverter::NormalConverter m_normalConverter;
|
||||
|
||||
InputVertexData m_Vertex;
|
||||
|
||||
typedef void (*AttributeLoader)(VertexLoader*, InputVertexData*, u8);
|
||||
struct AttrLoaderCall
|
||||
{
|
||||
AttributeLoader loader;
|
||||
u8 index;
|
||||
};
|
||||
AttrLoaderCall m_AttributeLoaders[1+8+1+1+2+8];
|
||||
int m_NumAttributeLoaders;
|
||||
void AddAttributeLoader(AttributeLoader loader, u8 index=0);
|
||||
|
||||
// attribute loader functions
|
||||
static void LoadPosMtx(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadTexMtx(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
static void LoadPosition(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadNormal(VertexLoader *vertexLoader, InputVertexData *vertex, u8 unused);
|
||||
static void LoadColor(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
static void LoadTexCoord(VertexLoader *vertexLoader, InputVertexData *vertex, u8 index);
|
||||
|
||||
SetupUnit *m_SetupUnit;
|
||||
|
||||
bool m_TexGenSpecialCase;
|
||||
|
||||
public:
|
||||
VertexLoader();
|
||||
~VertexLoader();
|
||||
|
||||
void SetFormat(u8 attributeIndex, u8 primitiveType);
|
||||
|
||||
u32 GetVertexSize() { return m_VertexSize; }
|
||||
|
||||
void LoadVertex();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user