From f8fed5c8f543206c19eca07eb7e2d2eb318ffa58 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 21 May 2019 00:22:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BA=B9=E7=90=86CMD=5FBUF?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E9=9A=8FDEVICE=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/graph/vulkan/VKDevice.h | 1 + src/RenderDevice/Vulkan/VKDevice.cpp | 3 +++ src/RenderDevice/Vulkan/VKDeviceTexture.cpp | 14 ++++++-------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/inc/hgl/graph/vulkan/VKDevice.h b/inc/hgl/graph/vulkan/VKDevice.h index 0a8ce2f7..2e38058c 100644 --- a/inc/hgl/graph/vulkan/VKDevice.h +++ b/inc/hgl/graph/vulkan/VKDevice.h @@ -18,6 +18,7 @@ class Device Fence *draw_fence,*texture_fence; VkSubmitInfo texture_submitInfo; + CommandBuffer *texture_cmd_buf; RenderPass *main_rp; ObjectList main_fb; diff --git a/src/RenderDevice/Vulkan/VKDevice.cpp b/src/RenderDevice/Vulkan/VKDevice.cpp index d5251af4..2efd6914 100644 --- a/src/RenderDevice/Vulkan/VKDevice.cpp +++ b/src/RenderDevice/Vulkan/VKDevice.cpp @@ -25,6 +25,7 @@ Device::Device(DeviceAttribute *da) hgl_zero(texture_submitInfo); texture_submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; + texture_cmd_buf=CreateCommandBuffer(); present.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR; present.pNext = nullptr; @@ -46,6 +47,8 @@ Device::~Device() delete main_rp; delete image_acquired_semaphore; + + delete texture_cmd_buf; delete texture_fence; delete draw_fence; diff --git a/src/RenderDevice/Vulkan/VKDeviceTexture.cpp b/src/RenderDevice/Vulkan/VKDeviceTexture.cpp index ab3b0387..6a5a0caa 100644 --- a/src/RenderDevice/Vulkan/VKDeviceTexture.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceTexture.cpp @@ -103,8 +103,6 @@ Texture2D *Device::CreateTexture2D(const VkFormat video_format,void *data,uint32 VK_CHECK_RESULT(vkAllocateMemory(attr->device, &memAllocInfo, nullptr, &tex_data->memory)) VK_CHECK_RESULT(vkBindImageMemory(attr->device, tex_data->image, tex_data->memory, 0)) - CommandBuffer *cmd_buf=CreateCommandBuffer(); - VkImageSubresourceRange subresourceRange = {}; subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; subresourceRange.baseMipLevel = 0; @@ -122,8 +120,8 @@ Texture2D *Device::CreateTexture2D(const VkFormat video_format,void *data,uint32 imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - cmd_buf->Begin(); - cmd_buf->PipelineBarrier( + texture_cmd_buf->Begin(); + texture_cmd_buf->PipelineBarrier( VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, @@ -131,7 +129,7 @@ Texture2D *Device::CreateTexture2D(const VkFormat video_format,void *data,uint32 0, nullptr, 1, &imageMemoryBarrier); - cmd_buf->CopyBufferToImage( + texture_cmd_buf->CopyBufferToImage( *buf, tex_data->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, @@ -143,7 +141,7 @@ Texture2D *Device::CreateTexture2D(const VkFormat video_format,void *data,uint32 imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - cmd_buf->PipelineBarrier( + texture_cmd_buf->PipelineBarrier( VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, @@ -151,9 +149,9 @@ Texture2D *Device::CreateTexture2D(const VkFormat video_format,void *data,uint32 0, nullptr, 1, &imageMemoryBarrier); - cmd_buf->End(); + texture_cmd_buf->End(); - SubmitTexture(*cmd_buf); + SubmitTexture(*texture_cmd_buf); delete buf;