trying to make it work without -rdynamic
This commit is contained in:
@@ -99,6 +99,7 @@ void CVkCommandBuffer::Render()
|
||||
pCommand->Execute(hBuffer, i);
|
||||
y++;
|
||||
};
|
||||
TryBarrier(y, i);
|
||||
vkEndCommandBuffer(hBuffer);
|
||||
|
||||
i++;
|
||||
@@ -116,8 +117,8 @@ void CVkCommandBuffer::SortDependencies()
|
||||
{
|
||||
m_dependencies = {};
|
||||
m_swapchainDependencies = {};
|
||||
m_dependencies.Resize(m_commands.GetSize());
|
||||
m_swapchainDependencies.Resize(m_commands.GetSize());
|
||||
m_dependencies.Resize(m_commands.GetSize()+1);
|
||||
m_swapchainDependencies.Resize(m_commands.GetSize()+1);
|
||||
m_usedDependencies = {};
|
||||
m_usedSwapchainDependencies = {};
|
||||
|
||||
@@ -142,7 +143,7 @@ void CVkCommandBuffer::SortDependencies()
|
||||
VulkanCommandLastUsage_t stLastUsage = {};
|
||||
stLastUsage.m_nLastUsedCommand = i;
|
||||
stLastUsage.m_dependency = dependency;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_FROM_PREVIOUS;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
|
||||
if (pLastUsage)
|
||||
stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode;
|
||||
@@ -167,7 +168,7 @@ void CVkCommandBuffer::SortDependencies()
|
||||
VulkanSwapchainCommandLastUsage_t stLastUsage = {};
|
||||
stLastUsage.m_nLastUsedCommand = i;
|
||||
stLastUsage.m_dependency = dependency;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_FROM_PREVIOUS;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
|
||||
if (pLastUsage)
|
||||
stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode;
|
||||
@@ -181,6 +182,62 @@ void CVkCommandBuffer::SortDependencies()
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
for (auto &pCommand: m_commands)
|
||||
{
|
||||
for ( auto dependency: pCommand->m_dependencies)
|
||||
{
|
||||
VulkanCommandLastUsage_t *pLastUsage = NULL;
|
||||
|
||||
for ( auto &dep: m_usedDependencies )
|
||||
{
|
||||
if (dep.m_dependency.m_pObject == dependency.m_pObject)
|
||||
pLastUsage = &dep;
|
||||
}
|
||||
|
||||
VulkanCommandLastUsage_t stLastUsage = {};
|
||||
stLastUsage.m_nLastUsedCommand = i;
|
||||
stLastUsage.m_dependency = dependency;
|
||||
stLastUsage.m_dependency.m_eDependencyMode = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
|
||||
if (pLastUsage)
|
||||
{
|
||||
stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode;
|
||||
if (pLastUsage->m_nLastUsedCommand == i)
|
||||
continue;
|
||||
m_dependencies[i].AppendTail(stLastUsage);
|
||||
m_usedDependencies.AppendTail(stLastUsage);
|
||||
}
|
||||
|
||||
}
|
||||
for ( auto dependency: pCommand->m_swapchainDependencies)
|
||||
{
|
||||
VulkanSwapchainCommandLastUsage_t *pLastUsage = NULL;
|
||||
|
||||
for ( auto &dep: m_usedSwapchainDependencies )
|
||||
{
|
||||
if (dep.m_dependency.m_ppObjects == dependency.m_ppObjects)
|
||||
pLastUsage = &dep;
|
||||
}
|
||||
|
||||
VulkanSwapchainCommandLastUsage_t stLastUsage = {};
|
||||
stLastUsage.m_nLastUsedCommand = i;
|
||||
stLastUsage.m_dependency = dependency;
|
||||
stLastUsage.m_dependency.m_eDependencyMode = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
stLastUsage.m_eLastUsage = DEPENDENCY_MODE_NEXT_STAGE;
|
||||
|
||||
if (pLastUsage)
|
||||
{
|
||||
stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode;
|
||||
if (pLastUsage->m_nLastUsedCommand == i)
|
||||
continue;
|
||||
m_swapchainDependencies[i].AppendTail(stLastUsage);
|
||||
m_usedSwapchainDependencies.AppendTail(stLastUsage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -235,14 +292,17 @@ void CVkCommandBuffer::TryBarrier( int iCurrent, int iCurrentBuffer )
|
||||
imageMemoryBarrier.subresourceRange = pImage->m_range;
|
||||
imageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
imageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
imageMemoryBarrier.newLayout = VulkanGetImageLayout(barrier.m_eNewDependency);
|
||||
if (barrier.m_eNewDependency == DEPENDENCY_MODE_NEXT_STAGE)
|
||||
imageMemoryBarrier.newLayout = pImage->m_ePreferredLayout;
|
||||
else
|
||||
imageMemoryBarrier.newLayout = VulkanGetImageLayout(barrier.m_eNewDependency);
|
||||
imageMemoryBarrier.dstStageMask = VulkanGetStageFlags(barrier.m_eNewDependency);
|
||||
imageMemoryBarrier.dstAccessMask = VulkanGetAccessFlags(barrier.m_eNewDependency);
|
||||
if (barrier.m_eOldDependency == DEPENDENCY_MODE_FROM_PREVIOUS)
|
||||
if (barrier.m_eOldDependency == DEPENDENCY_MODE_NEXT_STAGE)
|
||||
{
|
||||
imageMemoryBarrier.oldLayout = VulkanGetImageLayout(DEPENDENCY_MODE_ALL_COMMANDS);
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(DEPENDENCY_MODE_ALL_COMMANDS);
|
||||
imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(DEPENDENCY_MODE_ALL_COMMANDS);
|
||||
imageMemoryBarrier.oldLayout = pImage->m_ePreferredLayout;
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(DEPENDENCY_MODE_NEXT_STAGE);
|
||||
} else {
|
||||
imageMemoryBarrier.oldLayout = VulkanGetImageLayout(barrier.m_eOldDependency);
|
||||
imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(barrier.m_eOldDependency);
|
||||
|
||||
@@ -10,10 +10,10 @@ END_VULKAN_COMMAND(Empty)
|
||||
BEGIN_VULKAN_COMMAND(Blit)
|
||||
VkFrameObject_t stInputImage;
|
||||
VkFrameObject_t stOutputImage;
|
||||
int32_t iSrcMin[3];
|
||||
int32_t iSrcMax[3];
|
||||
int32_t iDstMin[3];
|
||||
int32_t iDstMax[3];
|
||||
int32_t iSrcMin[3] = {};
|
||||
int32_t iSrcMax[3] = {};
|
||||
int32_t iDstMin[3] = {};
|
||||
int32_t iDstMax[3] = {};
|
||||
END_VULKAN_COMMAND(Blit)
|
||||
|
||||
BEGIN_VULKAN_COMMAND(ClearColor)
|
||||
|
||||
@@ -24,5 +24,12 @@ DECLARE_VULKAN_COMMAND(Blit)
|
||||
stBlit.srcOffsets[1].x = iSrcMax[0];
|
||||
stBlit.srcOffsets[1].y = iSrcMax[1];
|
||||
stBlit.srcOffsets[1].z = iSrcMax[2];
|
||||
vkCmdBlitImage(hCommandBuffer, pVkInputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, pVkOutputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &stBlit, VK_FILTER_NEAREST)
|
||||
stBlit.dstOffsets[0].x = iDstMin[0];
|
||||
stBlit.dstOffsets[0].y = iDstMin[1];
|
||||
stBlit.dstOffsets[0].z = iDstMin[2];
|
||||
stBlit.dstOffsets[1].x = iDstMax[0];
|
||||
stBlit.dstOffsets[1].y = iDstMax[1];
|
||||
stBlit.dstOffsets[1].z = iDstMax[2];
|
||||
|
||||
vkCmdBlitImage(hCommandBuffer, pVkInputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, pVkOutputImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &stBlit, VK_FILTER_NEAREST);
|
||||
}
|
||||
|
||||
@@ -120,8 +120,10 @@ BEGIN_BUILD_PIPELINE_LIBRARY(VertexTransform)
|
||||
|
||||
VkPipelineLayoutCreateInfo stPipelineLayout = {};
|
||||
stPipelineLayout.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||
/*
|
||||
stPipelineLayout.setLayoutCount = SHADER_STAGE_COUNT;
|
||||
stPipelineLayout.pSetLayouts = m_setLayouts;
|
||||
*/
|
||||
stPipelineLayout.flags = VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT ;
|
||||
vkCreatePipelineLayout(g_vkDevice, &stPipelineLayout, NULL, &m_layout);
|
||||
|
||||
@@ -156,6 +158,7 @@ BEGIN_BUILD_PIPELINE_LIBRARY(PixelShader)
|
||||
printf("--- PixelShader ---\n");
|
||||
|
||||
VkPipelineDepthStencilStateCreateInfo depthStencil = {};
|
||||
VkPipelineRenderingCreateInfo render = {};
|
||||
int i = 0;
|
||||
CUtlVector<VulkanDescriptor_t> vertexDescriptors = ShaderParser()->GetDescriptors(m_pShader, SHADER_STAGE_PIXEL);
|
||||
VulkanDescriptorInit_t inits[SHADER_STAGE_COUNT] = {};
|
||||
@@ -178,8 +181,10 @@ BEGIN_BUILD_PIPELINE_LIBRARY(PixelShader)
|
||||
|
||||
VkPipelineLayoutCreateInfo stPipelineLayout = {};
|
||||
stPipelineLayout.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||
/*
|
||||
stPipelineLayout.setLayoutCount = SHADER_STAGE_COUNT;
|
||||
stPipelineLayout.pSetLayouts = m_setLayouts;
|
||||
*/
|
||||
stPipelineLayout.flags = VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT ;
|
||||
vkCreatePipelineLayout(g_vkDevice, &stPipelineLayout, NULL, &m_layout);
|
||||
|
||||
@@ -220,10 +225,14 @@ BEGIN_BUILD_PIPELINE_LIBRARY(PixelShader)
|
||||
pipeline.stageCount = 1;
|
||||
pipeline.pStages = &shader;
|
||||
|
||||
skipshader:
|
||||
|
||||
depthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
|
||||
pipeline.pDepthStencilState = &depthStencil;
|
||||
|
||||
skipshader:
|
||||
render.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
|
||||
render.pNext = pipeline.pNext;
|
||||
pipeline.pNext = &render;
|
||||
|
||||
library.flags = VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT;
|
||||
pipeline.layout = m_layout;
|
||||
@@ -248,7 +257,6 @@ BEGIN_BUILD_PIPELINE_LIBRARY(PixelOutput)
|
||||
render.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
|
||||
render.colorAttachmentCount = m_eFormats.GetSize();
|
||||
render.pColorAttachmentFormats = m_eFormats.GetData();
|
||||
render.depthAttachmentFormat = VK_FORMAT_D32_SFLOAT;;
|
||||
|
||||
depthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
|
||||
|
||||
@@ -256,7 +264,13 @@ BEGIN_BUILD_PIPELINE_LIBRARY(PixelOutput)
|
||||
{
|
||||
VkPipelineColorBlendAttachmentState a = {};
|
||||
a.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
|
||||
a.blendEnable = VK_FALSE;
|
||||
a.blendEnable = VK_TRUE;
|
||||
a.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
|
||||
a.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
|
||||
a.colorBlendOp = VK_BLEND_OP_ADD;
|
||||
a.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||
a.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
|
||||
a.alphaBlendOp = VK_BLEND_OP_ADD;
|
||||
attachments.AppendTail(a);
|
||||
}
|
||||
blend.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
|
||||
|
||||
@@ -58,6 +58,7 @@ CVkImage::CVkImage( uint32_t nWidth, uint32_t nHeight, uint32_t nDepth, EImageFo
|
||||
m_eMultisampleType = eMultisampleType;
|
||||
m_eImageType = eImageType;
|
||||
m_eFormat = eFormat;
|
||||
m_ePreferredLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
CreateImage(nWidth, nHeight, eFormat, eMultisampleType, eUsage);
|
||||
CreateImageView();
|
||||
}
|
||||
@@ -124,7 +125,7 @@ void CVkImage::CreateImage( uint32_t nWidth, uint32_t nHeight, EImageFormat eFor
|
||||
stCreateInfo.extent.depth = 1;
|
||||
stCreateInfo.mipLevels = 1;
|
||||
stCreateInfo.arrayLayers = 1;
|
||||
stCreateInfo.usage = eUsage;
|
||||
stCreateInfo.usage = eUsage | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
||||
stCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
|
||||
stCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
stCreateInfo.format = GetImageFormat(eFormat);
|
||||
@@ -613,18 +614,34 @@ void CVkRenderContext::Init()
|
||||
g_pCommandBufferManager->Init();
|
||||
|
||||
|
||||
CVkEmptyCommand *pPresentCommand = (CVkEmptyCommand*)g_pCommandBufferManager->CreateCommand("Empty");
|
||||
pPresentCommand->AddSwapchainDependency( (IRenderingObject**)g_vkSwapchainImages.GetData(), DEPENDENCY_MODE_IMAGE_PRESENT );
|
||||
|
||||
|
||||
s_pPresentCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer();
|
||||
s_pPresentCommandBuffer->Reset();
|
||||
s_pPresentCommandBuffer->AddCommand(pPresentCommand);
|
||||
s_pPresentCommandBuffer->Render();
|
||||
}
|
||||
|
||||
void CVkRenderContext::Frame( float fDeltaTime )
|
||||
{
|
||||
CVkBlitCommand *pBlitCommand = NULL;
|
||||
if (m_pOutputImage)
|
||||
{
|
||||
pBlitCommand = CREATE_COMMAND(Blit);
|
||||
pBlitCommand->AddDependency(m_pOutputImage, DEPENDENCY_MODE_BLIT_IMAGE_SOURCE);
|
||||
pBlitCommand->AddSwapchainDependency((IRenderingObject**)g_vkSwapchainImages.GetData(), DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION);
|
||||
pBlitCommand->stInputImage.m_eObjectType = FRAME_OBJECT_TYPE_SINGLE;
|
||||
pBlitCommand->stInputImage.m_pSingle = m_pOutputImage;
|
||||
pBlitCommand->stOutputImage.m_eObjectType = FRAME_OBJECT_TYPE_SWAPPED;
|
||||
pBlitCommand->stOutputImage.m_ppSwapped = (IRenderingObject**)g_vkSwapchainImages.GetData();
|
||||
pBlitCommand->iSrcMax[0] = 1280;
|
||||
pBlitCommand->iSrcMax[1] = 720;
|
||||
pBlitCommand->iSrcMax[2] = 1;
|
||||
pBlitCommand->iDstMax[0] = 1280;
|
||||
pBlitCommand->iDstMax[1] = 720;
|
||||
pBlitCommand->iDstMax[2] = 1;
|
||||
}
|
||||
s_pPresentCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer();
|
||||
s_pPresentCommandBuffer->Reset();
|
||||
if (pBlitCommand != NULL)
|
||||
s_pPresentCommandBuffer->AddCommand(pBlitCommand);
|
||||
s_pPresentCommandBuffer->Render();
|
||||
|
||||
vkDeviceWaitIdle(g_vkDevice);
|
||||
m_bOutputImageOutdated = false;
|
||||
|
||||
@@ -752,6 +769,9 @@ formatPicked:
|
||||
pImage->m_eImageType = IMAGE_TYPE_2D;
|
||||
pImage->m_eMultisampleType = MULTISAMPLE_TYPE_NONE;
|
||||
pImage->m_eFormat = IMAGE_FORMAT_WINDOW;
|
||||
pImage->m_nHeight = 1280;
|
||||
pImage->m_nWidth = 720;
|
||||
pImage->m_ePreferredLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
||||
pImage->CreateImageView();
|
||||
g_vkSwapchainImages[i] = pImage;
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ void CVkShader::Build()
|
||||
CUtlVector<VkPipeline> libs = {};
|
||||
VkGraphicsPipelineCreateInfo createInfo = {};
|
||||
VkPipelineLibraryCreateInfoKHR libInfo = {};
|
||||
VkPipelineRenderingCreateInfo render = {};
|
||||
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
|
||||
for ( auto l: m_libraries )
|
||||
@@ -23,6 +24,9 @@ void CVkShader::Build()
|
||||
createInfo.flags = VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT;
|
||||
createInfo.layout = g_pLibraryEmptyLayout;
|
||||
|
||||
render.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
|
||||
render.pNext = createInfo.pNext;
|
||||
createInfo.pNext = &render;
|
||||
// Possibly schedule it?
|
||||
vkCreateGraphicsPipelines(g_vkDevice, NULL, 1, &createInfo, NULL, &m_hPipeline);
|
||||
}
|
||||
|
||||
@@ -21,8 +21,10 @@ VkAccessFlags2 VulkanGetAccessFlags( EDependencyMode eMode )
|
||||
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR;
|
||||
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_ACCESS_2_TRANSFER_WRITE_BIT;
|
||||
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_ACCESS_2_NONE;
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION: return VK_ACCESS_2_TRANSFER_WRITE_BIT;
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_SOURCE: return VK_ACCESS_2_TRANSFER_READ_BIT;
|
||||
default:
|
||||
return VK_ACCESS_2_MEMORY_READ_BIT | VK_ACCESS_2_MEMORY_WRITE_BIT;
|
||||
return VK_ACCESS_2_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +35,9 @@ VkPipelineStageFlags2 VulkanGetStageFlags( EDependencyMode eMode )
|
||||
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_PIPELINE_STAGE_2_TRANSFER_BIT;
|
||||
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION:
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_SOURCE:
|
||||
return VK_PIPELINE_STAGE_2_BLIT_BIT;
|
||||
default:
|
||||
return VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
|
||||
}
|
||||
@@ -45,6 +50,8 @@ VkImageLayout VulkanGetImageLayout( EDependencyMode eMode )
|
||||
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
case DEPENDENCY_MODE_BLIT_IMAGE_SOURCE: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
default:
|
||||
return VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
}
|
||||
|
||||
@@ -66,13 +66,16 @@ enum EDependencyMode
|
||||
DEPENDENCY_MODE_IMAGE_SOURCE,
|
||||
DEPENDENCY_MODE_IMAGE_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_BLIT_IMAGE_SOURCE,
|
||||
DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_COLOR_CLEAR_SOURCE,
|
||||
DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_ALL_COMMANDS,
|
||||
DEPENDENCY_MODE_IMAGE_PRESENT,
|
||||
|
||||
DEPENDENCY_MODE_FROM_PREVIOUS,
|
||||
DEPENDENCY_MODE_NEXT_STAGE,
|
||||
|
||||
DEPENDENCY_MODE_COUNT,
|
||||
};
|
||||
@@ -191,6 +194,8 @@ public:
|
||||
VkImageView m_imageView;
|
||||
VmaAllocation m_allocation;
|
||||
VkImageSubresourceRange m_range;
|
||||
|
||||
VkImageLayout m_ePreferredLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
|
||||
VkImageLayout m_eImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
EDependencyMode m_eLastUsage;
|
||||
|
||||
Reference in New Issue
Block a user