diff --git a/intern/ghost/intern/GHOST_ContextVK.cc b/intern/ghost/intern/GHOST_ContextVK.cc index c47d6bd3851..2be327303ab 100644 --- a/intern/ghost/intern/GHOST_ContextVK.cc +++ b/intern/ghost/intern/GHOST_ContextVK.cc @@ -481,8 +481,6 @@ GHOST_ContextVK::GHOST_ContextVK(bool stereoVisual, m_context_minor_version(contextMinorVersion), m_debug(debug), m_preferred_device(preferred_device), - m_command_pool(VK_NULL_HANDLE), - m_command_buffer(VK_NULL_HANDLE), m_surface(VK_NULL_HANDLE), m_swapchain(VK_NULL_HANDLE), m_render_frame(0) @@ -497,13 +495,6 @@ GHOST_ContextVK::~GHOST_ContextVK() destroySwapchain(); - if (m_command_buffer != VK_NULL_HANDLE) { - vkFreeCommandBuffers(device_vk.device, m_command_pool, 1, &m_command_buffer); - m_command_buffer = VK_NULL_HANDLE; - } - if (m_command_pool != VK_NULL_HANDLE) { - vkDestroyCommandPool(device_vk.device, m_command_pool, nullptr); - } if (m_surface != VK_NULL_HANDLE) { vkDestroySurfaceKHR(device_vk.instance, m_surface, nullptr); } @@ -751,33 +742,6 @@ static GHOST_TSuccess selectPresentMode(VkPhysicalDevice device, return GHOST_kFailure; } -GHOST_TSuccess GHOST_ContextVK::createCommandPools() -{ - assert(vulkan_device.has_value() && vulkan_device->device != VK_NULL_HANDLE); - VkCommandPoolCreateInfo poolInfo = {}; - poolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - poolInfo.queueFamilyIndex = vulkan_device->generic_queue_family; - - VK_CHECK(vkCreateCommandPool(vulkan_device->device, &poolInfo, nullptr, &m_command_pool)); - return GHOST_kSuccess; -} - -GHOST_TSuccess GHOST_ContextVK::createGraphicsCommandBuffer() -{ - assert(vulkan_device.has_value() && vulkan_device->device != VK_NULL_HANDLE); - assert(m_command_pool != VK_NULL_HANDLE); - assert(m_command_buffer == VK_NULL_HANDLE); - VkCommandBufferAllocateInfo alloc_info = {}; - alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - alloc_info.commandPool = m_command_pool; - alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - alloc_info.commandBufferCount = 1; - - VK_CHECK(vkAllocateCommandBuffers(vulkan_device->device, &alloc_info, &m_command_buffer)); - return GHOST_kSuccess; -} - /** * Select the surface format that we will use. * @@ -911,48 +875,6 @@ GHOST_TSuccess GHOST_ContextVK::createSwapchain() } m_render_frame = 0; - /* Change image layout from VK_IMAGE_LAYOUT_UNDEFINED to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR. */ - VkCommandBufferBeginInfo begin_info = {}; - begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - VK_CHECK(vkBeginCommandBuffer(m_command_buffer, &begin_info)); - VkImageMemoryBarrier *barriers = new VkImageMemoryBarrier[image_count]; - for (int i = 0; i < image_count; i++) { - VkImageMemoryBarrier &barrier = barriers[i]; - barrier = {}; - - barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; - barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; - barrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - barrier.image = m_swapchain_images[i]; - barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - barrier.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS; - barrier.subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; - } - vkCmdPipelineBarrier(m_command_buffer, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - VK_DEPENDENCY_BY_REGION_BIT, - 0, - nullptr, - 0, - nullptr, - image_count, - barriers); - VK_CHECK(vkEndCommandBuffer(m_command_buffer)); - - VkPipelineStageFlags wait_stages[] = {VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT}; - VkSubmitInfo submit_info = {}; - submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - submit_info.pWaitDstStageMask = wait_stages; - submit_info.commandBufferCount = 1; - submit_info.pCommandBuffers = &m_command_buffer; - submit_info.signalSemaphoreCount = 0; - submit_info.pSignalSemaphores = nullptr; - VK_CHECK(vkQueueSubmit(m_graphic_queue, 1, &submit_info, nullptr)); - VK_CHECK(vkQueueWaitIdle(m_graphic_queue)); - - delete[] barriers; - return GHOST_kSuccess; } @@ -1134,8 +1056,6 @@ GHOST_TSuccess GHOST_ContextVK::initializeDrawingContext() vkGetDeviceQueue( vulkan_device->device, vulkan_device->generic_queue_family, 0, &m_graphic_queue); - createCommandPools(); - createGraphicsCommandBuffer(); if (use_window_surface) { vkGetDeviceQueue( vulkan_device->device, vulkan_device->generic_queue_family, 0, &m_present_queue); diff --git a/intern/ghost/intern/GHOST_ContextVK.hh b/intern/ghost/intern/GHOST_ContextVK.hh index 62cb98e538f..e52ecefc1e1 100644 --- a/intern/ghost/intern/GHOST_ContextVK.hh +++ b/intern/ghost/intern/GHOST_ContextVK.hh @@ -173,9 +173,6 @@ class GHOST_ContextVK : public GHOST_Context { const int m_debug; const GHOST_GPUDevice m_preferred_device; - VkCommandPool m_command_pool; - VkCommandBuffer m_command_buffer; - VkQueue m_graphic_queue; VkQueue m_present_queue; @@ -197,8 +194,4 @@ class GHOST_ContextVK : public GHOST_Context { const char *getPlatformSpecificSurfaceExtension() const; GHOST_TSuccess createSwapchain(); GHOST_TSuccess destroySwapchain(); - GHOST_TSuccess createCommandPools(); - GHOST_TSuccess createGraphicsCommandBuffers(); - GHOST_TSuccess createGraphicsCommandBuffer(); - GHOST_TSuccess recordCommandBuffers(); };