made it work with new fpc
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
#include "helper.h"
|
||||
#include "c.h"
|
||||
#include "ld.h"
|
||||
#include "tier1/utlstring.h"
|
||||
#include "tier1/commandline.h"
|
||||
|
||||
CUtlVector<CUtlString> MaterialSystem_CompiledFiles = {
|
||||
"materialsystem/materialsystem.cpp",
|
||||
"materialsystem/compiledshader.cpp",
|
||||
};
|
||||
CUtlVector<CUtlString> RenderContextVulkan_CompiledFiles = {
|
||||
"materialsystem/vulkan/shaderparser.cpp",
|
||||
"materialsystem/vulkan/rendercontext.cpp",
|
||||
"materialsystem/vulkan/commandbuffer.cpp",
|
||||
"materialsystem/vulkan/rendercommandlist.cpp",
|
||||
"materialsystem/vulkan/material.cpp",
|
||||
"materialsystem/vulkan/shader.cpp",
|
||||
"materialsystem/vulkan/utils.cpp",
|
||||
"materialsystem/vulkan/vma.cpp",
|
||||
"materialsystem/vulkan/commands/draw.cpp",
|
||||
"materialsystem/vulkan/commands/transfer.cpp",
|
||||
"materialsystem/vulkan/commands/base.cpp",
|
||||
"materialsystem/vulkan/libraries/raster.cpp",
|
||||
"external/volk/volk.c",
|
||||
};
|
||||
CUtlString material_lib;
|
||||
|
||||
DECLARE_BUILD_STAGE(MaterialSystem)
|
||||
{
|
||||
CProject_t compileProject = {};
|
||||
LinkProject_t ldProject = {};
|
||||
|
||||
compileProject.m_szName = "MaterialSystem";
|
||||
compileProject.files = MaterialSystem_CompiledFiles;
|
||||
compileProject.includeDirectories = all_IncludeDirectories;
|
||||
compileProject.bFPIC = true;
|
||||
ldProject = ccompiler->Compile(&compileProject);
|
||||
ldProject.linkType = ELINK_STATIC_LIBRARY;
|
||||
ldProject.libraries = { "vulkan" };
|
||||
|
||||
CUtlString outputProject = linker->Link(&ldProject);
|
||||
material_lib = outputProject;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2,13 +2,18 @@
|
||||
#include "c.h"
|
||||
#include "ld.h"
|
||||
#include "tier1/utlstring.h"
|
||||
#include "tier1/commandline.h"
|
||||
|
||||
#define FUNNYSTDLIB "../external/funnystdlib/"
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier0, FUNNYSTDLIB"tier0/build.cpp");
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier1, FUNNYSTDLIB"tier1/build.cpp");
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier2, FUNNYSTDLIB"tier2/build.cpp");
|
||||
|
||||
CUtlVector<CUtlString> MaterialSystem_CompiledFiles = {
|
||||
"materialsystem.cpp",
|
||||
"compiledshader.cpp",
|
||||
};
|
||||
CUtlVector<CUtlString> RenderContextVulkan_CompiledFiles = {
|
||||
"compiledshader.cpp",
|
||||
"vulkan/shaderparser.cpp",
|
||||
"vulkan/rendercontext.cpp",
|
||||
"vulkan/commandbuffer.cpp",
|
||||
@@ -23,7 +28,6 @@ CUtlVector<CUtlString> RenderContextVulkan_CompiledFiles = {
|
||||
"vulkan/libraries/raster.cpp",
|
||||
"../external/volk/volk.c",
|
||||
};
|
||||
CUtlString material_lib;
|
||||
|
||||
DECLARE_BUILD_STAGE(MaterialSystem)
|
||||
{
|
||||
@@ -32,19 +36,33 @@ DECLARE_BUILD_STAGE(MaterialSystem)
|
||||
|
||||
compileProject.m_szName = "MaterialSystem";
|
||||
compileProject.files = MaterialSystem_CompiledFiles;
|
||||
compileProject.includeDirectories = { "../public" };
|
||||
compileProject.includeDirectories = {
|
||||
"../public",
|
||||
FUNNYSTDLIB"public",
|
||||
};
|
||||
compileProject.bFPIC = true;
|
||||
ldProject = ccompiler->Compile(&compileProject);
|
||||
ldProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||
ldProject.libraryObjects = {
|
||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
||||
};
|
||||
ldProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")});
|
||||
|
||||
if (ldProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES)
|
||||
{
|
||||
ldProject.libraries.AppendTail("pthread");
|
||||
};
|
||||
|
||||
CUtlString outputProject = linker->Link(&ldProject);
|
||||
material_lib = outputProject;
|
||||
ADD_OUTPUT_OBJECT("MaterialSystem", outputProject);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DECLARE_BUILD_STAGE(RenderSystemVulkan)
|
||||
{
|
||||
if (Target_t::DefaultTarget().cpu == TARGET_CPU_WASM32)
|
||||
return 0;
|
||||
CProject_t compileProject = {};
|
||||
LinkProject_t ldProject = {};
|
||||
|
||||
@@ -52,6 +70,7 @@ DECLARE_BUILD_STAGE(RenderSystemVulkan)
|
||||
compileProject.files = RenderContextVulkan_CompiledFiles;
|
||||
compileProject.includeDirectories = {
|
||||
"../public",
|
||||
FUNNYSTDLIB"public",
|
||||
"../external/Vulkan-Headers/include",
|
||||
"../external/Vulkan-Utility-Libraries/include",
|
||||
"../external/VulkanMemoryAllocator/include",
|
||||
@@ -60,10 +79,17 @@ DECLARE_BUILD_STAGE(RenderSystemVulkan)
|
||||
compileProject.bFPIC = true;
|
||||
ldProject = ccompiler->Compile(&compileProject);
|
||||
ldProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||
ldProject.libraries = { "vulkan" };
|
||||
ldProject.libraryObjects = {
|
||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
||||
};
|
||||
ldProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")});
|
||||
if (ldProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES)
|
||||
{
|
||||
ldProject.libraries.AppendTail("pthread");
|
||||
};
|
||||
|
||||
CUtlString outputProject = linker->Link(&ldProject);
|
||||
material_lib = outputProject;
|
||||
ADD_OUTPUT_OBJECT("RenderSystemVulkan", outputProject);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
virtual void ReadFromFile( CCompiledShader *pShader, const char *szFile ) override;
|
||||
};
|
||||
|
||||
IFileSystem *filesystem = NULL;
|
||||
void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *szFile )
|
||||
{
|
||||
IFileHandle *pFile;
|
||||
@@ -68,8 +69,14 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
stHeader.m_nNumLumps = pShader->m_lumps.GetSize();
|
||||
stHeader.m_nNumShaders = pShader->m_objects.GetSize();
|
||||
|
||||
if ( filesystem == NULL )
|
||||
{
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
|
||||
}
|
||||
pFile = filesystem->Open(szFile, FILEMODE_WRITE);
|
||||
pFile->Write(&stHeader, sizeof(ShaderHeader_t));
|
||||
filesystem->Write(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
|
||||
// We want to get offset for the lump data
|
||||
nTotalSize += sizeof(ShaderLump_t) * pShader->m_lumps.GetSize();
|
||||
@@ -82,7 +89,7 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
ShaderLump_t stLump = {};
|
||||
stLump.m_nOffset = nTotalSize;
|
||||
stLump.m_nSize = l.m_nSize;
|
||||
pFile->Write(&stLump, sizeof(ShaderLump_t));
|
||||
filesystem->Write(pFile, &stLump, sizeof(ShaderLump_t));
|
||||
|
||||
nTotalSize += l.m_nSize;
|
||||
}
|
||||
@@ -97,11 +104,11 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
// Lump Data
|
||||
for ( auto l: pShader->m_lumps )
|
||||
{
|
||||
pFile->Write(l.m_pAddress, l.m_nSize);
|
||||
filesystem->Write(pFile, l.m_pAddress, l.m_nSize);
|
||||
}
|
||||
|
||||
|
||||
pFile->Close();
|
||||
filesystem->Close(pFile);
|
||||
}
|
||||
|
||||
void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char *szFile )
|
||||
@@ -114,27 +121,27 @@ void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char
|
||||
CUtlVector<HostShaderLump_t> lumpsData = {};
|
||||
|
||||
pFile = filesystem->Open(szFile, FILEMODE_READ);
|
||||
pFile->Read(&stHeader, sizeof(ShaderHeader_t));
|
||||
filesystem->Read(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
|
||||
objects.Resize(stHeader.m_nNumShaders);
|
||||
lumps.Resize(stHeader.m_nNumLumps);
|
||||
lumpsData.Resize(stHeader.m_nNumLumps);
|
||||
|
||||
pFile->Read(lumps.GetData(), stHeader.m_nNumLumps * sizeof(ShaderLump_t));
|
||||
pFile->Read(objects.GetData(), stHeader.m_nNumShaders * sizeof(ShaderObject_t));
|
||||
filesystem->Read(pFile, lumps.GetData(), stHeader.m_nNumLumps * sizeof(ShaderLump_t));
|
||||
filesystem->Read(pFile, objects.GetData(), stHeader.m_nNumShaders * sizeof(ShaderObject_t));
|
||||
|
||||
for ( i = 0; i < stHeader.m_nNumLumps; i++ )
|
||||
{
|
||||
lumpsData[i].m_pAddress = V_malloc(lumps[i].m_nSize);
|
||||
pFile->Seek(SEEKMODE_RELATIVE_START, lumps[i].m_nOffset);
|
||||
pFile->Read(lumpsData[i].m_pAddress, lumps[i].m_nSize);
|
||||
filesystem->Seek(pFile, SEEKMODE_RELATIVE_START, lumps[i].m_nOffset);
|
||||
filesystem->Read(pFile, lumpsData[i].m_pAddress, lumps[i].m_nSize);
|
||||
lumpsData[i].m_nSize = lumps[i].m_nSize;
|
||||
};
|
||||
|
||||
pShader->m_objects = objects;
|
||||
pShader->m_lumps = lumpsData;
|
||||
|
||||
pFile->Close();
|
||||
filesystem->Close(pFile);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,30 +11,20 @@ public:
|
||||
virtual void RenderGameWindow( IGameWindow *pWindow ) override;
|
||||
};
|
||||
|
||||
EXPOSE_INTERFACE(CMaterialSystem, IMaterialSystem, MATERIAL_SYSTEM_INTERFACE_NAME)
|
||||
|
||||
extern IRenderContext *g_pVkRenderContext;
|
||||
IRenderContext *g_pRenderContext;
|
||||
EXPOSE_INTERFACE(CMaterialSystem, IMaterialSystem, MATERIAL_SYSTEM_INTERFACE_VERSION)
|
||||
|
||||
void CMaterialSystem::Init()
|
||||
{
|
||||
g_pRenderContext = (IRenderContext*)CreateInterface(RENDER_CONTEXT_INTERFACE_NAME, NULL);
|
||||
g_pRenderContext->Init();
|
||||
}
|
||||
|
||||
void CMaterialSystem::Frame( float fTime )
|
||||
{
|
||||
g_pRenderContext->Frame(fTime);
|
||||
}
|
||||
|
||||
void CMaterialSystem::RenderGameWindow( IGameWindow *pWindow )
|
||||
{
|
||||
g_pRenderContext->RenderGameWindow( pWindow );
|
||||
}
|
||||
|
||||
void CMaterialSystem::Shutdown()
|
||||
{
|
||||
g_pRenderContext->Shutdown();
|
||||
}
|
||||
|
||||
IMaterialSystem *g_pMaterialSystem;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "SDL3/SDL_vulkan.h"
|
||||
#include "commands.h"
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "tier0/lib.h"
|
||||
@@ -250,14 +249,7 @@ public:
|
||||
virtual void Init() override;
|
||||
virtual void Frame( float fDeltaTime ) override;
|
||||
virtual void Shutdown() override;
|
||||
|
||||
virtual void SetOutputImage( IImage *pImage ) override;
|
||||
|
||||
virtual bool BIsOutputImageOutdated() override;
|
||||
virtual uint32_t GetNewOutputImageWidth() override;
|
||||
virtual uint32_t GetNewOutputImageHeight() override;
|
||||
virtual EImageFormat GetNewOutputImageFormat() override;
|
||||
|
||||
virtual IVertexBuffer *CreateVertexBuffer( uint32_t nSize ) override;
|
||||
virtual IIndexBuffer *CreateIndexBuffer( uint32_t nSize ) override;
|
||||
virtual IBuffer *CreateConstantBuffer( uint32_t nSize ) override;
|
||||
@@ -280,45 +272,24 @@ public:
|
||||
virtual IRenderCommandList *CreateCommandList() override;
|
||||
virtual void DestroyCommandList( IRenderCommandList *pCommandList ) override;
|
||||
virtual void SubmitCommandList(IRenderCommandList *pList) override;
|
||||
|
||||
virtual void SetMainWindowManager( IGameWindowManager *pWindowManager ) override;
|
||||
|
||||
virtual void RenderGameWindow( IGameWindow *pWindow ) override;
|
||||
virtual void RegisterGameWindow( IGameWindow *pWindow ) override;
|
||||
virtual void UnregisterGameWindow( IGameWindow *pWindow ) override;
|
||||
private:
|
||||
VkPhysicalDevice SelectPhysicalDevice( CUtlVector<VkPhysicalDevice> physicalDevices );
|
||||
CUtlVector<const char *> GetDeviceExtensions();
|
||||
|
||||
VkCommandBuffer GetCommandBuffer();
|
||||
|
||||
void CreateSwapchain();
|
||||
void DestroySwapchain();
|
||||
void CreateSwapchain( IGameWindow *pWindow );
|
||||
void DestroySwapchain( IGameWindow *pWindow );
|
||||
|
||||
IImage *m_pOutputImage = NULL;
|
||||
bool m_bOutputImageOutdated = true;
|
||||
IGameWindowManager *m_pWindowManager;
|
||||
};
|
||||
EXPOSE_INTERFACE(CVkRenderContext, IRenderContext, RENDER_CONTEXT_VULKAN_INTERFACE_NAME);
|
||||
|
||||
void CVkRenderContext::SetOutputImage( IImage *pImage )
|
||||
{
|
||||
m_pOutputImage = pImage;
|
||||
}
|
||||
|
||||
|
||||
bool CVkRenderContext::BIsOutputImageOutdated( )
|
||||
{
|
||||
return m_bOutputImageOutdated;
|
||||
}
|
||||
|
||||
uint32_t CVkRenderContext::GetNewOutputImageWidth()
|
||||
{
|
||||
return 1280;
|
||||
}
|
||||
|
||||
uint32_t CVkRenderContext::GetNewOutputImageHeight()
|
||||
{
|
||||
return 720;
|
||||
}
|
||||
|
||||
EImageFormat CVkRenderContext::GetNewOutputImageFormat()
|
||||
{
|
||||
|
||||
}
|
||||
EXPOSE_INTERFACE(CVkRenderContext, IRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -424,7 +395,6 @@ IShader *CVkRenderContext::CreateShader( const char *szName )
|
||||
pShader->AddShaderLibrary(&vertexTransform);
|
||||
pShader->AddShaderLibrary(&pixelShader);
|
||||
pShader->AddShaderLibrary(&pixelOutput);
|
||||
printf("--- general pipeline ---\n");
|
||||
pShader->Build();
|
||||
return pShader;
|
||||
}
|
||||
@@ -459,6 +429,26 @@ void CVkRenderContext::SubmitCommandList(IRenderCommandList *pList)
|
||||
CVkRenderCommandList *pVkList = (CVkRenderCommandList*)pList;
|
||||
pVkList->Submit();
|
||||
}
|
||||
void CVkRenderContext::RenderGameWindow( IGameWindow *pWindow )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CVkRenderContext::SetMainWindowManager( IGameWindowManager *pWindowManager )
|
||||
{
|
||||
m_pWindowManager = pWindowManager;
|
||||
}
|
||||
|
||||
void CVkRenderContext::RegisterGameWindow( IGameWindow *pWindow )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CVkRenderContext::UnregisterGameWindow( IGameWindow *pWindow )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
VkPipelineLayout g_pLibraryEmptyLayout;
|
||||
static IVkCommandBuffer *s_pPresentCommandBuffer;
|
||||
@@ -488,10 +478,17 @@ void CVkRenderContext::Init()
|
||||
r = volkInitialize();
|
||||
VULKAN_RESULT_PRINT(r, volkInitialize);
|
||||
|
||||
// Get extensions required by game window
|
||||
nExtensionCount = gamewindow->GetVulkanInstanceExtensionCount();
|
||||
enabledInstanceExtensions.Resize(nExtensionCount);
|
||||
V_memcpy(enabledInstanceExtensions.GetData(), gamewindow->GetVulkanInstanceExtensions(), enabledInstanceExtensions.GetSize()*sizeof(const char*));
|
||||
if (m_pWindowManager)
|
||||
{
|
||||
nExtensionCount = m_pWindowManager->GetVulkanInstanceExtensionCount();
|
||||
enabledInstanceExtensions.Resize(nExtensionCount);
|
||||
V_memcpy(
|
||||
enabledInstanceExtensions.GetData(),
|
||||
m_pWindowManager->GetVulkanInstanceExtensions(),
|
||||
nExtensionCount*sizeof(const char*)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// Create instance
|
||||
stApplicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||
@@ -596,8 +593,6 @@ void CVkRenderContext::Init()
|
||||
stPipelineLayout.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||
stPipelineLayout.flags = VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT;
|
||||
vkCreatePipelineLayout(g_vkDevice, &stPipelineLayout, NULL, &g_pLibraryEmptyLayout);
|
||||
|
||||
CreateSwapchain();
|
||||
|
||||
g_vkCommandPools.Resize(g_vkSwapchainImages.GetSize());
|
||||
|
||||
@@ -619,6 +614,7 @@ void CVkRenderContext::Init()
|
||||
|
||||
void CVkRenderContext::Frame( float fDeltaTime )
|
||||
{
|
||||
/*
|
||||
CVkBlitCommand *pBlitCommand = NULL;
|
||||
if (m_pOutputImage)
|
||||
{
|
||||
@@ -643,7 +639,6 @@ void CVkRenderContext::Frame( float fDeltaTime )
|
||||
s_pPresentCommandBuffer->Render();
|
||||
|
||||
vkDeviceWaitIdle(g_vkDevice);
|
||||
m_bOutputImageOutdated = false;
|
||||
|
||||
static uint32_t s_nImageIndex = 0;
|
||||
uint32_t nImageIndex = 0;
|
||||
@@ -684,9 +679,10 @@ void CVkRenderContext::Frame( float fDeltaTime )
|
||||
|
||||
s_nImageIndex = (s_nImageIndex + 1) % g_vkSwapchainImages.GetSize();
|
||||
g_vkCommandBuffers = {};
|
||||
*/
|
||||
}
|
||||
|
||||
void CVkRenderContext::CreateSwapchain()
|
||||
void CVkRenderContext::CreateSwapchain( IGameWindow *pWindow )
|
||||
{
|
||||
uint32_t numSurfaceFormats = 0;
|
||||
CUtlVector<VkSurfaceFormatKHR> surfaceFormats;
|
||||
@@ -708,16 +704,17 @@ void CVkRenderContext::CreateSwapchain()
|
||||
|
||||
uint32_t nSwapchainImages;
|
||||
CUtlVector<VkImage> swapchainImages;
|
||||
VkSurfaceKHR hSurface;
|
||||
|
||||
gamewindow->CreateVulkanSurface(g_vkInstance);
|
||||
hSurface = (VkSurfaceKHR)pWindow->CreateVulkanSurface(g_vkInstance);
|
||||
|
||||
|
||||
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(g_vkPhysicalDevice, (VkSurfaceKHR)gamewindow->GetVulkanSurface(), &surfaceCapatibilities);
|
||||
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(g_vkPhysicalDevice, (VkSurfaceKHR)hSurface, &surfaceCapatibilities);
|
||||
|
||||
|
||||
vkGetPhysicalDeviceSurfaceFormatsKHR(g_vkPhysicalDevice, (VkSurfaceKHR)gamewindow->GetVulkanSurface(), &numSurfaceFormats, NULL);
|
||||
vkGetPhysicalDeviceSurfaceFormatsKHR(g_vkPhysicalDevice, (VkSurfaceKHR)hSurface, &numSurfaceFormats, NULL);
|
||||
surfaceFormats.Resize(numSurfaceFormats);
|
||||
vkGetPhysicalDeviceSurfaceFormatsKHR(g_vkPhysicalDevice, (VkSurfaceKHR)gamewindow->GetVulkanSurface(), &numSurfaceFormats, surfaceFormats.GetData());
|
||||
vkGetPhysicalDeviceSurfaceFormatsKHR(g_vkPhysicalDevice, (VkSurfaceKHR)hSurface, &numSurfaceFormats, surfaceFormats.GetData());
|
||||
|
||||
stSelectedFormat = surfaceFormats[0];
|
||||
|
||||
@@ -734,12 +731,12 @@ void CVkRenderContext::CreateSwapchain()
|
||||
}
|
||||
formatPicked:
|
||||
|
||||
vkGetPhysicalDeviceSurfacePresentModesKHR(g_vkPhysicalDevice, (VkSurfaceKHR)gamewindow->GetVulkanSurface(), &nSurfacePresentModes, NULL);
|
||||
vkGetPhysicalDeviceSurfacePresentModesKHR(g_vkPhysicalDevice, hSurface, &nSurfacePresentModes, NULL);
|
||||
surfacePresentModes.Resize(nSurfacePresentModes);
|
||||
vkGetPhysicalDeviceSurfacePresentModesKHR(g_vkPhysicalDevice, (VkSurfaceKHR)gamewindow->GetVulkanSurface(), &nSurfacePresentModes, surfacePresentModes.GetData());
|
||||
vkGetPhysicalDeviceSurfacePresentModesKHR(g_vkPhysicalDevice, hSurface, &nSurfacePresentModes, surfacePresentModes.GetData());
|
||||
|
||||
stSwapchainCreateInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
|
||||
stSwapchainCreateInfo.surface = (VkSurfaceKHR)gamewindow->GetVulkanSurface();
|
||||
stSwapchainCreateInfo.surface = hSurface;
|
||||
stSwapchainCreateInfo.imageFormat = stSelectedFormat.format;
|
||||
stSwapchainCreateInfo.imageColorSpace = stSelectedFormat.colorSpace;
|
||||
stSwapchainCreateInfo.presentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;
|
||||
@@ -786,10 +783,10 @@ formatPicked:
|
||||
|
||||
}
|
||||
|
||||
void CVkRenderContext::DestroySwapchain()
|
||||
void CVkRenderContext::DestroySwapchain( IGameWindow *pWindow )
|
||||
{
|
||||
vkDestroySwapchainKHR(g_vkDevice, g_vkSwapchain, NULL);
|
||||
gamewindow->DestroyVulkanSurface(g_vkInstance);
|
||||
pWindow->DestroyVulkanSurface(g_vkInstance);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
#include "vulkan_state.h"
|
||||
CVkShader::~CVkShader()
|
||||
{
|
||||
|
||||
}
|
||||
void CVkShader::AddShaderLibrary( CVkPipelineLibrary *pLibrary )
|
||||
{
|
||||
m_libraries.AppendTail(pLibrary);
|
||||
|
||||
@@ -256,6 +256,7 @@ void CVk##name##PipelineLibrary::Build() \
|
||||
class CVkShader : public IShader
|
||||
{
|
||||
public:
|
||||
~CVkShader();
|
||||
void AddShaderLibrary( CVkPipelineLibrary *pLibrary );
|
||||
void Build();
|
||||
virtual uint32_t PSGetResourceByName( const char *szName ) override;
|
||||
|
||||
Reference in New Issue
Block a user