diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8cdbdff811..a3fc60adde 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -803,7 +803,10 @@ endif()
set(THIN3D_PLATFORMS ext/native/thin3d/thin3d_gl.cpp)
if(VULKAN)
- set(THIN3D_PLATFORMS ${THIN3D_PLATFORMS} ext/native/thin3d/thin3d_vulkan.cpp)
+ set(THIN3D_PLATFORMS ${THIN3D_PLATFORMS}
+ ext/native/thin3d/thin3d_vulkan.cpp
+ ext/native/thin3d/VulkanRenderManager.cpp
+ ext/native/thin3d/VulkanRenderManager.h)
endif()
if(WIN32)
set(THIN3D_PLATFORMS ${THIN3D_PLATFORMS}
diff --git a/Common/Common.vcxproj b/Common/Common.vcxproj
index 07fc66510c..86758c4229 100644
--- a/Common/Common.vcxproj
+++ b/Common/Common.vcxproj
@@ -249,8 +249,6 @@
-
-
@@ -322,8 +320,6 @@
-
-
diff --git a/Common/Common.vcxproj.filters b/Common/Common.vcxproj.filters
index 413f08cb8b..0251f2b334 100644
--- a/Common/Common.vcxproj.filters
+++ b/Common/Common.vcxproj.filters
@@ -75,12 +75,6 @@
-
- Vulkan
-
-
- Vulkan
-
@@ -144,12 +138,6 @@
-
- Vulkan
-
-
- Vulkan
-
diff --git a/GPU/Vulkan/DrawEngineVulkan.cpp b/GPU/Vulkan/DrawEngineVulkan.cpp
index 692ce13ec2..0cc249cf9a 100644
--- a/GPU/Vulkan/DrawEngineVulkan.cpp
+++ b/GPU/Vulkan/DrawEngineVulkan.cpp
@@ -21,9 +21,9 @@
#include "base/timeutil.h"
#include "math/dataconv.h"
#include "profiler/profiler.h"
+#include "thin3d/VulkanRenderManager.h"
#include "Common/MemoryUtil.h"
-#include "Common/Vulkan/VulkanRenderManager.h"
#include "Core/MemMap.h"
#include "Core/Host.h"
#include "Core/System.h"
@@ -646,7 +646,7 @@ void DrawEngineVulkan::DoFlush() {
VulkanRenderManager *renderManager = (VulkanRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER);
- // HACK: These two lines should only execute if we started on a new render pass.
+ // HACK: These two lines should only execute if we started on a new render pass. Can't tell from in here though...
lastPipeline_ = nullptr;
// Since we have a new cmdbuf, dirty our dynamic state so it gets re-set.
// gstate_c.Dirty(DIRTY_VIEWPORTSCISSOR_STATE|DIRTY_DEPTHSTENCIL_STATE|DIRTY_BLEND_STATE);
diff --git a/GPU/Vulkan/FramebufferVulkan.cpp b/GPU/Vulkan/FramebufferVulkan.cpp
index 3422f8a117..bf33417a4a 100644
--- a/GPU/Vulkan/FramebufferVulkan.cpp
+++ b/GPU/Vulkan/FramebufferVulkan.cpp
@@ -28,7 +28,7 @@
#include "Common/Vulkan/VulkanContext.h"
#include "Common/Vulkan/VulkanMemory.h"
#include "Common/Vulkan/VulkanImage.h"
-#include "Common/Vulkan/VulkanRenderManager.h"
+#include "thin3d/VulkanRenderManager.h"
#include "Common/ColorConv.h"
#include "Core/Host.h"
#include "Core/MemMap.h"
diff --git a/GPU/Vulkan/StateMappingVulkan.cpp b/GPU/Vulkan/StateMappingVulkan.cpp
index 3e919eec92..3c170cc784 100644
--- a/GPU/Vulkan/StateMappingVulkan.cpp
+++ b/GPU/Vulkan/StateMappingVulkan.cpp
@@ -16,7 +16,7 @@
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "Common/Vulkan/VulkanLoader.h"
-#include "Common/Vulkan/VulkanRenderManager.h"
+#include "thin3d/VulkanRenderManager.h"
#include "math/dataconv.h"
#include "GPU/Math3D.h"
diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp
index 5ed28dbd46..e0e772d1c1 100644
--- a/android/jni/app-android.cpp
+++ b/android/jni/app-android.cpp
@@ -312,19 +312,20 @@ bool AndroidVulkanContext::Init(ANativeWindow *wnd, int desiredBackbufferSizeX,
int bits = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
g_Vulkan->InitDebugMsgCallback(&Vulkan_Dbg, bits, &g_LogOptions);
}
- g_Vulkan->InitObjects(true);
+ g_Vulkan->InitObjects();
draw_ = Draw::T3DCreateVulkanContext(g_Vulkan);
bool success = draw_->CreatePresets(); // Doesn't fail, we ship the compiler.
assert(success);
+ draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
return true;
}
void AndroidVulkanContext::Shutdown() {
ILOG("AndroidVulkanContext::Shutdown");
+ draw_->HandleEvent(Draw::Event::LOST_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
delete draw_;
draw_ = nullptr;
NativeShutdownGraphics();
-
g_Vulkan->WaitUntilQueueIdle();
g_Vulkan->DestroyObjects();
g_Vulkan->DestroyDebugMsgCallback();
@@ -341,11 +342,13 @@ void AndroidVulkanContext::SwapBuffers() {
void AndroidVulkanContext::Resize() {
g_Vulkan->WaitUntilQueueIdle();
+ draw_->HandleEvent(Draw::Event::LOST_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
g_Vulkan->DestroyObjects();
// backbufferResize updated these values. TODO: Notify another way?
g_Vulkan->ReinitSurfaceAndroid(pixel_xres, pixel_yres);
- g_Vulkan->InitObjects(g_Vulkan);
+ g_Vulkan->InitObjects();
+ draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
}
void AndroidVulkanContext::SwapInterval(int interval) {
diff --git a/ext/native/native.vcxproj b/ext/native/native.vcxproj
index ea47f94dea..681a99b453 100644
--- a/ext/native/native.vcxproj
+++ b/ext/native/native.vcxproj
@@ -240,6 +240,8 @@
+
+
@@ -697,6 +699,8 @@
+
+
diff --git a/ext/native/native.vcxproj.filters b/ext/native/native.vcxproj.filters
index e551ed8b0e..57aee62de4 100644
--- a/ext/native/native.vcxproj.filters
+++ b/ext/native/native.vcxproj.filters
@@ -320,6 +320,12 @@
gfx
+
+ thin3d
+
+
+ thin3d
+
@@ -781,6 +787,12 @@
math
+
+ thin3d
+
+
+ thin3d
+
diff --git a/ext/native/profiler/profiler.h b/ext/native/profiler/profiler.h
index e4cd55d255..f615e2e88c 100644
--- a/ext/native/profiler/profiler.h
+++ b/ext/native/profiler/profiler.h
@@ -2,6 +2,8 @@
#include
+// NOTE : This profiler is very single-threaded. Cannot be used from multiple threads yet.
+
// #define USE_PROFILER
#ifdef USE_PROFILER
@@ -14,7 +16,6 @@ void internal_profiler_end_frame();
int internal_profiler_enter(const char *category_name); // Returns the category number.
void internal_profiler_leave(int category);
-
const char *Profiler_GetCategoryName(int i);
int Profiler_GetNumCategories();
int Profiler_GetHistoryLength();
diff --git a/Common/Vulkan/VulkanQueueRunner.cpp b/ext/native/thin3d/VulkanQueueRunner.cpp
similarity index 100%
rename from Common/Vulkan/VulkanQueueRunner.cpp
rename to ext/native/thin3d/VulkanQueueRunner.cpp
diff --git a/Common/Vulkan/VulkanQueueRunner.h b/ext/native/thin3d/VulkanQueueRunner.h
similarity index 100%
rename from Common/Vulkan/VulkanQueueRunner.h
rename to ext/native/thin3d/VulkanQueueRunner.h
diff --git a/Common/Vulkan/VulkanRenderManager.cpp b/ext/native/thin3d/VulkanRenderManager.cpp
similarity index 99%
rename from Common/Vulkan/VulkanRenderManager.cpp
rename to ext/native/thin3d/VulkanRenderManager.cpp
index a2e2d7fd1f..195083b35f 100644
--- a/Common/Vulkan/VulkanRenderManager.cpp
+++ b/ext/native/thin3d/VulkanRenderManager.cpp
@@ -1,7 +1,7 @@
#include "base/logging.h"
-#include "VulkanRenderManager.h"
-#include "VulkanContext.h"
+#include "Common/Vulkan/VulkanContext.h"
+#include "thin3d/VulkanRenderManager.h"
void CreateImage(VulkanContext *vulkan, VkCommandBuffer cmd, VKRImage &img, int width, int height, VkFormat format, VkImageLayout initialLayout, bool color) {
VkImageCreateInfo ici{ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
diff --git a/Common/Vulkan/VulkanRenderManager.h b/ext/native/thin3d/VulkanRenderManager.h
similarity index 100%
rename from Common/Vulkan/VulkanRenderManager.h
rename to ext/native/thin3d/VulkanRenderManager.h
diff --git a/ext/native/thin3d/thin3d_vulkan.cpp b/ext/native/thin3d/thin3d_vulkan.cpp
index 967b27c85e..3644db1a12 100644
--- a/ext/native/thin3d/thin3d_vulkan.cpp
+++ b/ext/native/thin3d/thin3d_vulkan.cpp
@@ -30,11 +30,11 @@
#include "math/lin/matrix4x4.h"
#include "math/dataconv.h"
#include "thin3d/thin3d.h"
+#include "thin3d/VulkanRenderManager.h"
#include "Common/Vulkan/VulkanContext.h"
#include "Common/Vulkan/VulkanImage.h"
#include "Common/Vulkan/VulkanMemory.h"
-#include "Common/Vulkan/VulkanRenderManager.h"
// We use a simple descriptor set for all rendering: 1 sampler, 1 texture, 1 UBO binding point.
// binding 0 - uniform data