trying to make it work without -rdynamic

This commit is contained in:
2025-12-25 16:54:27 +02:00
parent fb5e607f88
commit 352b3b1fc8
22 changed files with 452 additions and 266 deletions

View File

@@ -3,6 +3,7 @@
#include "tier2/iappsystem.h"
#include "tier0/platform.h"
#include "materialsystem/imaterialsystem.h"
enum EGraphicsAPI
{
@@ -15,13 +16,26 @@ abstract_class IGameWindow: public IAppSystem
public:
virtual void UpdateWindow() = 0;
// Rendering info
virtual void SetRenderImage( IImage *pImage ) = 0;
virtual bool BIsRenderResolutionUpdated() = 0;
virtual void GetRenderWidth() = 0;
virtual void GetRenderHeight() = 0;
virtual EGraphicsAPI GetGraphicsAPI() = 0;
// Vulkan stuff
virtual int GetVulkanInstanceExtensionCount() = 0;
virtual const char **GetVulkanInstanceExtensions() = 0;
virtual void CreateVulkanSurface( void *pInstance ) = 0;
virtual void DestroyVulkanSurface( void *pInstance ) = 0;
virtual void CreateVulkanSurface( void *pInstance, void *pDevice ) = 0;
virtual void DestroyVulkanSurface( void *pInstance, void *pDevice ) = 0;
virtual void *GetVulkanSurface() = 0;
virtual void *GetVulkanFence( int iFrame ) = 0;
virtual void *GetVulkanDrawSemaphore( int iFrame ) = 0;
virtual void *GetVulkanPresentSemaphore( int iFrame ) = 0;
virtual IImage *GetVulkanSwapchainImage( int iFrame ) = 0;
};
extern IGameWindow *gamewindow;

View File

@@ -1,8 +1,11 @@
#ifndef MATERIAL_SYSTEM_H
#define MATERIAL_SYSTEM_H
#include "tier2/iappsystem.h"
#include "tier0/platform.h"
#include "tier2/iappsystem.h"
class IGameWindow;
#define VULKAN_FRAMES_IN_FLIGHT 2
enum EImageFormat
{
@@ -209,19 +212,21 @@ public:
virtual IRenderCommandList *CreateCommandList() = 0;
virtual void DestroyCommandList( IRenderCommandList *pCommandList ) = 0;
virtual void SubmitCommandList(IRenderCommandList *pList) = 0;
virtual void RenderGameWindow( IGameWindow *pWindow ) = 0;
};
#define RENDER_CONTEXT_INTERFACE_NAME "RenderContext001"
#define RENDER_CONTEXT_VULKAN_INTERFACE_NAME RENDER_CONTEXT_INTERFACE_NAME
#define MATERIAL_SYSTEM_INTERFACE_NAME "MaterialSystem001"
abstract_class IMaterialSystem: public IAppSystem
{
public:
virtual void Frame( float fTime ) = 0;
virtual void RenderGameWindow( IGameWindow *pWindow ) = 0;
};
extern IRenderContext *g_pRenderContext;
IMaterialSystem *Materials( void );
extern IMaterialSystem *g_pMaterialSystem;
#endif

View File

