diff --git a/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h b/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h index 9d6889ccd22..9da7f792b71 100644 --- a/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h +++ b/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h @@ -107,6 +107,7 @@ namespace Ogre class VulkanTextureGpuManager; class VulkanVaoManager; class VulkanWindow; + class VulkanWindowSwapChainBased; class VulkanDiscardBuffer; class VulkanDiscardBufferManager; diff --git a/RenderSystems/Vulkan/include/OgreVulkanQueue.h b/RenderSystems/Vulkan/include/OgreVulkanQueue.h index a5a109f68d7..c80f9241fe9 100644 --- a/RenderSystems/Vulkan/include/OgreVulkanQueue.h +++ b/RenderSystems/Vulkan/include/OgreVulkanQueue.h @@ -113,7 +113,7 @@ namespace Ogre RefCountedFenceMap mRefCountedFences; public: - FastArray mWindowsPendingSwap; + FastArray mWindowsPendingSwap; protected: FastArray mPendingCmds; diff --git a/RenderSystems/Vulkan/include/OgreVulkanTextureGpuManager.h b/RenderSystems/Vulkan/include/OgreVulkanTextureGpuManager.h index 62d55e3c0d9..906dbea586c 100644 --- a/RenderSystems/Vulkan/include/OgreVulkanTextureGpuManager.h +++ b/RenderSystems/Vulkan/include/OgreVulkanTextureGpuManager.h @@ -97,7 +97,7 @@ namespace Ogre VulkanDevice *device, bool bCanRestrictImageViewUsage ); ~VulkanTextureGpuManager() override; - TextureGpu *createTextureGpuWindow( VulkanWindow *window ); + TextureGpu *createTextureGpuWindow( VulkanWindowSwapChainBased *window ); TextureGpu *createWindowDepthBuffer(); VkImage getBlankTextureVulkanName( TextureTypes::TextureTypes textureType ) const; diff --git a/RenderSystems/Vulkan/include/OgreVulkanTextureGpuWindow.h b/RenderSystems/Vulkan/include/OgreVulkanTextureGpuWindow.h index d2f749314a9..a760602627f 100644 --- a/RenderSystems/Vulkan/include/OgreVulkanTextureGpuWindow.h +++ b/RenderSystems/Vulkan/include/OgreVulkanTextureGpuWindow.h @@ -37,7 +37,7 @@ namespace Ogre { class _OgreVulkanExport VulkanTextureGpuWindow final : public VulkanTextureGpuRenderTarget { - VulkanWindow *mWindow; + VulkanWindowSwapChainBased *mWindow; uint32 mCurrentSwapchainIdx; @@ -48,7 +48,7 @@ namespace Ogre VulkanTextureGpuWindow( GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, - TextureGpuManager *textureManager, VulkanWindow *window ); + TextureGpuManager *textureManager, VulkanWindowSwapChainBased *window ); ~VulkanTextureGpuWindow() override; void setTextureType( TextureTypes::TextureTypes textureType ) override; diff --git a/RenderSystems/Vulkan/include/OgreVulkanWindow.h b/RenderSystems/Vulkan/include/OgreVulkanWindow.h index 9da9bcd04dd..f8cd469e5ba 100644 --- a/RenderSystems/Vulkan/include/OgreVulkanWindow.h +++ b/RenderSystems/Vulkan/include/OgreVulkanWindow.h @@ -36,6 +36,37 @@ namespace Ogre { class VulkanWindow : public Window { + protected: + VulkanDevice *mDevice; + + public: + VulkanWindow( const String &title, uint32 width, uint32 height, bool fullscreenMode ); + + void _setDevice( VulkanDevice *device ); + void _initialize( TextureGpuManager *textureGpuManager ) override; + virtual void _initialize( TextureGpuManager *textureGpuManager, + const NameValuePairList *miscParams ) = 0; + }; + + class VulkanWindowNull : public VulkanWindow + { + public: + VulkanWindowNull( const String &title, uint32 width, uint32 height, bool fullscreenMode ); + + void destroy() override; + void reposition( int32 leftPt, int32 topPt ) override; + bool isClosed() const override; + void _setVisible( bool visible ) override; + bool isVisible() const override; + void setHidden( bool hidden ) override; + bool isHidden() const override; + void _initialize( TextureGpuManager *textureGpuManager, + const NameValuePairList *miscParams ) override; + void swapBuffers() override; + }; + + class VulkanWindowSwapChainBased : public VulkanWindow + { public: enum Backend { @@ -43,11 +74,11 @@ namespace Ogre }; enum SwapchainStatus { - /// We already called VulkanWindow::acquireNextSwapchain. + /// We already called VulkanWindowSwapChainBased::acquireNextSwapchain. /// /// Can only go into this state if we're coming from SwapchainReleased SwapchainAcquired, - /// We already called VulkanWindow::getImageAcquiredSemaphore. + /// We already called VulkanWindowSwapChainBased::getImageAcquiredSemaphore. /// Further calls to getImageAcquiredSemaphore will return null. /// Ogre is rendering or intends to into this swapchain. /// @@ -66,8 +97,6 @@ namespace Ogre bool mHwGamma; bool mClosed; - VulkanDevice *mDevice; - VkSurfaceKHR mSurfaceKHR; VkSwapchainKHR mSwapchain; FastArray mSwapchainImages; @@ -89,16 +118,11 @@ namespace Ogre void acquireNextSwapchain(); public: - VulkanWindow( const String &title, uint32 width, uint32 height, bool fullscreenMode ); - ~VulkanWindow() override; + VulkanWindowSwapChainBased( const String &title, uint32 width, uint32 height, bool fullscreenMode ); + ~VulkanWindowSwapChainBased() override; void destroy() override; - void _setDevice( VulkanDevice *device ); - void _initialize( TextureGpuManager *textureGpuManager ) override; - virtual void _initialize( TextureGpuManager *textureGpuManager, - const NameValuePairList *miscParams ) = 0; - /// Returns null if getImageAcquiredSemaphore has already been called during this frame VkSemaphore getImageAcquiredSemaphore(); diff --git a/RenderSystems/Vulkan/include/Windowing/Android/OgreVulkanAndroidWindow.h b/RenderSystems/Vulkan/include/Windowing/Android/OgreVulkanAndroidWindow.h index 85c54b81f74..46b8f04a481 100644 --- a/RenderSystems/Vulkan/include/Windowing/Android/OgreVulkanAndroidWindow.h +++ b/RenderSystems/Vulkan/include/Windowing/Android/OgreVulkanAndroidWindow.h @@ -41,7 +41,7 @@ struct ANativeWindow; namespace Ogre { - class _OgreVulkanExport VulkanAndroidWindow final : public VulkanWindow + class _OgreVulkanExport VulkanAndroidWindow final : public VulkanWindowSwapChainBased { ANativeWindow *mNativeWindow; diff --git a/RenderSystems/Vulkan/include/Windowing/X11/OgreVulkanXcbWindow.h b/RenderSystems/Vulkan/include/Windowing/X11/OgreVulkanXcbWindow.h index d7dd3763372..0b5b3a99100 100644 --- a/RenderSystems/Vulkan/include/Windowing/X11/OgreVulkanXcbWindow.h +++ b/RenderSystems/Vulkan/include/Windowing/X11/OgreVulkanXcbWindow.h @@ -44,7 +44,7 @@ typedef uint32_t xcb_atom_t; namespace Ogre { - class _OgreVulkanExport VulkanXcbWindow : public VulkanWindow + class _OgreVulkanExport VulkanXcbWindow : public VulkanWindowSwapChainBased { xcb_connection_t *mConnection; xcb_screen_t *mScreen; diff --git a/RenderSystems/Vulkan/include/Windowing/win32/OgreVulkanWin32Window.h b/RenderSystems/Vulkan/include/Windowing/win32/OgreVulkanWin32Window.h index 605224635dd..b1da69955d1 100644 --- a/RenderSystems/Vulkan/include/Windowing/win32/OgreVulkanWin32Window.h +++ b/RenderSystems/Vulkan/include/Windowing/win32/OgreVulkanWin32Window.h @@ -34,7 +34,7 @@ Copyright (c) 2000-present Torus Knot Software Ltd namespace Ogre { - class VulkanWin32Window final : public VulkanWindow + class VulkanWin32Window final : public VulkanWindowSwapChainBased { private: HWND mHwnd; // Win32 Window handle diff --git a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp index a1237104986..df8f70a7c2a 100644 --- a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp +++ b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp @@ -954,13 +954,30 @@ namespace Ogre bool fullScreen, const NameValuePairList *miscParams ) { + String windowType; + if( miscParams ) + { + // Get variable-length params + NameValuePairList::const_iterator opt = miscParams->find( "windowType" ); + if( opt != miscParams->end() ) + windowType = opt->second; + } + + VulkanWindow *win = nullptr; + if( windowType == "Null" ) + { + win = OGRE_NEW VulkanWindowNull( name, width, height, fullScreen ); + } + else + { #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 - VulkanWindow *win = OGRE_NEW VulkanWin32Window( name, width, height, fullScreen ); + win = OGRE_NEW VulkanWin32Window( name, width, height, fullScreen ); #elif OGRE_PLATFORM == OGRE_PLATFORM_ANDROID - VulkanWindow *win = OGRE_NEW VulkanAndroidWindow( name, width, height, fullScreen ); + win = OGRE_NEW VulkanAndroidWindow( name, width, height, fullScreen ); #else - VulkanWindow *win = OGRE_NEW VulkanXcbWindow( name, width, height, fullScreen ); + win = OGRE_NEW VulkanXcbWindow( name, width, height, fullScreen ); #endif + } mWindows.insert( win ); if( !mInitialized ) diff --git a/RenderSystems/Vulkan/src/OgreVulkanTextureGpuManager.cpp b/RenderSystems/Vulkan/src/OgreVulkanTextureGpuManager.cpp index a8425fb3206..db0308e2950 100644 --- a/RenderSystems/Vulkan/src/OgreVulkanTextureGpuManager.cpp +++ b/RenderSystems/Vulkan/src/OgreVulkanTextureGpuManager.cpp @@ -314,7 +314,7 @@ namespace Ogre } } //----------------------------------------------------------------------------------- - TextureGpu *VulkanTextureGpuManager::createTextureGpuWindow( VulkanWindow *window ) + TextureGpu *VulkanTextureGpuManager::createTextureGpuWindow( VulkanWindowSwapChainBased *window ) { return OGRE_NEW VulkanTextureGpuWindow( GpuPageOutStrategy::Discard, mVaoManager, "RenderWindow", // diff --git a/RenderSystems/Vulkan/src/OgreVulkanTextureGpuWindow.cpp b/RenderSystems/Vulkan/src/OgreVulkanTextureGpuWindow.cpp index 11cc5caae82..f50e0f91e65 100644 --- a/RenderSystems/Vulkan/src/OgreVulkanTextureGpuWindow.cpp +++ b/RenderSystems/Vulkan/src/OgreVulkanTextureGpuWindow.cpp @@ -47,7 +47,7 @@ namespace Ogre VulkanTextureGpuWindow::VulkanTextureGpuWindow( GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager, - VulkanWindow *window ) : + VulkanWindowSwapChainBased *window ) : VulkanTextureGpuRenderTarget( pageOutStrategy, vaoManager, name, textureFlags, initialType, textureManager ), mWindow( window ), diff --git a/RenderSystems/Vulkan/src/OgreVulkanWindow.cpp b/RenderSystems/Vulkan/src/OgreVulkanWindow.cpp index 0529ba42b23..34fc133c61b 100644 --- a/RenderSystems/Vulkan/src/OgreVulkanWindow.cpp +++ b/RenderSystems/Vulkan/src/OgreVulkanWindow.cpp @@ -47,10 +47,73 @@ namespace Ogre { VulkanWindow::VulkanWindow( const String &title, uint32 width, uint32 height, bool fullscreenMode ) : Window( title, width, height, fullscreenMode ), + mDevice( 0 ) + { + } + //------------------------------------------------------------------------- + void VulkanWindow::_setDevice( VulkanDevice *device ) + { + OGRE_ASSERT_LOW( !mDevice ); + mDevice = device; + } + //------------------------------------------------------------------------- + void VulkanWindow::_initialize( TextureGpuManager *textureGpuManager ) + { + OGRE_EXCEPT( Exception::ERR_INVALID_CALL, + "Call _initialize( TextureGpuManager*, const NameValuePairList * ) instead", + "VulkanWindowSwapChainBased::_initialize" ); + } + //------------------------------------------------------------------------- + VulkanWindowNull::VulkanWindowNull(const String &title, uint32 width, uint32 height, bool fullscreenMode) : + VulkanWindow(title, width, height, fullscreenMode) + { + } + //------------------------------------------------------------------------- + void VulkanWindowNull::destroy() + { + } + //------------------------------------------------------------------------- + void VulkanWindowNull::reposition( int32 leftPt, int32 topPt ) + { + } + //------------------------------------------------------------------------- + bool VulkanWindowNull::isClosed() const + { + return false; + } + //------------------------------------------------------------------------- + void VulkanWindowNull::_setVisible( bool visible ) + { + } + //------------------------------------------------------------------------- + bool VulkanWindowNull::isVisible() const + { + return false; + } + //------------------------------------------------------------------------- + void VulkanWindowNull::setHidden( bool hidden ) + { + } + //------------------------------------------------------------------------- + bool VulkanWindowNull::isHidden() const + { + return true; + } + //------------------------------------------------------------------------- + void VulkanWindowNull::_initialize( TextureGpuManager *textureGpuManager, + const NameValuePairList *miscParams ) + { + } + //------------------------------------------------------------------------- + void VulkanWindowNull::swapBuffers() + { + } + //------------------------------------------------------------------------- + VulkanWindowSwapChainBased::VulkanWindowSwapChainBased( const String &title, uint32 width, uint32 height, bool fullscreenMode ) : + VulkanWindow( title, width, height, fullscreenMode ), mLowestLatencyVSync( false ), mHwGamma( false ), mClosed( false ), - mDevice( 0 ), mSurfaceKHR( 0 ), mSwapchain( 0 ), mSwapchainSemaphore( 0 ), @@ -61,9 +124,9 @@ namespace Ogre mFocused = true; } //------------------------------------------------------------------------- - VulkanWindow::~VulkanWindow() {} + VulkanWindowSwapChainBased::~VulkanWindowSwapChainBased() {} //------------------------------------------------------------------------- - void VulkanWindow::parseSharedParams( const NameValuePairList *miscParams ) + void VulkanWindowSwapChainBased::parseSharedParams( const NameValuePairList *miscParams ) { NameValuePairList::const_iterator opt; NameValuePairList::const_iterator end = miscParams->end(); @@ -88,7 +151,7 @@ namespace Ogre mLowestLatencyVSync = opt->second == "Lowest Latency"; } //------------------------------------------------------------------------- - PixelFormatGpu VulkanWindow::chooseSurfaceFormat( bool hwGamma ) + PixelFormatGpu VulkanWindowSwapChainBased::chooseSurfaceFormat( bool hwGamma ) { uint32 numFormats = 0u; VkResult result = vkGetPhysicalDeviceSurfaceFormatsKHR( mDevice->mPhysicalDevice, mSurfaceKHR, @@ -98,7 +161,7 @@ namespace Ogre { OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR, "vkGetPhysicalDeviceSurfaceFormatsKHR returned 0 formats!", - "VulkanWindow::chooseSurfaceFormat" ); + "VulkanWindowSwapChainBased::chooseSurfaceFormat" ); } FastArray formats; @@ -136,13 +199,13 @@ namespace Ogre if( pixelFormat == PFG_UNKNOWN ) { OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR, "Could not find a suitable Surface format", - "VulkanWindow::chooseSurfaceFormat" ); + "VulkanWindowSwapChainBased::chooseSurfaceFormat" ); } return pixelFormat; } //------------------------------------------------------------------------- - void VulkanWindow::createSwapchain() + void VulkanWindowSwapChainBased::createSwapchain() { mSuboptimal = false; @@ -166,7 +229,7 @@ namespace Ogre { OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR, "vkGetPhysicalDeviceSurfaceSupportKHR says our KHR Surface is unsupported!", - "VulkanWindow::createSwapchain" ); + "VulkanWindowSwapChainBased::createSwapchain" ); } uint32 numPresentModes = 0u; @@ -355,7 +418,7 @@ namespace Ogre mDevice->mRenderSystem->notifySwapchainCreated( this ); } //------------------------------------------------------------------------- - void VulkanWindow::destroySwapchain() + void VulkanWindowSwapChainBased::destroySwapchain() { mDevice->mRenderSystem->notifySwapchainDestroyed( this ); @@ -374,7 +437,7 @@ namespace Ogre mSwapchainStatus = SwapchainReleased; } //------------------------------------------------------------------------- - void VulkanWindow::acquireNextSwapchain() + void VulkanWindowSwapChainBased::acquireNextSwapchain() { OGRE_ASSERT_LOW( mSwapchainStatus == SwapchainReleased ); OGRE_ASSERT_MEDIUM( !mSwapchainSemaphore ); @@ -401,7 +464,7 @@ namespace Ogre else { LogManager::getSingleton().logMessage( - "[VulkanWindow::acquireNextSwapchain] vkAcquireNextImageKHR failed VkResult = " + + "[VulkanWindowSwapChainBased::acquireNextSwapchain] vkAcquireNextImageKHR failed VkResult = " + vkResultToString( result ) ); } } @@ -415,7 +478,7 @@ namespace Ogre } } //------------------------------------------------------------------------- - void VulkanWindow::destroy() + void VulkanWindowSwapChainBased::destroy() { destroySwapchain(); if( mSurfaceKHR ) @@ -425,20 +488,7 @@ namespace Ogre } } //------------------------------------------------------------------------- - void VulkanWindow::_setDevice( VulkanDevice *device ) - { - OGRE_ASSERT_LOW( !mDevice ); - mDevice = device; - } - //------------------------------------------------------------------------- - void VulkanWindow::_initialize( TextureGpuManager *textureGpuManager ) - { - OGRE_EXCEPT( Exception::ERR_INVALID_CALL, - "Call _initialize( TextureGpuManager*, const NameValuePairList * ) instead", - "VulkanWindow::_initialize" ); - } - //------------------------------------------------------------------------- - VkSemaphore VulkanWindow::getImageAcquiredSemaphore() + VkSemaphore VulkanWindowSwapChainBased::getImageAcquiredSemaphore() { OGRE_ASSERT_LOW( mSwapchainStatus != SwapchainReleased ); // It's weird that mSwapchainStatus would be in SwapchainPendingSwap here, @@ -459,9 +509,9 @@ namespace Ogre return retVal; } //------------------------------------------------------------------------- - bool VulkanWindow::isClosed() const { return mClosed; } + bool VulkanWindowSwapChainBased::isClosed() const { return mClosed; } //------------------------------------------------------------------------- - void VulkanWindow::setVSync( bool vSync, uint32 vSyncInterval ) + void VulkanWindowSwapChainBased::setVSync( bool vSync, uint32 vSyncInterval ) { // mVSyncInterval is ignored at least for now // (we'd need VK_GOOGLE_display_timing or VK_MESA_present_period) @@ -483,7 +533,7 @@ namespace Ogre createSwapchain(); } //------------------------------------------------------------------------- - void VulkanWindow::swapBuffers() + void VulkanWindowSwapChainBased::swapBuffers() { if( mSwapchainStatus == SwapchainAcquired || mSwapchainStatus == SwapchainPendingSwap ) { @@ -504,7 +554,7 @@ namespace Ogre mSwapchainStatus = SwapchainPendingSwap; } //------------------------------------------------------------------------- - void VulkanWindow::_swapBuffers( VkSemaphore queueFinishSemaphore ) + void VulkanWindowSwapChainBased::_swapBuffers( VkSemaphore queueFinishSemaphore ) { OGRE_ASSERT_LOW( mSwapchainStatus == SwapchainPendingSwap ); @@ -546,7 +596,7 @@ namespace Ogre if( result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR && result != VK_ERROR_OUT_OF_DATE_KHR ) { LogManager::getSingleton().logMessage( - "[VulkanWindow::swapBuffers] vkQueuePresentKHR: error presenting VkResult = " + + "[VulkanWindowSwapChainBased::swapBuffers] vkQueuePresentKHR: error presenting VkResult = " + vkResultToString( result ) ); } @@ -556,7 +606,7 @@ namespace Ogre mSwapchainStatus = SwapchainReleased; } //------------------------------------------------------------------------- - void VulkanWindow::getCustomAttribute( IdString name, void *pData ) + void VulkanWindowSwapChainBased::getCustomAttribute( IdString name, void *pData ) { if( name == "RENDERDOC_DEVICE" ) { diff --git a/RenderSystems/Vulkan/src/Windowing/Android/OgreVulkanAndroidWindow.cpp b/RenderSystems/Vulkan/src/Windowing/Android/OgreVulkanAndroidWindow.cpp index c8627a22970..0463f5432f7 100644 --- a/RenderSystems/Vulkan/src/Windowing/Android/OgreVulkanAndroidWindow.cpp +++ b/RenderSystems/Vulkan/src/Windowing/Android/OgreVulkanAndroidWindow.cpp @@ -50,7 +50,7 @@ namespace Ogre { VulkanAndroidWindow::VulkanAndroidWindow( const String &title, uint32 width, uint32 height, bool fullscreenMode ) : - VulkanWindow( title, width, height, fullscreenMode ), + VulkanWindowSwapChainBased( title, width, height, fullscreenMode ), mNativeWindow( 0 ), mVisible( true ), mHidden( false ), @@ -90,7 +90,7 @@ namespace Ogre //----------------------------------------------------------------------------------- void VulkanAndroidWindow::destroy() { - VulkanWindow::destroy(); + VulkanWindowSwapChainBased::destroy(); if( mClosed ) return; @@ -291,7 +291,7 @@ namespace Ogre } else { - VulkanWindow::getCustomAttribute( name, pData ); + VulkanWindowSwapChainBased::getCustomAttribute( name, pData ); } } } // namespace Ogre diff --git a/RenderSystems/Vulkan/src/Windowing/X11/OgreVulkanXcbWindow.cpp b/RenderSystems/Vulkan/src/Windowing/X11/OgreVulkanXcbWindow.cpp index 8198f1af85b..8cac24f4022 100644 --- a/RenderSystems/Vulkan/src/Windowing/X11/OgreVulkanXcbWindow.cpp +++ b/RenderSystems/Vulkan/src/Windowing/X11/OgreVulkanXcbWindow.cpp @@ -67,7 +67,7 @@ namespace Ogre VulkanXcbWindow::VulkanXcbWindow( const String &title, uint32 width, uint32 height, bool fullscreenMode ) : - VulkanWindow( title, width, height, fullscreenMode ), + VulkanWindowSwapChainBased( title, width, height, fullscreenMode ), mConnection( 0 ), mScreen( 0 ), mXcbWindow( 0 ), @@ -124,7 +124,7 @@ namespace Ogre //----------------------------------------------------------------------------------- void VulkanXcbWindow::destroy() { - VulkanWindow::destroy(); + VulkanWindowSwapChainBased::destroy(); if( mClosed ) return; @@ -580,7 +580,7 @@ namespace Ogre } else { - VulkanWindow::getCustomAttribute( name, pData ); + VulkanWindowSwapChainBased::getCustomAttribute( name, pData ); } } } // namespace Ogre diff --git a/RenderSystems/Vulkan/src/Windowing/win32/OgreVulkanWin32Window.cpp b/RenderSystems/Vulkan/src/Windowing/win32/OgreVulkanWin32Window.cpp index 0c16a777107..49e6e6e4974 100644 --- a/RenderSystems/Vulkan/src/Windowing/win32/OgreVulkanWin32Window.cpp +++ b/RenderSystems/Vulkan/src/Windowing/win32/OgreVulkanWin32Window.cpp @@ -59,7 +59,7 @@ namespace Ogre VulkanWin32Window::VulkanWin32Window( const String &title, uint32 width, uint32 height, bool fullscreenMode ) : - VulkanWindow( title, width, height, fullscreenMode ), + VulkanWindowSwapChainBased( title, width, height, fullscreenMode ), mHwnd( 0 ), mHDC( 0 ), mColourDepth( 32 ), @@ -134,7 +134,7 @@ namespace Ogre //------------------------------------------------------------------------- void VulkanWin32Window::destroy() { - VulkanWindow::destroy(); + VulkanWindowSwapChainBased::destroy(); if( mClosed ) return; @@ -790,7 +790,7 @@ namespace Ogre } else { - VulkanWindow::getCustomAttribute( name, pData ); + VulkanWindowSwapChainBased::getCustomAttribute( name, pData ); } } } // namespace Ogre