Merge pull request #722 from DHrpcs3/gcm-wip

Some GCM-related changes
This commit is contained in:
Alexandro Sánchez Bach 2014-08-04 01:54:44 +02:00
commit 9223174c0c
38 changed files with 252 additions and 203 deletions

View file

@ -1,6 +1,6 @@
#pragma once
#include "GLShaderParam.h"
#include "Emu/GS/RSXFragmentProgram.h"
#include "Emu/RSX/RSXFragmentProgram.h"
struct GLFragmentDecompilerThread : public ThreadBase
{

View file

@ -1,6 +1,6 @@
#pragma once
#include "Emu/GS/GSRender.h"
#include "Emu/GS/RSXThread.h"
#include "Emu/RSX/GSRender.h"
#include "Emu/RSX/RSXThread.h"
#include "Utilities/rPlatform.h"
#include "GLBuffers.h"
#include "GLProgramBuffer.h"

View file

@ -1,6 +1,6 @@
#pragma once
#include "GLShaderParam.h"
#include "Emu/GS/RSXVertexProgram.h"
#include "Emu/RSX/RSXVertexProgram.h"
struct GLVertexDecompilerThread : public ThreadBase
{

View file

@ -1,6 +1,6 @@
#pragma once
#include "Emu/GS/GCM.h"
#include "Emu/GS/RSXThread.h"
#include "Emu/RSX/GCM.h"
#include "Emu/RSX/RSXThread.h"
struct GSRender : public RSXThread
{

View file

@ -1,5 +1,5 @@
#pragma once
#include "Emu/GS/GSRender.h"
#include "Emu/RSX/GSRender.h"
class NullGSRender
: public GSRender

View file

@ -4,7 +4,9 @@
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "Emu/SysCalls/SysCalls.h"
#include "Emu/GS/GCM.h"
#include "Emu/RSX/GCM.h"
#include "sysPrxForUser.h"
#include "cellGcmSys.h"
//void cellGcmSys_init();
//void cellGcmSys_load();
@ -12,48 +14,22 @@
//Module cellGcmSys(0x0010, cellGcmSys_init, cellGcmSys_load, cellGcmSys_unload);
Module *cellGcmSys = nullptr;
const u32 tiled_pitches[] = {
0x00000000, 0x00000200, 0x00000300, 0x00000400,
0x00000500, 0x00000600, 0x00000700, 0x00000800,
0x00000A00, 0x00000C00, 0x00000D00, 0x00000E00,
0x00001000, 0x00001400, 0x00001800, 0x00001A00,
0x00001C00, 0x00002000, 0x00002800, 0x00003000,
0x00003400, 0x00003800, 0x00004000, 0x00005000,
0x00006000, 0x00006800, 0x00007000, 0x00008000,
0x0000A000, 0x0000C000, 0x0000D000, 0x0000E000,
0x00010000
};
u32 local_size = 0;
u32 local_addr = 0;
u32 system_mode = 0;
enum
{
CELL_GCM_ERROR_FAILURE = 0x802100ff,
CELL_GCM_ERROR_NO_IO_PAGE_TABLE = 0x80210001,
CELL_GCM_ERROR_INVALID_ENUM = 0x80210002,
CELL_GCM_ERROR_INVALID_VALUE = 0x80210003,
CELL_GCM_ERROR_INVALID_ALIGNMENT = 0x80210004,
CELL_GCM_ERROR_ADDRESS_OVERWRAP = 0x80210005
};
// Function declaration
int cellGcmSetPrepareFlip(mem_ptr_t<CellGcmContextData> ctxt, u32 id);
//----------------------------------------------------------------------------
// Memory Mapping
//----------------------------------------------------------------------------
struct gcm_offset
{
u64 io;
u64 ea;
};
void InitOffsetTable();
int32_t cellGcmAddressToOffset(u64 address, mem32_t offset);
uint32_t cellGcmGetMaxIoMapSize();
void cellGcmGetOffsetTable(mem_ptr_t<gcm_offset> table);
int32_t cellGcmIoOffsetToAddress(u32 ioOffset, u64 address);
int32_t cellGcmMapEaIoAddress(const u32 ea, const u32 io, const u32 size);
int32_t cellGcmMapEaIoAddressWithFlags(const u32 ea, const u32 io, const u32 size, const u32 flags);
int32_t cellGcmMapMainMemory(u64 ea, u32 size, mem32_t offset);
int32_t cellGcmReserveIoMapSize(const u32 size);
int32_t cellGcmUnmapEaIoAddress(u64 ea);
int32_t cellGcmUnmapIoAddress(u64 io);
int32_t cellGcmUnreserveIoMapSize(u32 size);
//----------------------------------------------------------------------------
CellGcmConfig current_config;
CellGcmContextData current_context;
gcmInfo gcm_info;
@ -287,10 +263,14 @@ int cellGcmGetFlipStatus()
u32 cellGcmGetTiledPitchSize(u32 size)
{
cellGcmSys->Warning("cellGcmGetTiledPitchSize(size=%d)", size);
// TODO:
cellGcmSys->Log("cellGcmGetTiledPitchSize(size=%d)", size);
return size;
for (size_t i=0; i < sizeof(tiled_pitches)/sizeof(tiled_pitches[0]) - 1; i++) {
if (tiled_pitches[i] < size && size <= tiled_pitches[i+1]) {
return tiled_pitches[i+1];
}
}
return 0;
}
int cellGcmInit(u32 context_addr, u32 cmdSize, u32 ioSize, u32 ioAddress)
@ -467,7 +447,7 @@ void cellGcmSetFlipStatus()
Emu.GetGSManager().GetRender().m_flip_status = 0;
}
int cellGcmSetPrepareFlip(mem_ptr_t<CellGcmContextData> ctxt, u32 id)
s32 cellGcmSetPrepareFlip(mem_ptr_t<CellGcmContextData> ctxt, u32 id)
{
cellGcmSys->Log("cellGcmSetPrepareFlip(ctx=0x%x, id=0x%x)", ctxt.GetAddr(), id);
@ -808,7 +788,7 @@ void InitOffsetTable()
}
}
int32_t cellGcmAddressToOffset(u64 address, mem32_t offset)
s32 cellGcmAddressToOffset(u64 address, mem32_t offset)
{
cellGcmSys->Log("cellGcmAddressToOffset(address=0x%x,offset_addr=0x%x)", address, offset.GetAddr());
@ -827,14 +807,11 @@ int32_t cellGcmAddressToOffset(u64 address, mem32_t offset)
{
u16 upper12Bits = Memory.Read16(offsetTable.io + sizeof(u16)*(address >> 20));
if (upper12Bits != 0xFFFF)
{
if (upper12Bits != 0xFFFF) {
result = (((u64)upper12Bits << 20) | (address & (0xFFFFF)));
}
// address is not mapped in IO
else
{
else {
return CELL_GCM_ERROR_FAILURE;
}
}
@ -843,7 +820,7 @@ int32_t cellGcmAddressToOffset(u64 address, mem32_t offset)
return CELL_OK;
}
uint32_t cellGcmGetMaxIoMapSize()
u32 cellGcmGetMaxIoMapSize()
{
return Memory.RSXIOMem.GetEndAddr() - Memory.RSXIOMem.GetStartAddr() - Memory.RSXIOMem.GetReservedAmount();
}
@ -854,7 +831,7 @@ void cellGcmGetOffsetTable(mem_ptr_t<gcm_offset> table)
table->ea = re(offsetTable.ea);
}
int32_t cellGcmIoOffsetToAddress(u32 ioOffset, u64 address)
s32 cellGcmIoOffsetToAddress(u32 ioOffset, u64 address)
{
u64 realAddr;
@ -866,7 +843,7 @@ int32_t cellGcmIoOffsetToAddress(u32 ioOffset, u64 address)
return CELL_OK;
}
int32_t cellGcmMapEaIoAddress(const u32 ea, const u32 io, const u32 size)
s32 cellGcmMapEaIoAddress(u32 ea, u32 io, u32 size)
{
cellGcmSys->Warning("cellGcmMapEaIoAddress(ea=0x%x, io=0x%x, size=0x%x)", ea, io, size);
@ -891,13 +868,13 @@ int32_t cellGcmMapEaIoAddress(const u32 ea, const u32 io, const u32 size)
return CELL_OK;
}
int32_t cellGcmMapEaIoAddressWithFlags(const u32 ea, const u32 io, const u32 size, const u32 flags)
s32 cellGcmMapEaIoAddressWithFlags(u32 ea, u32 io, u32 size, u32 flags)
{
cellGcmSys->Warning("cellGcmMapEaIoAddressWithFlags(ea=0x%x, io=0x%x, size=0x%x, flags=0x%x)", ea, io, size, flags);
return cellGcmMapEaIoAddress(ea, io, size); // TODO: strict ordering
}
int32_t cellGcmMapLocalMemory(u64 address, u64 size)
s32 cellGcmMapLocalMemory(u64 address, u64 size)
{
if (!local_size && !local_addr)
{
@ -916,7 +893,7 @@ int32_t cellGcmMapLocalMemory(u64 address, u64 size)
return CELL_OK;
}
int32_t cellGcmMapMainMemory(u64 ea, u32 size, mem32_t offset)
s32 cellGcmMapMainMemory(u64 ea, u32 size, mem32_t offset)
{
cellGcmSys->Warning("cellGcmMapMainMemory(ea=0x%x,size=0x%x,offset_addr=0x%x)", ea, size, offset.GetAddr());
@ -950,7 +927,7 @@ int32_t cellGcmMapMainMemory(u64 ea, u32 size, mem32_t offset)
return CELL_OK;
}
int32_t cellGcmReserveIoMapSize(const u32 size)
s32 cellGcmReserveIoMapSize(u32 size)
{
if (size & 0xFFFFF)
{
@ -968,7 +945,7 @@ int32_t cellGcmReserveIoMapSize(const u32 size)
return CELL_OK;
}
int32_t cellGcmUnmapEaIoAddress(u64 ea)
s32 cellGcmUnmapEaIoAddress(u64 ea)
{
u32 size = Memory.RSXIOMem.UnmapRealAddress(ea);
if (size)
@ -992,7 +969,7 @@ int32_t cellGcmUnmapEaIoAddress(u64 ea)
return CELL_OK;
}
int32_t cellGcmUnmapIoAddress(u64 io)
s32 cellGcmUnmapIoAddress(u64 io)
{
u32 size = Memory.RSXIOMem.UnmapAddress(io);
if (size)
@ -1016,7 +993,7 @@ int32_t cellGcmUnmapIoAddress(u64 io)
return CELL_OK;
}
int32_t cellGcmUnreserveIoMapSize(u32 size)
s32 cellGcmUnreserveIoMapSize(u32 size)
{
if (size & 0xFFFFF)
@ -1094,9 +1071,15 @@ int cellGcmSetFlipCommand(u32 ctx, u32 id)
return cellGcmSetPrepareFlip(ctx, id);
}
s64 cellGcmFunc15()
s64 cellGcmFunc15(u32 unk_addr)
{
cellGcmSys->Todo("cellGcmFunc15()");
cellGcmSys->Todo("cellGcmFunc15(unk_addr=0x%x)", unk_addr);
if (0/*TODO: If what?*/) {
_sys_memset(unk_addr, 0, 0x84);
}
// TODO
return 0;
}

View file

@ -0,0 +1,35 @@
#pragma once
enum
{
CELL_GCM_ERROR_FAILURE = 0x802100ff,
CELL_GCM_ERROR_NO_IO_PAGE_TABLE = 0x80210001,
CELL_GCM_ERROR_INVALID_ENUM = 0x80210002,
CELL_GCM_ERROR_INVALID_VALUE = 0x80210003,
CELL_GCM_ERROR_INVALID_ALIGNMENT = 0x80210004,
CELL_GCM_ERROR_ADDRESS_OVERWRAP = 0x80210005
};
struct gcm_offset
{
u64 io;
u64 ea;
};
// Auxiliary functions
void InitOffsetTable();
// SysCalls
s32 cellGcmSetPrepareFlip(mem_ptr_t<CellGcmContextData> ctxt, u32 id);
s32 cellGcmAddressToOffset(u64 address, mem32_t offset);
u32 cellGcmGetMaxIoMapSize();
void cellGcmGetOffsetTable(mem_ptr_t<gcm_offset> table);
s32 cellGcmIoOffsetToAddress(u32 ioOffset, u64 address);
s32 cellGcmMapEaIoAddress(u32 ea, u32 io, u32 size);
s32 cellGcmMapEaIoAddressWithFlags(u32 ea, u32 io, u32 size, u32 flags);
s32 cellGcmMapMainMemory(u64 ea, u32 size, mem32_t offset);
s32 cellGcmReserveIoMapSize(u32 size);
s32 cellGcmUnmapEaIoAddress(u64 ea);
s32 cellGcmUnmapIoAddress(u64 io);
s32 cellGcmUnreserveIoMapSize(u32 size);

View file

@ -10,25 +10,12 @@
#include "Emu/SysCalls/lv2/sys_spu.h"
#include "Loader/ELF.h"
#include "Emu/Cell/RawSPUThread.h"
#include "sysPrxForUser.h"
//void sysPrxForUser_init();
//Module sysPrxForUser("sysPrxForUser", sysPrxForUser_init);
Module *sysPrxForUser = nullptr;
struct HeapInfo
{
u32 heap_addr;
u32 align;
u32 size;
HeapInfo(u32 _heap_addr, u32 _align, u32 _size)
: heap_addr(_heap_addr)
, align(_align)
, size(_size)
{
}
};
int sys_heap_create_heap(const u32 heap_addr, const u32 align, const u32 size)
{
sysPrxForUser->Warning("sys_heap_create_heap(heap_addr=0x%x, align=0x%x, size=0x%x)", heap_addr, align, size);
@ -177,6 +164,14 @@ int sys_raw_spu_image_load(int id, mem_ptr_t<sys_spu_image> img)
return CELL_OK;
}
s32 _sys_memset(u32 addr, s32 value, u32 size)
{
sysPrxForUser->Log("_sys_memset(addr=0x%x, value=%d, size=%d)", addr, value, size);
memset(Memory + addr, value, size);
return CELL_OK;
}
void sysPrxForUser_init()
{
sysPrxForUser->AddFunc(0x744680a2, sys_initialize_tls);
@ -249,4 +244,6 @@ void sysPrxForUser_init()
sysPrxForUser->AddFunc(0x67f9fedb, sys_game_process_exitspawn2);
sysPrxForUser->AddFunc(0xfc52a7a9, sys_game_process_exitspawn);
sysPrxForUser->AddFunc(0x68b9b011, _sys_memset);
}

View file

@ -0,0 +1,18 @@
# pragma once
struct HeapInfo
{
u32 heap_addr;
u32 align;
u32 size;
HeapInfo(u32 _heap_addr, u32 _align, u32 _size)
: heap_addr(_heap_addr)
, align(_align)
, size(_size)
{
}
};
// SysCalls
s32 _sys_memset(u32 addr, s32 value, u32 num);

View file

@ -5,7 +5,7 @@
#include "Emu/Io/Pad.h"
#include "Emu/Io/Keyboard.h"
#include "Emu/Io/Mouse.h"
#include "Emu/GS/GSManager.h"
#include "Emu/RSX/GSManager.h"
#include "Emu/Audio/AudioManager.h"
#include "Emu/FS/VFS.h"
#include "Loader/Loader.h"

View file

@ -11,7 +11,7 @@
#include "git-version.h"
#include "Ini.h"
#include "Emu/GS/sysutil_video.h"
#include "Emu/RSX/sysutil_video.h"
#include "Gui/VHDDManager.h"
#include "Gui/VFSManager.h"
#include "Gui/AboutDialog.h"

View file

@ -4,8 +4,8 @@
#include "Emu/System.h"
#include "RSXDebugger.h"
#include "Emu/GS/sysutil_video.h"
#include "Emu/GS/GCM.h"
#include "Emu/RSX/sysutil_video.h"
#include "Emu/RSX/GCM.h"
#include "MemoryViewer.h"

View file

@ -74,22 +74,22 @@
<ClCompile Include="Emu\FS\vfsLocalFile.cpp" />
<ClCompile Include="Emu\FS\vfsStream.cpp" />
<ClCompile Include="Emu\FS\vfsStreamMemory.cpp" />
<ClCompile Include="Emu\GS\GL\GLBuffers.cpp" />
<ClCompile Include="Emu\GS\GL\GLFragmentProgram.cpp" />
<ClCompile Include="Emu\GS\GL\GLGSRender.cpp" />
<ClCompile Include="Emu\GS\GL\GLProgram.cpp" />
<ClCompile Include="Emu\GS\GL\GLProgramBuffer.cpp" />
<ClCompile Include="Emu\GS\GL\GLVertexProgram.cpp" />
<ClCompile Include="Emu\GS\GL\OpenGL.cpp" />
<ClCompile Include="Emu\GS\GSManager.cpp" />
<ClCompile Include="Emu\GS\GSRender.cpp" />
<ClCompile Include="Emu\GS\RSXTexture.cpp" />
<ClCompile Include="Emu\GS\RSXThread.cpp" />
<ClCompile Include="Emu\HDD\HDD.cpp" />
<ClCompile Include="Emu\Io\Keyboard.cpp" />
<ClCompile Include="Emu\Io\Mouse.cpp" />
<ClCompile Include="Emu\Io\Pad.cpp" />
<ClCompile Include="Emu\Memory\Memory.cpp" />
<ClCompile Include="Emu\RSX\GL\GLBuffers.cpp" />
<ClCompile Include="Emu\RSX\GL\GLFragmentProgram.cpp" />
<ClCompile Include="Emu\RSX\GL\GLGSRender.cpp" />
<ClCompile Include="Emu\RSX\GL\GLProgram.cpp" />
<ClCompile Include="Emu\RSX\GL\GLProgramBuffer.cpp" />
<ClCompile Include="Emu\RSX\GL\GLVertexProgram.cpp" />
<ClCompile Include="Emu\RSX\GL\OpenGL.cpp" />
<ClCompile Include="Emu\RSX\GSManager.cpp" />
<ClCompile Include="Emu\RSX\GSRender.cpp" />
<ClCompile Include="Emu\RSX\RSXTexture.cpp" />
<ClCompile Include="Emu\RSX\RSXThread.cpp" />
<ClCompile Include="Emu\SysCalls\Callback.cpp" />
<ClCompile Include="Emu\SysCalls\FuncList.cpp" />
<ClCompile Include="Emu\SysCalls\lv2\lv2Fs.cpp" />
@ -284,22 +284,6 @@
<ClInclude Include="Emu\FS\vfsStream.h" />
<ClInclude Include="Emu\FS\vfsStreamMemory.h" />
<ClInclude Include="Emu\GameInfo.h" />
<ClInclude Include="Emu\GS\GCM.h" />
<ClInclude Include="Emu\GS\GL\GLBuffers.h" />
<ClInclude Include="Emu\GS\GL\GLFragmentProgram.h" />
<ClInclude Include="Emu\GS\GL\GLGSRender.h" />
<ClInclude Include="Emu\GS\GL\GLProgram.h" />
<ClInclude Include="Emu\GS\GL\GLProgramBuffer.h" />
<ClInclude Include="Emu\GS\GL\GLShaderParam.h" />
<ClInclude Include="Emu\GS\GL\GLVertexProgram.h" />
<ClInclude Include="Emu\GS\GL\OpenGL.h" />
<ClInclude Include="Emu\GS\GSManager.h" />
<ClInclude Include="Emu\GS\GSRender.h" />
<ClInclude Include="Emu\GS\Null\NullGSRender.h" />
<ClInclude Include="Emu\GS\RSXFragmentProgram.h" />
<ClInclude Include="Emu\GS\RSXTexture.h" />
<ClInclude Include="Emu\GS\RSXThread.h" />
<ClInclude Include="Emu\GS\RSXVertexProgram.h" />
<ClInclude Include="Emu\HDD\HDD.h" />
<ClInclude Include="Emu\Io\Keyboard.h" />
<ClInclude Include="Emu\Io\KeyboardHandler.h" />
@ -314,6 +298,24 @@
<ClInclude Include="Emu\Memory\DynamicMemoryBlockBase.h" />
<ClInclude Include="Emu\Memory\Memory.h" />
<ClInclude Include="Emu\Memory\MemoryBlock.h" />
<ClInclude Include="Emu\RSX\GCM.h" />
<ClInclude Include="Emu\RSX\GL\GLBuffers.h" />
<ClInclude Include="Emu\RSX\GL\GLFragmentProgram.h" />
<ClInclude Include="Emu\RSX\GL\GLGSRender.h" />
<ClInclude Include="Emu\RSX\GL\GLProcTable.h" />
<ClInclude Include="Emu\RSX\GL\GLProgram.h" />
<ClInclude Include="Emu\RSX\GL\GLProgramBuffer.h" />
<ClInclude Include="Emu\RSX\GL\GLShaderParam.h" />
<ClInclude Include="Emu\RSX\GL\GLVertexProgram.h" />
<ClInclude Include="Emu\RSX\GL\OpenGL.h" />
<ClInclude Include="Emu\RSX\GSManager.h" />
<ClInclude Include="Emu\RSX\GSRender.h" />
<ClInclude Include="Emu\RSX\Null\NullGSRender.h" />
<ClInclude Include="Emu\RSX\RSXFragmentProgram.h" />
<ClInclude Include="Emu\RSX\RSXTexture.h" />
<ClInclude Include="Emu\RSX\RSXThread.h" />
<ClInclude Include="Emu\RSX\RSXVertexProgram.h" />
<ClInclude Include="Emu\RSX\sysutil_video.h" />
<ClInclude Include="Emu\SysCalls\Callback.h" />
<ClInclude Include="Emu\SysCalls\ErrorCodes.h" />
<ClInclude Include="Emu\SysCalls\LogBase.h" />
@ -346,6 +348,7 @@
<ClInclude Include="Emu\SysCalls\Modules\cellDmux.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellFont.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellGame.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellGcmSys.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellGifDec.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellJpgDec.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellNetCtl.h" />
@ -367,6 +370,7 @@
<ClInclude Include="Emu\SysCalls\Modules\libsynth2.h" />
<ClInclude Include="Emu\SysCalls\Modules\sceNp.h" />
<ClInclude Include="Emu\SysCalls\Modules\sceNpTrophy.h" />
<ClInclude Include="Emu\SysCalls\Modules\sysPrxForUser.h" />
<ClInclude Include="Emu\SysCalls\Modules\sys_net.h" />
<ClInclude Include="Emu\SysCalls\SC_FUNC.h" />
<ClInclude Include="Emu\SysCalls\Static.h" />

View file

@ -33,15 +33,6 @@
<Filter Include="Emu\Io\Windows">
<UniqueIdentifier>{c04826b8-05a1-4015-b3aa-ef44805531a2}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\GS">
<UniqueIdentifier>{c344f241-48a9-4950-8b94-8b60adc4a67f}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\GS\GL">
<UniqueIdentifier>{9aaa9b5c-c890-485c-a729-d2b5e783406f}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\GS\Null">
<UniqueIdentifier>{f81523a6-0846-4abc-96b2-1284b2506485}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\FS">
<UniqueIdentifier>{b26b6b08-a8ce-4bb5-8339-c5352a23ce96}</UniqueIdentifier>
</Filter>
@ -81,6 +72,15 @@
<Filter Include="Emu\Io\XInput">
<UniqueIdentifier>{187d33b8-7b69-4081-9545-de6ad1d8fe98}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\RSX">
<UniqueIdentifier>{fadb4b36-57af-4583-891d-d22ff369e266}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\RSX\Null">
<UniqueIdentifier>{4adca4fa-b90f-4662-9eb0-1d29cf3cd2eb}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\RSX\GL">
<UniqueIdentifier>{6f1da5b2-52c5-416b-9b5c-b9897bc1b300}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Crypto\aes.cpp">
@ -236,39 +236,6 @@
<ClCompile Include="Emu\Io\Pad.cpp">
<Filter>Emu\Io</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GSManager.cpp">
<Filter>Emu\GS</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GSRender.cpp">
<Filter>Emu\GS</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\RSXTexture.cpp">
<Filter>Emu\GS</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\RSXThread.cpp">
<Filter>Emu\GS</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLBuffers.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLFragmentProgram.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLGSRender.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLProgram.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLProgramBuffer.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\GLVertexProgram.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\GS\GL\OpenGL.cpp">
<Filter>Emu\GS\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\FS\VFS.cpp">
<Filter>Emu\FS</Filter>
</ClCompile>
@ -587,6 +554,39 @@
<ClCompile Include="Emu\SysCalls\Modules\cellMsgDialog.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLProgram.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLProgramBuffer.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLVertexProgram.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\OpenGL.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLBuffers.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLFragmentProgram.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GL\GLGSRender.cpp">
<Filter>Emu\RSX\GL</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GSManager.cpp">
<Filter>Emu\RSX</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\GSRender.cpp">
<Filter>Emu\RSX</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\RSXTexture.cpp">
<Filter>Emu\RSX</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\RSXThread.cpp">
<Filter>Emu\RSX</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -730,54 +730,6 @@
<ClInclude Include="Emu\Io\Windows\WindowsPadHandler.h">
<Filter>Emu\Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GCM.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GSManager.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GSRender.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\RSXFragmentProgram.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\RSXTexture.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\RSXThread.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\RSXVertexProgram.h">
<Filter>Emu\GS</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLBuffers.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLFragmentProgram.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLGSRender.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLProgram.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLProgramBuffer.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLShaderParam.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\GLVertexProgram.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\GL\OpenGL.h">
<Filter>Emu\GS\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\GS\Null\NullGSRender.h">
<Filter>Emu\GS\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\FS\VFS.h">
<Filter>Emu\FS</Filter>
</ClInclude>
@ -1105,5 +1057,65 @@
<ClInclude Include="Emu\SysCalls\LogBase.h">
<Filter>Emu\SysCalls</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGcmSys.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\sysPrxForUser.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Null\NullGSRender.h">
<Filter>Emu\RSX\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLGSRender.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLProcTable.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLProgram.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLProgramBuffer.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLShaderParam.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLVertexProgram.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\OpenGL.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLBuffers.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GL\GLFragmentProgram.h">
<Filter>Emu\RSX\GL</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GSManager.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GSRender.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\RSXFragmentProgram.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\RSXTexture.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\RSXThread.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\RSXVertexProgram.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\sysutil_video.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\GCM.h">
<Filter>Emu\RSX</Filter>
</ClInclude>
</ItemGroup>
</Project>