Skip to content
Permalink
Browse files

Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vu…

…lkan2
  • Loading branch information...
dpjudas committed Mar 12, 2019
2 parents db6a478 + 3dd25bd commit a26e2cd8e0107123dd9f49441ae6944bcb9d293e
Showing with 29 additions and 32 deletions.
  1. +6 −10 src/posix/cocoa/i_video.mm
  2. +13 −13 src/posix/sdl/sdlglvideo.cpp
  3. +9 −0 src/v_video.cpp
  4. +1 −9 src/win32/hardware.cpp
@@ -95,6 +95,7 @@ - (void)enterFullscreenOnZoom
EXTERN_CVAR(Bool, vid_hidpi)
EXTERN_CVAR(Int, vid_defwidth)
EXTERN_CVAR(Int, vid_defheight)
EXTERN_CVAR(Int, vid_backend)

CUSTOM_CVAR(Bool, vid_autoswitch, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
@@ -342,7 +343,7 @@ void SetupOpenGLView(CocoaWindow* window)
public:
CocoaVideo()
{
ms_isVulkanSupported = true; // todo
ms_isVulkanEnabled = vid_backend == 0 && NSAppKitVersionNumber >= 1404; // NSAppKitVersionNumber10_11
}

~CocoaVideo()
@@ -359,7 +360,7 @@ void SetupOpenGLView(CocoaWindow* window)

SystemBaseFrameBuffer *fb = nullptr;

if (ms_isVulkanSupported)
if (ms_isVulkanEnabled)
{
const NSRect contentRect = [ms_window contentRectForFrameRect:[ms_window frame]];

@@ -380,7 +381,7 @@ void SetupOpenGLView(CocoaWindow* window)
}
catch (std::exception const&)
{
ms_isVulkanSupported = false;
ms_isVulkanEnabled = false;

SetupOpenGLView(ms_window);
}
@@ -402,23 +403,18 @@ void SetupOpenGLView(CocoaWindow* window)
return ms_window;
}

static bool IsVulkanSupported()
{
return ms_isVulkanSupported;
}

private:
VulkanDevice *m_vulkanDevice = nullptr;

static CocoaWindow* ms_window;

static bool ms_isVulkanSupported;
static bool ms_isVulkanEnabled;
};


CocoaWindow* CocoaVideo::ms_window;

bool CocoaVideo::ms_isVulkanSupported;
bool CocoaVideo::ms_isVulkanEnabled;


// ---------------------------------------------------------------------------
@@ -72,6 +72,7 @@ EXTERN_CVAR (Int, vid_displaybits)
EXTERN_CVAR (Int, vid_maxfps)
EXTERN_CVAR (Int, vid_defwidth)
EXTERN_CVAR (Int, vid_defheight)
EXTERN_CVAR (Int, vid_backend)
EXTERN_CVAR (Bool, cl_capfps)

// PUBLIC DATA DEFINITIONS -------------------------------------------------
@@ -111,7 +112,7 @@ namespace Priv
static const int MIN_HEIGHT = 200;

SDL_Window *window;
bool vulkanSupported;
bool vulkanEnabled;
bool fullscreenSwitch;

void CreateWindow(uint32_t extraFlags)
@@ -197,25 +198,23 @@ class SDLVideo : public IVideo

void I_GetVulkanDrawableSize(int *width, int *height)
{
assert(Priv::vulkanSupported);
assert(Priv::vulkanEnabled);
assert(Priv::window != nullptr);
assert(Priv::Vulkan_GetDrawableSize);
Priv::Vulkan_GetDrawableSize(Priv::window, width, height);
}

bool I_GetVulkanPlatformExtensions(unsigned int *count, const char **names)
{
assert(Priv::vulkanSupported);
assert(Priv::vulkanEnabled);
assert(Priv::window != nullptr);
assert(Priv::Vulkan_GetInstanceExtensions);
return Priv::Vulkan_GetInstanceExtensions(Priv::window, count, names) == SDL_TRUE;
}

bool I_CreateVulkanSurface(VkInstance instance, VkSurfaceKHR *surface)
{
assert(Priv::vulkanSupported);
assert(Priv::vulkanEnabled);
assert(Priv::window != nullptr);
assert(Priv::Vulkan_CreateSurface);
return Priv::Vulkan_CreateSurface(Priv::window, instance, surface) == SDL_TRUE;
}

@@ -234,15 +233,16 @@ SDLVideo::SDLVideo ()
Priv::library.Load({ "libSDL2.so", "libSDL2-2.0.so" });
}

Priv::vulkanSupported = Priv::Vulkan_GetDrawableSize && Priv::Vulkan_GetInstanceExtensions && Priv::Vulkan_CreateSurface;
Priv::vulkanEnabled = vid_backend == 0
&& Priv::Vulkan_GetDrawableSize && Priv::Vulkan_GetInstanceExtensions && Priv::Vulkan_CreateSurface;

if (Priv::vulkanSupported)
if (Priv::vulkanEnabled)
{
Priv::CreateWindow(Priv::VulkanWindowFlag | SDL_WINDOW_HIDDEN);

if (Priv::window == nullptr)
{
Priv::vulkanSupported = false;
Priv::vulkanEnabled = false;
}
}
}
@@ -257,7 +257,7 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer ()
SystemBaseFrameBuffer *fb = nullptr;

// first try Vulkan, if that fails OpenGL
if (Priv::vulkanSupported)
if (Priv::vulkanEnabled)
{
try
{
@@ -267,7 +267,7 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer ()
}
catch (CRecoverableError const&)
{
Priv::vulkanSupported = false;
Priv::vulkanEnabled = false;
}
}

@@ -302,7 +302,7 @@ int SystemBaseFrameBuffer::GetClientWidth()
{
int width = 0;

assert(Priv::vulkanSupported);
assert(Priv::vulkanEnabled);
Priv::Vulkan_GetDrawableSize(Priv::window, &width, nullptr);

return width;
@@ -312,7 +312,7 @@ int SystemBaseFrameBuffer::GetClientHeight()
{
int height = 0;

assert(Priv::vulkanSupported);
assert(Priv::vulkanEnabled);
Priv::Vulkan_GetDrawableSize(Priv::window, nullptr, &height);

return height;
@@ -113,6 +113,15 @@ CUSTOM_CVAR(Int, vid_rendermode, 4, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOIN
// No further checks needed. All this changes now is which scene drawer the render backend calls.
}

CUSTOM_CVAR(Int, vid_backend, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
// [SP] This may seem pointless - but I don't want to implement live switching just
// yet - I'm pretty sure it's going to require a lot of reinits and destructions to
// do it right without memory leaks

Printf("Changing the video backend requires a restart for " GAMENAME ".\n");
}

CVAR(Int, vid_renderer, 1, 0) // for some stupid mods which threw caution out of the window...


@@ -50,15 +50,7 @@
#include "swrenderer/r_swrenderer.h"

EXTERN_CVAR(Int, vid_maxfps)

CUSTOM_CVAR(Int, vid_backend, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL)
{
// [SP] This may seem pointless - but I don't want to implement live switching just
// yet - I'm pretty sure it's going to require a lot of reinits and destructions to
// do it right without memory leaks

Printf("Changing the video backend requires a restart for " GAMENAME ".\n");
}
EXTERN_CVAR(Int, vid_backend)

extern HWND Window;

0 comments on commit a26e2cd

Please sign in to comment.
You can’t perform that action at this time.