Compile fixes for windows

* Even though nothing runs on windows, it's better for doing some
  refactoring.
This commit is contained in:
baldurk
2016-02-07 18:38:36 +01:00
parent 6697ce2d95
commit 5e627f6a81
3 changed files with 79 additions and 61 deletions
+54 -54
View File
@@ -229,25 +229,25 @@ void WrappedVulkan::Initialise(VkInitParams &params)
extscstr[i] = params.Extensions[i].c_str();
VkApplicationInfo appinfo = {
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pNext = NULL,
.pAppName = params.AppName.c_str(),
.appVersion = params.AppVersion,
.pEngineName = params.EngineName.c_str(),
.engineVersion = params.EngineVersion,
.apiVersion = VK_API_VERSION,
/*.sType =*/ VK_STRUCTURE_TYPE_APPLICATION_INFO,
/*.pNext =*/ NULL,
/*.pAppName =*/ params.AppName.c_str(),
/*.appVersion =*/ params.AppVersion,
/*.pEngineName =*/ params.EngineName.c_str(),
/*.engineVersion =*/ params.EngineVersion,
/*.apiVersion =*/ VK_API_VERSION,
};
// VKTODO
RDCASSERT(params.APIVersion == VK_API_VERSION);
VkInstanceCreateInfo instinfo = {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pNext = NULL,
.pAppInfo = &appinfo,
.pAllocCb = NULL,
.layerCount = (uint32_t)params.Layers.size(),
.ppEnabledLayerNames = layerscstr,
.extensionCount = (uint32_t)params.Extensions.size(),
.ppEnabledExtensionNames = extscstr,
/*.sType =*/ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
/*.pNext =*/ NULL,
/*.pAppInfo =*/ &appinfo,
/*.pAllocCb =*/ NULL,
/*.layerCount =*/ (uint32_t)params.Layers.size(),
/*.ppEnabledLayerNames =*/ layerscstr,
/*.extensionCount =*/ (uint32_t)params.Extensions.size(),
/*.ppEnabledExtensionNames =*/ extscstr,
};
VkInstance inst;
@@ -385,7 +385,7 @@ WrappedVulkan::WrappedVulkan(const VulkanFunctions &real, const char *logFilenam
WrappedVulkan::~WrappedVulkan()
{
#if defined(FORCE_VALIDATION_LAYER)
if(m_MsgCallback)
if(m_MsgCallback != VK_NULL_HANDLE)
{
// VKTODO [0] isn't right..
m_Real.vkDbgDestroyMsgCallback(m_PhysicalReplayData[0].inst, m_MsgCallback);
@@ -460,7 +460,7 @@ VkResult WrappedVulkan::vkDestroyInstance(
if(ret != VK_SUCCESS)
return ret;
if(RenderDoc::Inst().GetCaptureOptions().DebugDeviceMode && m_MsgCallback)
if(RenderDoc::Inst().GetCaptureOptions().DebugDeviceMode && m_MsgCallback != VK_NULL_HANDLE)
{
m_Real.vkDbgDestroyMsgCallback(instance, m_MsgCallback);
}
@@ -2998,7 +2998,7 @@ VkResult WrappedVulkan::vkResetCommandPool(
VkCmdPoolResetFlags flags)
{
// VKTODO do I need to serialise this? just a driver hint..
return vkResetCommandPool(device, cmdPool, flags);
return m_Real.vkResetCommandPool(device, cmdPool, flags);
}
@@ -3222,13 +3222,13 @@ VkResult WrappedVulkan::vkUpdateDescriptorSets(
for(uint32_t d=0; d < pDescriptorWrites[i].count; d++)
{
if(pDescriptorWrites[i].pDescriptors[d].bufferView)
if(pDescriptorWrites[i].pDescriptors[d].bufferView != VK_NULL_HANDLE)
record->AddParent(GetResourceManager()->GetResourceRecord(MakeRes(pDescriptorWrites[i].pDescriptors[d].bufferView)));
if(pDescriptorWrites[i].pDescriptors[d].sampler)
if(pDescriptorWrites[i].pDescriptors[d].sampler != VK_NULL_HANDLE)
record->AddParent(GetResourceManager()->GetResourceRecord(MakeRes(pDescriptorWrites[i].pDescriptors[d].sampler)));
if(pDescriptorWrites[i].pDescriptors[d].imageView)
if(pDescriptorWrites[i].pDescriptors[d].imageView != VK_NULL_HANDLE)
record->AddParent(GetResourceManager()->GetResourceRecord(MakeRes(pDescriptorWrites[i].pDescriptors[d].imageView)));
if(pDescriptorWrites[i].pDescriptors[d].attachmentView)
if(pDescriptorWrites[i].pDescriptors[d].attachmentView != VK_NULL_HANDLE)
record->AddParent(GetResourceManager()->GetResourceRecord(MakeRes(pDescriptorWrites[i].pDescriptors[d].attachmentView)));
}
}
@@ -5524,29 +5524,29 @@ bool WrappedVulkan::Serialise_vkCreateSwapChainWSI(
RDCASSERT(imFormat == info.imageFormat);
VkDevice dev = (VkDevice)GetResourceManager()->GetLiveResource(devId).handle;
const VkImageCreateInfo imInfo = {
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
.pNext = NULL,
.imageType = VK_IMAGE_TYPE_2D,
.format = imFormat,
.extent = { info.imageExtent.width, info.imageExtent.height, 1 },
.mipLevels = 1,
.arraySize = info.imageArraySize,
.samples = 1,
.tiling = VK_IMAGE_TILING_OPTIMAL,
.usage =
VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT|
VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT|
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
.flags = 0,
};
const VkImageCreateInfo imInfo = {
/*.sType =*/ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
/*.pNext =*/ NULL,
/*.imageType =*/ VK_IMAGE_TYPE_2D,
/*.format =*/ imFormat,
/*.extent =*/ { info.imageExtent.width, info.imageExtent.height, 1 },
/*.mipLevels =*/ 1,
/*.arraySize =*/ info.imageArraySize,
/*.samples =*/ 1,
/*.tiling =*/ VK_IMAGE_TILING_OPTIMAL,
/*.usage =*/
VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT|
VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT|
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
/*.flags =*/ 0,
};
for(size_t i=0; i < m_PhysicalReplayData.size(); i++)
{
if(m_PhysicalReplayData[i].dev == dev)
m_SwapPhysDevice = i;
m_SwapPhysDevice = (int)i;
}
for(uint32_t i=0; i < numSwapImages; i++)
@@ -5563,10 +5563,10 @@ bool WrappedVulkan::Serialise_vkCreateSwapChainWSI(
RDCASSERT(res == VK_SUCCESS);
VkMemoryAllocInfo allocInfo = {
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
.pNext = NULL,
.allocationSize = mrq.size,
.memoryTypeIndex = 0, // VKTODO find appropriate memory type index
/*.sType =*/ VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
/*.pNext =*/ NULL,
/*.allocationSize =*/ mrq.size,
/*.memoryTypeIndex =*/ 0, // VKTODO find appropriate memory type index
};
res = m_Real.vkAllocMemory(dev, &allocInfo, &mem);
@@ -5636,7 +5636,7 @@ VkResult WrappedVulkan::vkCreateSwapChainWSI(
for(size_t i=0; i < m_PhysicalReplayData.size(); i++)
{
if(m_PhysicalReplayData[i].dev == device)
m_SwapPhysDevice = i;
m_SwapPhysDevice = (int)i;
}
// serialise out the swap chain images
@@ -5881,10 +5881,10 @@ bool WrappedVulkan::Prepare_InitialState(VkResource res)
VkDeviceMemory mem = VK_NULL_HANDLE;
VkMemoryAllocInfo allocInfo = {
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
.pNext = NULL,
.allocationSize = meminfo.size,
.memoryTypeIndex = 0,
/*.sType =*/ VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
/*.pNext =*/ NULL,
/*.allocationSize =*/ meminfo.size,
/*.memoryTypeIndex =*/ 0,
};
// VKTODO memory type index needs to be host-visible for copy back
@@ -6007,10 +6007,10 @@ bool WrappedVulkan::Serialise_InitialState(VkResource res)
VkDeviceMemory mem = VK_NULL_HANDLE;
VkMemoryAllocInfo allocInfo = {
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
.pNext = NULL,
.allocationSize = dataSize,
.memoryTypeIndex = 0,
/*.sType =*/ VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
/*.pNext =*/ NULL,
/*.allocationSize =*/ dataSize,
/*.memoryTypeIndex =*/ 0,
};
// VKTODO memory type index needs to be host-visible for copy
@@ -194,4 +194,10 @@ class VulkanHook : LibraryHook
VulkanHook VulkanHook::vulkanhooks;
void PopulateDeviceHooks(VkDevice d, VkInstance i)
{
// don't need to bother with an impl because this file will be replaced
// before we ever run on windows
}
const VulkanFunctions &GetRealVKFunctions() { return VulkanHook::vulkanhooks.GetRealVKFunctions(); }
+19 -7
View File
@@ -22,9 +22,6 @@
* THE SOFTWARE.
******************************************************************************/
#include <X11/Xlib.h>
#include <X11/Xlib-xcb.h>
#include "vk_replay.h"
#include "vk_core.h"
#include "vk_resources.h"
@@ -92,11 +89,26 @@ void VulkanReplay::OutputWindow::MakeTargets(const VulkanFunctions &vk, VkDevice
VkSwapChainWSI old = swap;
void *handleptr = NULL;
VkPlatformWSI platform = VK_PLATFORM_MAX_ENUM_WSI;
#if defined(WIN32)
static int dllLocator=0;
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (const char *)&dllLocator, (HMODULE *)&handleptr);
platform = VK_PLATFORM_WIN32_WSI;
#elif defined(__linux__)
VkPlatformHandleXcbWSI handle;
handle.connection = connection;
handle.root = screen->root;
VkSurfaceDescriptionWindowWSI surfDesc = { VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_WSI, NULL, VK_PLATFORM_X11_WSI, &handle, &wnd };
handleptr = &handle;
platform = VK_PLATFORM_X11_WSI;
#else
#error "unknown platform"
#endif
VkSurfaceDescriptionWindowWSI surfDesc = { VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_WSI, NULL, VK_PLATFORM_X11_WSI, handleptr, &wnd };
VkSwapChainCreateInfoWSI swapInfo = {
VK_STRUCTURE_TYPE_SWAP_CHAIN_CREATE_INFO_WSI, NULL, (VkSurfaceDescriptionWSI *)&surfDesc,
@@ -115,7 +127,7 @@ void VulkanReplay::OutputWindow::MakeTargets(const VulkanFunctions &vk, VkDevice
res = vk.vkGetSwapChainInfoWSI(device, swap, VK_SWAP_CHAIN_INFO_TYPE_IMAGES_WSI, &sz, NULL);
RDCASSERT(res == VK_SUCCESS);
numImgs = sz/sizeof(VkSwapChainImagePropertiesWSI);
numImgs = uint32_t(sz/sizeof(VkSwapChainImagePropertiesWSI));
VkSwapChainImagePropertiesWSI* imgs = new VkSwapChainImagePropertiesWSI[numImgs];
res = vk.vkGetSwapChainInfoWSI(device, swap, VK_SWAP_CHAIN_INFO_TYPE_IMAGES_WSI, &sz, imgs);
@@ -745,9 +757,9 @@ ReplayCreateStatus Vulkan_CreateReplayDevice(const char *logfile, IReplayDriver
RDCDEBUG("Creating a VulkanReplay replay device");
#if defined(WIN32)
bool loaded = Process::LoadLibrary("vulkan.dll");
bool loaded = Process::LoadModule("vulkan.dll");
#elif defined(__linux__)
bool loaded = Process::LoadLibrary("libvulkan.so");
bool loaded = Process::LoadModule("libvulkan.so");
#else
#error "Unknown platform"
#endif