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

@@ -1,8 +1,9 @@
#include "SDL3/SDL_error.h"
#include "igamewindow.h"
#include "tier1/interface.h"
#include "tier0/lib.h"
#include "tier0/platform.h"
#include "tier1/interface.h"
#include "tier1/utlvector.h"
#define SDL_MAIN_HANDLED
#include "SDL3/SDL.h"
@@ -11,7 +12,6 @@
#include "SDL3/SDL_vulkan.h"
#include "SDL3/SDL_events.h"
class CSDLGameWindow: public IGameWindow
{
public:
@@ -19,19 +19,36 @@ public:
virtual void Shutdown() override;
virtual void UpdateWindow() override;
virtual EGraphicsAPI GetGraphicsAPI() override;
// Rendering info
virtual void SetRenderImage( IImage *pImage ) override;
virtual bool BIsRenderResolutionUpdated() override;
virtual void GetRenderWidth() override;
virtual void GetRenderHeight() override;
// Vulkan stuff
virtual int GetVulkanInstanceExtensionCount() override;
virtual const char **GetVulkanInstanceExtensions() override;
virtual void CreateVulkanSurface( void *pInstance ) override;
virtual void DestroyVulkanSurface( void *pInstance ) override;
virtual void *GetVulkanSurface() override;
virtual void CreateVulkanSurface( void *pInstance, void *pDevice ) override;
virtual void DestroyVulkanSurface( void *pInstance, void *pDevice ) override;
virtual void *GetVulkanSurface() override;
virtual void *GetVulkanFence( int iFrame ) override;
virtual void *GetVulkanDrawSemaphore( int iFrame ) override;
virtual void *GetVulkanPresentSemaphore( int iFrame ) override;
virtual IImage *GetVulkanSwapchainImage( int iFrame ) override;
private:
SDL_Window *m_pWindow;
EGraphicsAPI m_ePreferredGraphicsAPI;
uint32_t m_uRenderWidth;
uint32_t m_uRenderHeight;
bool m_bIsRenderResolutionUpdated;
void *m_pVulkanSurface;
CUtlVector<IImage*> m_vulkanImages;
void *m_pVulkanFences[VULKAN_FRAMES_IN_FLIGHT];
void *m_pVulkanPresentSemaphores[VULKAN_FRAMES_IN_FLIGHT];
};
CSDLGameWindow g_sdlGameWindow;
@@ -58,11 +75,15 @@ void CSDLGameWindow::Shutdown()
void CSDLGameWindow::UpdateWindow()
{
SDL_Event event;
m_bIsRenderResolutionUpdated = false;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED:
m_bIsRenderResolutionUpdated = true;
m_uRenderWidth = event.window.data1;
m_uRenderWidth = event.window.data2;
break;
case SDL_EVENT_QUIT:
SDL_Quit();
@@ -113,10 +134,6 @@ void CSDLGameWindow::DestroyVulkanSurface( void *pInstance )
void *CSDLGameWindow::GetVulkanSurface()
{
if ( m_ePreferredGraphicsAPI != GRAPHICS_API_VULKAN )
return 0;
return m_pVulkanSurface;
}