40 lines
968 B
C++
40 lines
968 B
C++
#include "vulkan_state.h"
|
|
void CVkShader::AddShaderLibrary( CVkPipelineLibrary *pLibrary )
|
|
{
|
|
m_libraries.AppendTail(pLibrary);
|
|
}
|
|
|
|
void CVkShader::Build()
|
|
{
|
|
CUtlVector<VkPipeline> libs = {};
|
|
VkGraphicsPipelineCreateInfo createInfo = {};
|
|
VkPipelineLibraryCreateInfoKHR libInfo = {};
|
|
|
|
createInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
|
|
for ( auto l: m_libraries )
|
|
{
|
|
libs.AppendTail(l->m_hPipeline);
|
|
};
|
|
|
|
libInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR;
|
|
libInfo.libraryCount = libs.GetSize();
|
|
libInfo.pLibraries = libs.GetData();
|
|
createInfo.pNext = &libInfo;
|
|
createInfo.flags = VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT;
|
|
createInfo.layout = g_pLibraryEmptyLayout;
|
|
|
|
// Possibly schedule it?
|
|
vkCreateGraphicsPipelines(g_vkDevice, NULL, 1, &createInfo, NULL, &m_hPipeline);
|
|
}
|
|
|
|
uint32_t CVkShader::PSGetResourceByName( const char *szName )
|
|
{
|
|
|
|
}
|
|
|
|
uint32_t CVkShader::VSGetResourceByName( const char *szName )
|
|
{
|
|
|
|
}
|
|
|