Cleanup: Vulkan: Remove unused code
Command pools and buffers inside GHOST_ContextVK was used to transit the swapchain images to something known. This isn't anymore as Blender assumes that the full extent of the swapchain image is updated and can ignore the actual image format. Pull Request: https://projects.blender.org/blender/blender/pulls/136305
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user