diff --git a/rpcs3/Emu/GS/GCM.h b/rpcs3/Emu/RSX/GCM.h
similarity index 100%
rename from rpcs3/Emu/GS/GCM.h
rename to rpcs3/Emu/RSX/GCM.h
diff --git a/rpcs3/Emu/GS/GL/GLBuffers.cpp b/rpcs3/Emu/RSX/GL/GLBuffers.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLBuffers.cpp
rename to rpcs3/Emu/RSX/GL/GLBuffers.cpp
diff --git a/rpcs3/Emu/GS/GL/GLBuffers.h b/rpcs3/Emu/RSX/GL/GLBuffers.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLBuffers.h
rename to rpcs3/Emu/RSX/GL/GLBuffers.h
diff --git a/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp b/rpcs3/Emu/RSX/GL/GLFragmentProgram.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLFragmentProgram.cpp
rename to rpcs3/Emu/RSX/GL/GLFragmentProgram.cpp
diff --git a/rpcs3/Emu/GS/GL/GLFragmentProgram.h b/rpcs3/Emu/RSX/GL/GLFragmentProgram.h
similarity index 99%
rename from rpcs3/Emu/GS/GL/GLFragmentProgram.h
rename to rpcs3/Emu/RSX/GL/GLFragmentProgram.h
index 0ff5af0d4f..6219d9304f 100644
--- a/rpcs3/Emu/GS/GL/GLFragmentProgram.h
+++ b/rpcs3/Emu/RSX/GL/GLFragmentProgram.h
@@ -1,6 +1,6 @@
#pragma once
#include "GLShaderParam.h"
-#include "Emu/GS/RSXFragmentProgram.h"
+#include "Emu/RSX/RSXFragmentProgram.h"
struct GLFragmentDecompilerThread : public ThreadBase
{
diff --git a/rpcs3/Emu/GS/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLGSRender.cpp
rename to rpcs3/Emu/RSX/GL/GLGSRender.cpp
diff --git a/rpcs3/Emu/GS/GL/GLGSRender.h b/rpcs3/Emu/RSX/GL/GLGSRender.h
similarity index 99%
rename from rpcs3/Emu/GS/GL/GLGSRender.h
rename to rpcs3/Emu/RSX/GL/GLGSRender.h
index 325bca7fa4..e2cf5f9d6f 100644
--- a/rpcs3/Emu/GS/GL/GLGSRender.h
+++ b/rpcs3/Emu/RSX/GL/GLGSRender.h
@@ -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"
diff --git a/rpcs3/Emu/GS/GL/GLProcTable.h b/rpcs3/Emu/RSX/GL/GLProcTable.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLProcTable.h
rename to rpcs3/Emu/RSX/GL/GLProcTable.h
diff --git a/rpcs3/Emu/GS/GL/GLProgram.cpp b/rpcs3/Emu/RSX/GL/GLProgram.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLProgram.cpp
rename to rpcs3/Emu/RSX/GL/GLProgram.cpp
diff --git a/rpcs3/Emu/GS/GL/GLProgram.h b/rpcs3/Emu/RSX/GL/GLProgram.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLProgram.h
rename to rpcs3/Emu/RSX/GL/GLProgram.h
diff --git a/rpcs3/Emu/GS/GL/GLProgramBuffer.cpp b/rpcs3/Emu/RSX/GL/GLProgramBuffer.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLProgramBuffer.cpp
rename to rpcs3/Emu/RSX/GL/GLProgramBuffer.cpp
diff --git a/rpcs3/Emu/GS/GL/GLProgramBuffer.h b/rpcs3/Emu/RSX/GL/GLProgramBuffer.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLProgramBuffer.h
rename to rpcs3/Emu/RSX/GL/GLProgramBuffer.h
diff --git a/rpcs3/Emu/GS/GL/GLShaderParam.h b/rpcs3/Emu/RSX/GL/GLShaderParam.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLShaderParam.h
rename to rpcs3/Emu/RSX/GL/GLShaderParam.h
diff --git a/rpcs3/Emu/GS/GL/GLVertexProgram.cpp b/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/GLVertexProgram.cpp
rename to rpcs3/Emu/RSX/GL/GLVertexProgram.cpp
diff --git a/rpcs3/Emu/GS/GL/GLVertexProgram.h b/rpcs3/Emu/RSX/GL/GLVertexProgram.h
similarity index 99%
rename from rpcs3/Emu/GS/GL/GLVertexProgram.h
rename to rpcs3/Emu/RSX/GL/GLVertexProgram.h
index ffa19e8238..2605410a34 100644
--- a/rpcs3/Emu/GS/GL/GLVertexProgram.h
+++ b/rpcs3/Emu/RSX/GL/GLVertexProgram.h
@@ -1,6 +1,6 @@
#pragma once
#include "GLShaderParam.h"
-#include "Emu/GS/RSXVertexProgram.h"
+#include "Emu/RSX/RSXVertexProgram.h"
struct GLVertexDecompilerThread : public ThreadBase
{
diff --git a/rpcs3/Emu/GS/GL/OpenGL.cpp b/rpcs3/Emu/RSX/GL/OpenGL.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GL/OpenGL.cpp
rename to rpcs3/Emu/RSX/GL/OpenGL.cpp
diff --git a/rpcs3/Emu/GS/GL/OpenGL.h b/rpcs3/Emu/RSX/GL/OpenGL.h
similarity index 100%
rename from rpcs3/Emu/GS/GL/OpenGL.h
rename to rpcs3/Emu/RSX/GL/OpenGL.h
diff --git a/rpcs3/Emu/GS/GSManager.cpp b/rpcs3/Emu/RSX/GSManager.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GSManager.cpp
rename to rpcs3/Emu/RSX/GSManager.cpp
diff --git a/rpcs3/Emu/GS/GSManager.h b/rpcs3/Emu/RSX/GSManager.h
similarity index 100%
rename from rpcs3/Emu/GS/GSManager.h
rename to rpcs3/Emu/RSX/GSManager.h
diff --git a/rpcs3/Emu/GS/GSRender.cpp b/rpcs3/Emu/RSX/GSRender.cpp
similarity index 100%
rename from rpcs3/Emu/GS/GSRender.cpp
rename to rpcs3/Emu/RSX/GSRender.cpp
diff --git a/rpcs3/Emu/GS/GSRender.h b/rpcs3/Emu/RSX/GSRender.h
similarity index 94%
rename from rpcs3/Emu/GS/GSRender.h
rename to rpcs3/Emu/RSX/GSRender.h
index 86d74748a2..f1b6b74082 100644
--- a/rpcs3/Emu/GS/GSRender.h
+++ b/rpcs3/Emu/RSX/GSRender.h
@@ -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
{
diff --git a/rpcs3/Emu/GS/Null/NullGSRender.h b/rpcs3/Emu/RSX/Null/NullGSRender.h
similarity index 92%
rename from rpcs3/Emu/GS/Null/NullGSRender.h
rename to rpcs3/Emu/RSX/Null/NullGSRender.h
index 26663236b9..1fa7104356 100644
--- a/rpcs3/Emu/GS/Null/NullGSRender.h
+++ b/rpcs3/Emu/RSX/Null/NullGSRender.h
@@ -1,5 +1,5 @@
#pragma once
-#include "Emu/GS/GSRender.h"
+#include "Emu/RSX/GSRender.h"
class NullGSRender
: public GSRender
diff --git a/rpcs3/Emu/GS/RSXFragmentProgram.h b/rpcs3/Emu/RSX/RSXFragmentProgram.h
similarity index 100%
rename from rpcs3/Emu/GS/RSXFragmentProgram.h
rename to rpcs3/Emu/RSX/RSXFragmentProgram.h
diff --git a/rpcs3/Emu/GS/RSXTexture.cpp b/rpcs3/Emu/RSX/RSXTexture.cpp
similarity index 100%
rename from rpcs3/Emu/GS/RSXTexture.cpp
rename to rpcs3/Emu/RSX/RSXTexture.cpp
diff --git a/rpcs3/Emu/GS/RSXTexture.h b/rpcs3/Emu/RSX/RSXTexture.h
similarity index 100%
rename from rpcs3/Emu/GS/RSXTexture.h
rename to rpcs3/Emu/RSX/RSXTexture.h
diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp
similarity index 100%
rename from rpcs3/Emu/GS/RSXThread.cpp
rename to rpcs3/Emu/RSX/RSXThread.cpp
diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h
similarity index 100%
rename from rpcs3/Emu/GS/RSXThread.h
rename to rpcs3/Emu/RSX/RSXThread.h
diff --git a/rpcs3/Emu/GS/RSXVertexProgram.h b/rpcs3/Emu/RSX/RSXVertexProgram.h
similarity index 100%
rename from rpcs3/Emu/GS/RSXVertexProgram.h
rename to rpcs3/Emu/RSX/RSXVertexProgram.h
diff --git a/rpcs3/Emu/GS/sysutil_video.h b/rpcs3/Emu/RSX/sysutil_video.h
similarity index 100%
rename from rpcs3/Emu/GS/sysutil_video.h
rename to rpcs3/Emu/RSX/sysutil_video.h
diff --git a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp
index 9c31b9130d..17d34d1610 100644
--- a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp
+++ b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp
@@ -4,7 +4,7 @@
#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"
diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h
index 3b9f992ee4..7052d05118 100644
--- a/rpcs3/Emu/System.h
+++ b/rpcs3/Emu/System.h
@@ -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"
diff --git a/rpcs3/Gui/MainFrame.cpp b/rpcs3/Gui/MainFrame.cpp
index 5c71f2abdd..923390d63d 100644
--- a/rpcs3/Gui/MainFrame.cpp
+++ b/rpcs3/Gui/MainFrame.cpp
@@ -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"
diff --git a/rpcs3/Gui/RSXDebugger.cpp b/rpcs3/Gui/RSXDebugger.cpp
index b145d49079..d3aeb017ae 100644
--- a/rpcs3/Gui/RSXDebugger.cpp
+++ b/rpcs3/Gui/RSXDebugger.cpp
@@ -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"
diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj
index 8c856e1d45..ff0f638f7d 100644
--- a/rpcs3/emucore.vcxproj
+++ b/rpcs3/emucore.vcxproj
@@ -74,22 +74,22 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -284,22 +284,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -314,6 +298,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters
index 3b692b7c0a..e976ffed57 100644
--- a/rpcs3/emucore.vcxproj.filters
+++ b/rpcs3/emucore.vcxproj.filters
@@ -33,15 +33,6 @@
{c04826b8-05a1-4015-b3aa-ef44805531a2}
-
- {c344f241-48a9-4950-8b94-8b60adc4a67f}
-
-
- {9aaa9b5c-c890-485c-a729-d2b5e783406f}
-
-
- {f81523a6-0846-4abc-96b2-1284b2506485}
-
{b26b6b08-a8ce-4bb5-8339-c5352a23ce96}
@@ -81,6 +72,15 @@
{187d33b8-7b69-4081-9545-de6ad1d8fe98}
+
+ {fadb4b36-57af-4583-891d-d22ff369e266}
+
+
+ {4adca4fa-b90f-4662-9eb0-1d29cf3cd2eb}
+
+
+ {6f1da5b2-52c5-416b-9b5c-b9897bc1b300}
+
@@ -236,39 +236,6 @@
Emu\Io
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
Emu\FS
@@ -587,6 +554,39 @@
Emu\SysCalls\Modules
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
@@ -730,54 +730,6 @@
Emu\Io\Windows
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\GL
-
-
- Emu\GS\Null
-
Emu\FS
@@ -1111,5 +1063,59 @@
Emu\SysCalls\Modules
+
+ Emu\RSX\Null
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX\GL
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+
+
+ Emu\RSX
+