From 103c285c44b5a36d096006a77e06a86a07e52bb1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 10 Dec 2015 01:30:33 +0100 Subject: [PATCH] fix vk_ files to compile (commented out GetHandleForSurface) --- renderdoc/driver/vulkan/Makefile | 2 ++ renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj | 8 ++++---- renderdoc/driver/vulkan/vk_common.h | 5 ----- renderdoc/driver/vulkan/vk_core.h | 1 + renderdoc/driver/vulkan/vk_dispatchtables.cpp | 12 ++++++++++++ renderdoc/driver/vulkan/vk_linux.cpp | 14 ++++++-------- renderdoc/driver/vulkan/vk_replay.h | 2 +- renderdoc/driver/vulkan/vk_win32.cpp | 16 +++++++++++----- 8 files changed, 37 insertions(+), 23 deletions(-) diff --git a/renderdoc/driver/vulkan/Makefile b/renderdoc/driver/vulkan/Makefile index f6c397264..166570fc9 100644 --- a/renderdoc/driver/vulkan/Makefile +++ b/renderdoc/driver/vulkan/Makefile @@ -4,6 +4,8 @@ COMMIT=`git rev-parse HEAD` MACROS=-DLINUX \ -DRENDERDOC_PLATFORM=linux \ -DRENDERDOC_EXPORTS \ + -DVK_USE_PLATFORM_XCB_KHR \ + -DVK_USE_PLATFORM_XLIB_KHR \ -DGIT_COMMIT_HASH="\"$(COMMIT)\"" CFLAGS=-c -Wall -Werror -Wno-unused -Wno-unknown-pragmas -fPIC $(MACROS) -I../../ -I../../3rdparty/ -I$(VK_SDK_PATH)/include/vulkan CPPFLAGS=-std=c++11 -g -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden diff --git a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj index b63c51f2c..eb3f4eafd 100644 --- a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj +++ b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj @@ -139,7 +139,7 @@ Level3 Disabled - RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;WIN64;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;VK_USE_PLATFORM_WIN32_KHR;WIN64;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) $(SolutionDir)renderdoc\;$(SolutionDir)renderdoc\3rdparty\ MultiThreadedDLL true @@ -156,7 +156,7 @@ NotUsing Level3 Disabled - RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;WIN64;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;VK_USE_PLATFORM_WIN32_KHR;WIN64;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) $(SolutionDir)renderdoc\;$(SolutionDir)renderdoc\3rdparty\ false MultiThreadedDLL @@ -176,7 +176,7 @@ MaxSpeed true true - RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;WIN64;WIN32;RELEASE;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;VK_USE_PLATFORM_WIN32_KHR;WIN64;WIN32;RELEASE;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) $(SolutionDir)renderdoc\;$(SolutionDir)renderdoc\3rdparty\ false MultiThreadedDLL @@ -198,7 +198,7 @@ MaxSpeed true true - RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;USE_BREAKPAD;WIN64;WIN32;RELEASE;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + RENDERDOC_EXPORTS;RENDERDOC_PLATFORM=win32;VK_USE_PLATFORM_WIN32_KHR;USE_BREAKPAD;WIN64;WIN32;RELEASE;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) $(SolutionDir)renderdoc\;$(SolutionDir)renderdoc\3rdparty\ false MultiThreadedDLL diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 8da081dce..8a4c78a4f 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -38,11 +38,6 @@ #include "core/core.h" -// this needs to be above the include of vulkan.h -#if defined(__linux__) -#include -#endif - #include #include #include diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 75dfaf520..e10fc7843 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -223,6 +223,7 @@ private: // return the pre-selected device and queue VkDevice GetDev() { RDCASSERT(m_Device != VK_NULL_HANDLE); return m_Device; } VkQueue GetQ() { RDCASSERT(m_Device != VK_NULL_HANDLE); return m_Queue; } + VkInstance GetInstance() { RDCASSERT(m_Instance != VK_NULL_HANDLE); return m_Instance; } VkCommandBuffer GetNextCmd(); void SubmitCmds(); void FlushQ(); diff --git a/renderdoc/driver/vulkan/vk_dispatchtables.cpp b/renderdoc/driver/vulkan/vk_dispatchtables.cpp index 372d35ed0..6910c7f0e 100644 --- a/renderdoc/driver/vulkan/vk_dispatchtables.cpp +++ b/renderdoc/driver/vulkan/vk_dispatchtables.cpp @@ -73,6 +73,18 @@ void InitInstanceReplayTables(VkInstance instance) InstanceGPA(DbgCreateMsgCallback) InstanceGPA(DbgDestroyMsgCallback) +#ifdef VK_USE_PLATFORM_WIN32_KHR + InstanceGPA(CreateWin32SurfaceKHR) +#endif + +#ifdef VK_USE_PLATFORM_XCB_KHR + InstanceGPA(CreateXcbSurfaceKHR) +#endif + +#ifdef VK_USE_PLATFORM_XLIB_KHR + InstanceGPA(CreateXlibSurfaceKHR) +#endif + #undef InstanceGPA } diff --git a/renderdoc/driver/vulkan/vk_linux.cpp b/renderdoc/driver/vulkan/vk_linux.cpp index 002f190c1..e6abe9527 100644 --- a/renderdoc/driver/vulkan/vk_linux.cpp +++ b/renderdoc/driver/vulkan/vk_linux.cpp @@ -46,15 +46,12 @@ void VulkanReplay::OutputWindow::SetWindowHandle(void *wn) screen = iter.data; } -void VulkanReplay::OutputWindow::InitSurfaceDescription(VkSurfaceDescriptionWindowKHR &surfDesc) +void VulkanReplay::OutputWindow::InitSurfaceDescription(WrappedVulkan *driver) { - static VkPlatformHandleXcbKHR handle; - handle.connection = connection; - handle.root = screen->root; + VkInstance inst = driver->GetInstance(); - surfDesc.pPlatformHandle = &handle; - surfDesc.pPlatformWindow = &wnd; - surfDesc.platform = VK_PLATFORM_X11_KHR; + VkResult vkr = ObjDisp(inst)->vkCreateXcbSurfaceKHR(Unwrap(inst), connection, &wnd, NULL, &surface); + RDCASSERT(vkr == VK_SUCCESS); } void VulkanReplay::GetOutputWindowDimensions(uint64_t id, int32_t &w, int32_t &h) @@ -83,6 +80,7 @@ bool VulkanReplay::IsOutputWindowVisible(uint64_t id) return true; } +/* RENDERDOC_WindowHandle WrappedVulkan::GetHandleForSurface(const VkSurfaceDescriptionKHR* surf) { RDCASSERT(surf); @@ -113,7 +111,7 @@ RENDERDOC_WindowHandle WrappedVulkan::GetHandleForSurface(const VkSurfaceDescrip RDCERR("Unsupported platform %u", (uint32_t)winDesc->platform); return NULL; -} +}*/ void *LoadVulkanLibrary() { diff --git a/renderdoc/driver/vulkan/vk_replay.h b/renderdoc/driver/vulkan/vk_replay.h index dd65217ff..ddaa00542 100644 --- a/renderdoc/driver/vulkan/vk_replay.h +++ b/renderdoc/driver/vulkan/vk_replay.h @@ -179,7 +179,7 @@ class VulkanReplay : public IReplayDriver void Destroy(WrappedVulkan *driver, VkDevice device); // implemented in vk_replay_platform.cpp - void CreateSurface(); + void CreateSurface(WrappedVulkan *driver); void SetWindowHandle(void *wn); WINDOW_HANDLE_DECL diff --git a/renderdoc/driver/vulkan/vk_win32.cpp b/renderdoc/driver/vulkan/vk_win32.cpp index 903e3c47f..3ad1e8f3a 100644 --- a/renderdoc/driver/vulkan/vk_win32.cpp +++ b/renderdoc/driver/vulkan/vk_win32.cpp @@ -32,13 +32,17 @@ void VulkanReplay::OutputWindow::SetWindowHandle(void *wn) wnd = (HWND)wn; } -void VulkanReplay::OutputWindow::InitSurfaceDescription(VkSurfaceDescriptionWindowKHR &surfDesc) +void VulkanReplay::OutputWindow::CreateSurface(WrappedVulkan *driver) { + VkInstance inst = driver->GetInstance(); + + HINSTANCE hinst; + GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, - (const char *)&dllLocator, (HMODULE *)&surfDesc.pPlatformHandle); - - surfDesc.pPlatformWindow = wnd; - surfDesc.platform = VK_PLATFORM_WIN32_KHR; + (const char *)&dllLocator, (HMODULE *)&hinst); + + VkResult vkr = ObjDisp(inst)->CreateWin32SurfaceKHR(Unwrap(inst), hinst, wnd, NULL, &surface); + RDCASSERT(vkr == VK_SUCCESS); } void VulkanReplay::GetOutputWindowDimensions(uint64_t id, int32_t &w, int32_t &h) @@ -62,6 +66,7 @@ bool VulkanReplay::IsOutputWindowVisible(uint64_t id) return (IsWindowVisible(m_OutputWindows[id].wnd) == TRUE); } +/* RENDERDOC_WindowHandle WrappedVulkan::GetHandleForSurface(const VkSurfaceDescriptionKHR* surf) { RDCASSERT(surf); @@ -71,6 +76,7 @@ RENDERDOC_WindowHandle WrappedVulkan::GetHandleForSurface(const VkSurfaceDescrip return winDesc->pPlatformWindow; } +*/ void *LoadVulkanLibrary() {