@@ -6,6 +6,8 @@
#define TIER1_UTL_STRING_H
#include "tier1/utlvector.h"
#include "tier0/lib.h"
#include "stdarg.h"
class CUtlString {
public:
@@ -39,5 +41,210 @@ public:
private:
CUtlVector<char> m_data = 0;
};
inline CUtlString::CUtlString( void )
{
m_data.Reserve(1);
m_data[0]=0;
}
inline CUtlString::CUtlString( const char *szFormat, ... )
{
if (szFormat == 0)
{
m_data.Reserve(1);
m_data[0]=0;
return;
}
va_list vlArgs;
va_start(vlArgs, szFormat);
va_list vlArgs2;
va_copy(vlArgs2, vlArgs);
size_t nSize = V_vsnprintf(NULL, 0, szFormat, vlArgs2);
m_data.Reserve(nSize + 1);
va_end(vlArgs2);
V_vsnprintf(m_data.GetData(), nSize + 1, szFormat, vlArgs);
m_data.Resize(nSize + 1);
va_end(vlArgs);
}
inline CUtlString::CUtlString( const CUtlString &sz )
{
m_data = sz.m_data;
};
inline void CUtlString::AppendTail( const char *psz )
{
m_data.Resize(V_strlen(m_data.GetData()));
m_data.AppendTail(psz,V_strlen(psz));
m_data.Reserve(m_data.GetSize()+1);
m_data[m_data.GetSize()] = 0;
}
inline void CUtlString::AppendHead( const char *psz )
{
m_data.AppendHead(psz,V_strlen(psz));
}
inline void CUtlString::AppendTail( char ch )
{
m_data.Resize(V_strlen(m_data.GetData()));
m_data.AppendTail(ch);
m_data.Reserve(m_data.GetSize()+1);
m_data[m_data.GetSize()] = 0;
}
inline void CUtlString::AppendHead( char ch )
{
m_data.AppendHead(ch);
}
inline void CUtlString::AppendAt( size_t nPosition, const char *psz )
{
}
inline void CUtlString::RemoveTail( size_t nCount )
{
m_data.RemoveTail(nCount);
m_data[m_data.GetSize()-1] = 0;
}
inline void CUtlString::RemoveHead( size_t nCount )
{
m_data.RemoveHead(nCount);
}
inline void CUtlString::RemoveAt( size_t nPosition, size_t nCount )
{
}
inline CUtlString CUtlString::GetFileName()
{
CUtlString szFileName = GetString();
char *pLast = &m_data[GetLenght()-1];
while (pLast != m_data.GetData())
{
if (*pLast=='/')
break;
pLast--;
}
return pLast;
}
inline CUtlString CUtlString::GetDirectory()
{
if (GetLenght() == 0)
return NULL;
size_t iNumDeleted = 0;
char *pLast = &m_data[GetLenght()-1];
CUtlString szDirectory = GetString();
while (pLast != m_data.GetData())
{
if (*pLast=='/')
{
iNumDeleted++;
break;
}
pLast--;
iNumDeleted++;
}
szDirectory.RemoveTail(iNumDeleted);
return szDirectory;
}
inline CUtlString CUtlString::RemoveHeadFile()
{
size_t iLenght = GetLenght();
size_t iNumDeleted = 0;
char *pc = GetString();
CUtlString szDirectory = pc;
if (GetLenght() == 0)
return NULL;
while ( iNumDeleted < iLenght )
{
if (*pc == '/')
goto remove_slashes;
pc++;
iNumDeleted++;
}
return NULL;
remove_slashes:
while ( iNumDeleted < iLenght )
{
if (*pc != '/')
{
szDirectory.RemoveHead(iNumDeleted);
return szDirectory;
}
pc++;
iNumDeleted++;
}
return NULL;
}
inline char *CUtlString::GetString( void )
{
return m_data.GetData();
}
inline size_t CUtlString::GetLenght( void )
{
return V_strlen(GetString());
}
inline CUtlString::operator char*( void )
{
return GetString();
}
inline CUtlString::operator CUtlVector<char>&( void )
{
return m_data;
}
inline CUtlString &CUtlString::operator=(const CUtlString &sz)
{
if (this != &sz)
{
m_data = sz.m_data;
}
return *this;
}
inline bool CUtlString::operator==(const char *psz)
{
if (psz==0)
psz = "";
if (!V_strcmp(GetString(), psz))
return true;
return false;
}
inline bool CUtlString::operator!=(const char *psz)
{
if (psz==0)
psz = "";
if (!V_strcmp(GetString(), psz))
return false;
return true;
}
inline bool CUtlString::operator==(CUtlString &string)
{
if (!V_strcmp(GetString(), string.GetString()))
return true;
return false;
}
inline bool CUtlString::operator!=(CUtlString &string)
{
if (!V_strcmp(GetString(), string.GetString()))
return false;
return true;
}
#endif