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