diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index b691d417d..0c50d1b02 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -240,24 +240,17 @@ void WrappedVulkan::Initialise(VkInitParams ¶ms) 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, + VK_STRUCTURE_TYPE_APPLICATION_INFO, NULL, + params.AppName.c_str(), params.AppVersion, + params.EngineName.c_str(), params.EngineVersion, + 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, + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, NULL, + &appinfo, NULL, + (uint32_t)params.Layers.size(), layerscstr, + (uint32_t)params.Extensions.size(), extscstr, }; VkInstance inst = {0}; diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index 4639047c7..9ac0f778e 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -216,6 +216,7 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) false, VK_COMPARE_OP_NEVER, 0.0f, 0.0f, // min/max lod VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, + false, // unnormalized }; vkr = vt->CreateSampler(Unwrap(dev), &sampInfo, &m_LinearSampler); @@ -411,6 +412,16 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) GetEmbeddedResource(genericvs_spv), GetEmbeddedResource(genericfs_spv), }; + + bool vtxShader[] = { + true, + false, + false, + true, + false, + true, + false, + }; enum shaderIdx { @@ -441,6 +452,7 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) VkShaderCreateInfo shadinfo = { VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, NULL, Unwrap(module[i]), "main", 0, + vtxShader[i] ? VK_SHADER_STAGE_VERTEX : VK_SHADER_STAGE_FRAGMENT, }; vkr = vt->CreateShader(Unwrap(dev), &shadinfo, &shader[i]); @@ -608,17 +620,15 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) int width = FONT_TEX_WIDTH, height = FONT_TEX_HEIGHT; VkImageCreateInfo imInfo = { - /*.sType =*/ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, - /*.pNext =*/ NULL, - /*.imageType =*/ VK_IMAGE_TYPE_2D, - /*.format =*/ VK_FORMAT_R8_UNORM, - /*.extent =*/ { width, height, 1 }, - /*.mipLevels =*/ 1, - /*.arraySize =*/ 1, - /*.samples =*/ 1, - /*.tiling =*/ VK_IMAGE_TILING_LINEAR, - /*.usage =*/ VK_IMAGE_USAGE_SAMPLED_BIT, - /*.flags =*/ 0, + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, + VK_IMAGE_TYPE_2D, VK_FORMAT_R8_UNORM, + { width, height, 1 }, 1, 1, 1, + VK_IMAGE_TILING_LINEAR, + VK_IMAGE_USAGE_SAMPLED_BIT, + 0, + VK_SHARING_MODE_EXCLUSIVE, + 0, NULL, + VK_IMAGE_LAYOUT_PREINITIALIZED, }; string font = GetEmbeddedResource(sourcecodepro_ttf); @@ -680,7 +690,8 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) Unwrap(m_TextAtlas), VK_IMAGE_VIEW_TYPE_2D, imInfo.format, { VK_CHANNEL_SWIZZLE_R, VK_CHANNEL_SWIZZLE_G, VK_CHANNEL_SWIZZLE_B, VK_CHANNEL_SWIZZLE_A }, - { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1, } + { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1, }, + 0, }; // VKTODOMED used for texture display, but eventually will have to be created on the fly @@ -703,8 +714,10 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) VkImageMemoryBarrier trans = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, - 0, 0, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - 0, 0, Unwrap(m_TextAtlas), + 0, 0, + VK_IMAGE_LAYOUT_PREINITIALIZED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + Unwrap(m_TextAtlas), { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; void *barrier = (void *)&trans; diff --git a/renderdoc/driver/vulkan/vk_manager.cpp b/renderdoc/driver/vulkan/vk_manager.cpp index a01e31d82..b8baa67a9 100644 --- a/renderdoc/driver/vulkan/vk_manager.cpp +++ b/renderdoc/driver/vulkan/vk_manager.cpp @@ -241,8 +241,8 @@ void VulkanResourceManager::SerialiseImageStates(map &stat // barrier happened. t.inputMask = 0; t.outputMask = 0; - t.srcQueueFamilyIndex = 0; - t.destQueueFamilyIndex = 0; + t.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + t.destQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; t.image = Unwrap(GetCurrentHandle(liveid)); t.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; t.newLayout = state.state; diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 49cc895cd..9c937554e 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -78,7 +78,8 @@ VulkanReplay::OutputWindow::OutputWindow() : wnd(NULL_WND_HANDLE), width(0), hei VkImageMemoryBarrier t = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, 0, 0, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_UNDEFINED, - 0, 0, VK_NULL_HANDLE, + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + VK_NULL_HANDLE, { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; for(size_t i=0; i < ARRAY_COUNT(coltrans); i++) @@ -323,8 +324,8 @@ void VulkanReplay::OutputWindow::Create(WrappedVulkan *driver, VkDevice device, 1, 1, 1, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, - 0, VK_SHARING_MODE_EXCLUSIVE, - 0, NULL, + 0, VK_SHARING_MODE_EXCLUSIVE, 0, NULL, + VK_IMAGE_LAYOUT_UNDEFINED, }; VkResult vkr = vt->CreateImage(Unwrap(device), &imInfo, &bb); @@ -558,8 +559,10 @@ void VulkanReplay::PickPixel(ResourceId texture, uint32_t x, uint32_t y, uint32_ VkImageMemoryBarrier fakeTrans = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, 0, 0, VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR, VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, - 0, 0, Unwrap(fakeBBIm), - { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + Unwrap(fakeBBIm), + { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } + }; VkCmdBufferBeginInfo beginInfo = { VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, NULL, VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT | VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT }; @@ -655,7 +658,8 @@ bool VulkanReplay::RenderTexture(TextureDisplay cfg) Unwrap(liveIm), VK_IMAGE_VIEW_TYPE_2D, iminfo.format, { VK_CHANNEL_SWIZZLE_R, VK_CHANNEL_SWIZZLE_G, VK_CHANNEL_SWIZZLE_B, VK_CHANNEL_SWIZZLE_A }, - { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1, } + { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1, }, + 0 }; // VKTODOMED used for texture display, but eventually will have to be created on the fly @@ -765,8 +769,10 @@ bool VulkanReplay::RenderTexture(TextureDisplay cfg) VkImageMemoryBarrier srcimTrans = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, 0, 0, origLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - 0, 0, Unwrap(liveIm), - { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + Unwrap(liveIm), + { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } + }; VkCmdBufferBeginInfo beginInfo = { VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, NULL, VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT | VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT }; diff --git a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp index 2f0e7b487..72f0dab55 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp @@ -221,21 +221,18 @@ bool WrappedVulkan::Serialise_vkCreateSwapchainKHR( device = GetResourceManager()->GetLiveHandle(devId); const VkImageCreateInfo imInfo = { - /*.sType =*/ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, - /*.pNext =*/ NULL, - /*.imageType =*/ VK_IMAGE_TYPE_2D, - /*.format =*/ info.imageFormat, - /*.extent =*/ { info.imageExtent.width, info.imageExtent.height, 1 }, - /*.mipLevels =*/ 1, - /*.arraySize =*/ info.imageArraySize, - /*.samples =*/ 1, - /*.tiling =*/ VK_IMAGE_TILING_OPTIMAL, - /*.usage =*/ + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, + VK_IMAGE_TYPE_2D, info.imageFormat, + { info.imageExtent.width, info.imageExtent.height, 1 }, + 1, info.imageArraySize, 1, + VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT| VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT| VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT| VK_IMAGE_USAGE_SAMPLED_BIT, - /*.flags =*/ 0, + 0, + VK_SHARING_MODE_EXCLUSIVE, 0, NULL, + VK_IMAGE_LAYOUT_UNDEFINED, }; for(size_t i=0; i < m_PhysicalReplayData.size(); i++) @@ -347,7 +344,8 @@ VkResult WrappedVulkan::vkCreateSwapchainKHR( pCreateInfo->imageFormat, 1, VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_DONT_CARE, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + 0 }; VkAttachmentReference attRef = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }; @@ -652,18 +650,13 @@ VkResult WrappedVulkan::vkQueuePresentKHR( // create identical image VkImageCreateInfo imInfo = { - /*.sType =*/ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, - /*.pNext =*/ NULL, - /*.imageType =*/ VK_IMAGE_TYPE_2D, - /*.format =*/ swapInfo.format, - /*.extent =*/ { swapInfo.extent.width, swapInfo.extent.height, 1 }, - /*.mipLevels =*/ 1, - /*.arraySize =*/ 1, - /*.samples =*/ 1, - /*.tiling =*/ VK_IMAGE_TILING_LINEAR, - /*.usage =*/ - VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, - /*.flags =*/ 0, + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, NULL, + VK_IMAGE_TYPE_2D, swapInfo.format, + { swapInfo.extent.width, swapInfo.extent.height, 1 }, 1, 1, 1, + VK_IMAGE_TILING_LINEAR, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, + 0, + VK_SHARING_MODE_EXCLUSIVE, 0, NULL, + VK_IMAGE_LAYOUT_UNDEFINED, }; vt->CreateImage(Unwrap(dev), &imInfo, &readbackIm); RDCASSERT(vkr == VK_SUCCESS); @@ -707,13 +700,15 @@ VkResult WrappedVulkan::vkQueuePresentKHR( VkImageMemoryBarrier bbTrans = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, 0, 0, VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR, VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, - 0, 0, Unwrap(backbuffer), + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + Unwrap(backbuffer), { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; VkImageMemoryBarrier readTrans = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL, 0, 0, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, - 0, 0, readbackIm, // was never wrapped + VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, + readbackIm, // was never wrapped { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1 } }; VkImageMemoryBarrier *barriers[] = {