#include "vulkan_state.h" CVkShader::~CVkShader() { } void CVkShader::AddShaderLibrary( CVkPipelineLibrary *pLibrary ) { m_libraries.AppendTail(pLibrary); } void CVkShader::Build() { CUtlVector libs = {}; VkGraphicsPipelineCreateInfo createInfo = {}; VkPipelineLibraryCreateInfoKHR libInfo = {}; VkPipelineRenderingCreateInfo render = {}; 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; 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); } uint32_t CVkShader::PSGetResourceByName( const char *szName ) { } uint32_t CVkShader::VSGetResourceByName( const char *szName ) { }