[2.3] Vulkan Progress

Discussion area about developing with Ogre-Next (2.1, 2.2 and beyond)


dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

Thank you, I appreciate the time and effort you put into fixing this, samples now running fine.
rujialiu
Goblin
Posts: 296
Joined: Mon May 09, 2016 8:21 am
x 35

Re: [2.3] Vulkan Progress

Post by rujialiu »

dark_sylinc wrote: Mon Sep 07, 2020 3:52 pm I need to remember to toggle it on when I merge it to master. The properties were getting in the way of 'there is an error in line <X>' while porting GLSL shaders to Vulkan.
I gentle reminder :) Also, there is a typo in SettingUpOgreAndroid.md

Code: Select all

Vulkan 8.0 or newer strongly recommended. Android 7.0 and 7.1 are supported
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

rujialiu wrote: Sun Sep 20, 2020 4:59 pm
dark_sylinc wrote: Mon Sep 07, 2020 3:52 pm I need to remember to toggle it on when I merge it to master. The properties were getting in the way of 'there is an error in line <X>' while porting GLSL shaders to Vulkan.
I gentle reminder :)
Thanks! Fixed.
rujialiu wrote: Sun Sep 20, 2020 4:59 pm Also, there is a typo in SettingUpOgreAndroid.md

Code: Select all

Vulkan 8.0 or newer strongly recommended. Android 7.0 and 7.1 are supported
I had to re-read that 5 times!!! I couldn't see what was wrong with it. I guess I have it too in-grained Vulkan = Android in my mind.
Thanks
rujialiu
Goblin
Posts: 296
Joined: Mon May 09, 2016 8:21 am
x 35

Re: [2.3] Vulkan Progress

Post by rujialiu »

dark_sylinc wrote: Sun Sep 20, 2020 5:10 pm I had to re-read that 5 times!!! I couldn't see what was wrong with it. I guess I have it too in-grained Vulkan = Android in my mind.
Thanks
Haha! Actually I was wondering whether I should be more explicit but later I found the "root" README.md is correct so... 8-)

BTW: I already upgrade my dev machine's Ogre to master, will start using it tomorrow.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

rujialiu wrote: Sun Sep 20, 2020 5:15 pm BTW: I already upgrade my dev machine's Ogre to master, will start using it tomorrow.
The 2.3 preparations ticket has a list of things that have changed that may require a dev's attention when porting from 2.2 to 2.3

This list is updated at irregular intervals; and once 2.3 is out this page is probably going to be moved somewhere else (in fact it is a draft for the News post whenever we release 2.3). But for the time being that ticket is our hub for checking 2.2 -> 2.3 changes.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

Using X11/VulkanXcbWindow the window always starts in full screen window mode, changing the screen resolution and irrespective of any config settings.

Code: Select all

VulkanXcbWindow::createWindow
   ...
        //switchMode( mRequestedWidth, mRequestedHeight, mFrequencyNumerator, mFrequencyDenominator );
   ...
Edit:

Trying to run armeabi-v7a on android device, getting a number of anisotropyEnable validation errors.

Code: Select all

2020-09-19 15:04:22.995 24341-24497/com.ogre3d.V2ManualObject.debug I/OGRE:  _hlmsSamplerblockCreated 
2020-09-19 15:04:22.996 24341-24497/com.ogre3d.V2ManualObject.debug I/OGRE: ERROR: [Validation] Code 0 :  [ VUID-VkSamplerCreateInfo-anisotropyEnable-01070 ] Object: VK_NULL_HANDLE (Type = 0) | vkCreateSampler(): Anisotropic sampling feature is not enabled, pCreateInfo->anisotropyEnable must be VK_FALSE. The Vulkan spec states: If the anisotropic sampling feature is not enabled, anisotropyEnable must be VK_FALSE (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSamplerCreateInfo-anisotropyEnable-01070

Code: Select all

diff --git a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
index 532cd0967..600d2ed89 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
@@ -941,6 +941,8 @@ namespace Ogre
                 float maxAllowedAnisotropy =
                     mActiveDevice->mDeviceProperties.limits.maxSamplerAnisotropy;
                 samplerDescriptor.maxAnisotropy = maxAllowedAnisotropy;
+                samplerDescriptor.anisotropyEnable = (mActiveDevice->mDeviceFeatures.samplerAnisotropy == VK_TRUE) && 
+                                                     (maxAllowedAnisotropy > 0.0f ? VK_TRUE : VK_FALSE);
                 samplerDescriptor.minLod = -std::numeric_limits<float>::max();
                 samplerDescriptor.maxLod = std::numeric_limits<float>::max();
                 VkResult result =
@@ -2857,7 +2859,8 @@ namespace Ogre
         samplerDescriptor.magFilter = VulkanMappings::get( newBlock->mMagFilter );
         samplerDescriptor.mipmapMode = VulkanMappings::getMipFilter( newBlock->mMipFilter );
         samplerDescriptor.mipLodBias = newBlock->mMipLodBias;
-        samplerDescriptor.anisotropyEnable = newBlock->mMaxAnisotropy > 0.0f ? VK_TRUE : VK_FALSE;
+        samplerDescriptor.anisotropyEnable = (mActiveDevice->mDeviceFeatures.samplerAnisotropy == VK_TRUE) && 
+                                                     (newBlock->mMaxAnisotropy > 0.0f ? VK_TRUE : VK_FALSE);
         float maxAllowedAnisotropy = mActiveDevice->mDeviceProperties.limits.maxSamplerAnisotropy;
         samplerDescriptor.maxAnisotropy = newBlock->mMaxAnisotropy > maxAllowedAnisotropy
                                               ? maxAllowedAnisotropy
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

dermont wrote: Mon Sep 21, 2020 5:49 pm Using X11/VulkanXcbWindow the window always starts in full screen window mode, changing the screen resolution and irrespective of any config settings.
Oops. That's a stray line of code when I was testing fullscreen stuff. It shouldn't have been committed.
dermont wrote: Mon Sep 21, 2020 5:49 pm Trying to run armeabi-v7a on android device, getting a number of anisotropyEnable validation errors.

Code: Select all

2020-09-19 15:04:22.995 24341-24497/com.ogre3d.V2ManualObject.debug I/OGRE:  _hlmsSamplerblockCreated 
2020-09-19 15:04:22.996 24341-24497/com.ogre3d.V2ManualObject.debug I/OGRE: ERROR: [Validation] Code 0 :  [ VUID-VkSamplerCreateInfo-anisotropyEnable-01070 ] Object: VK_NULL_HANDLE (Type = 0) | vkCreateSampler(): Anisotropic sampling feature is not enabled, pCreateInfo->anisotropyEnable must be VK_FALSE. The Vulkan spec states: If the anisotropic sampling feature is not enabled, anisotropyEnable must be VK_FALSE (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkSamplerCreateInfo-anisotropyEnable-01070

Code: Select all

diff --git a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
index 532cd0967..600d2ed89 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
@@ -941,6 +941,8 @@ namespace Ogre
                 float maxAllowedAnisotropy =
                     mActiveDevice->mDeviceProperties.limits.maxSamplerAnisotropy;
                 samplerDescriptor.maxAnisotropy = maxAllowedAnisotropy;
+                samplerDescriptor.anisotropyEnable = (mActiveDevice->mDeviceFeatures.samplerAnisotropy == VK_TRUE) && 
+                                                     (maxAllowedAnisotropy > 0.0f ? VK_TRUE : VK_FALSE);
                 samplerDescriptor.minLod = -std::numeric_limits<float>::max();
                 samplerDescriptor.maxLod = std::numeric_limits<float>::max();
                 VkResult result =
@@ -2857,7 +2859,8 @@ namespace Ogre
         samplerDescriptor.magFilter = VulkanMappings::get( newBlock->mMagFilter );
         samplerDescriptor.mipmapMode = VulkanMappings::getMipFilter( newBlock->mMipFilter );
         samplerDescriptor.mipLodBias = newBlock->mMipLodBias;
-        samplerDescriptor.anisotropyEnable = newBlock->mMaxAnisotropy > 0.0f ? VK_TRUE : VK_FALSE;
+        samplerDescriptor.anisotropyEnable = (mActiveDevice->mDeviceFeatures.samplerAnisotropy == VK_TRUE) && 
+                                                     (newBlock->mMaxAnisotropy > 0.0f ? VK_TRUE : VK_FALSE);
         float maxAllowedAnisotropy = mActiveDevice->mDeviceProperties.limits.maxSamplerAnisotropy;
         samplerDescriptor.maxAnisotropy = newBlock->mMaxAnisotropy > maxAllowedAnisotropy
                                               ? maxAllowedAnisotropy
What the actual f---.

*Sigh* ok. If anisotropic filtering is optional, then we'll have to check for it. I swear Android is stuck in 2002 era of desktop GPUs.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

Thanks for both fixes. I'm still on the old v2-2-vulkan branch for testing the armeabi-v7a android build.

I managed to get some of the samples working on the device by updating the creation/deleting of Vk_Samplers to handle the 32 bit uint64_t VK_DEFINE_NON_DISPATCHABLE_HANDLE. Not sure about the code, would love your input/suggestions if I could upload a code diff since I'm sure there are other VK_DEFINE_NON_DISPATCHABLE_HANDLE/ Vk_Samplers cases.

Some samples work fine, others are slow(20FPS) others crash, PbsMaterial crashes after about 4 seconds, terrain seg faults,V2ManualObject shader compiler error but at least it's a start. I can debug the other samples and have SaschaWillems' VulkanCapsViewer/Samples installed on the device to see what should and what won't work on my device.

I'm building Ogre for android with Neon and SIMD enabled.
https://developer.android.com/ndk/guides/abis

Anyway thanks again.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

I ported the changes I made for armeabi-v7a to the master branch. I encountered a problem with in OgreHlmsComputeJob and forgot I added a return to skip the parsing, which would probably explain why some samples were not working.

Code: Select all

SIGBUS: illegal alignment
OgreHlmsComputeJob.cpp Line 236/237
                    if( param.mp.elementType == ShaderParams::ElementFloat &&
                        paramArray[j].IsNumber() )
                    {
                       dataFloat[j] = float(paramArray[j].GetDouble());
                    }
You can ignore the Android Template changes (set up for my own build) and the changes VkSampler probably leaks memory. My phone apparently doesn't support alphaToOne so probably not worth continuing with.

Code: Select all

;
                 param.isDirty       = true;
@@ -233,7 +234,7 @@ namespace Ogre
                     if( param.mp.elementType == ShaderParams::ElementFloat &&
                         paramArray[j].IsNumber() )
                     {
-                       dataFloat[j] = paramArray[j].GetDouble();
+                       dataFloat[j] = float(paramArray[j].GetDouble());
                     }
                     else if( param.mp.elementType == ShaderParams::ElementInt &&
                              paramArray[j].IsInt() )
diff --git a/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h b/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h
index 702d710c4..6baaf37bb 100644
--- a/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h
+++ b/RenderSystems/Vulkan/include/OgreVulkanPrerequisites.h
@@ -38,43 +38,38 @@ THE SOFTWARE.
 #    endif
 #endif
 
-#if defined( __LP64__ ) || defined( _WIN64 ) || ( defined( __x86_64__ ) && !defined( __ILP32__ ) ) || \
-    defined( _M_X64 ) || defined( __ia64 ) || defined( _M_IA64 ) || defined( __aarch64__ ) || \
-    defined( __powerpc64__ )
-#    define OGRE_VK_NON_DISPATCHABLE_HANDLE( object ) typedef struct object##_T *object;
+#if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+    //#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
+
+    #include "vulkan/vulkan_core.h"
 #else
-#    define OGRE_VK_NON_DISPATCHABLE_HANDLE( object ) typedef uint64_t object;
+    typedef struct VkInstance_T *VkInstance;
+    typedef struct VkPhysicalDevice_T *VkPhysicalDevice;
+    typedef struct VkDevice_T *VkDevice;
+    typedef struct VkDeviceMemory_T *VkDeviceMemory;
+    typedef struct VkBuffer_T *VkBuffer;
+    typedef struct VkBufferView_T *VkBufferView;
+
+    typedef struct VkSurfaceKHR_T *VkSurfaceKHR;
+    typedef struct VkSwapchainKHR_T *VkSwapchainKHR;
+    typedef struct VkImage_T *VkImage;
+    typedef struct VkSemaphore_T *VkSemaphore;
+    typedef struct VkFence_T *VkFence;
+
+    typedef struct VkRenderPass_T *VkRenderPass;
+    typedef struct VkFramebuffer_T *VkFramebuffer;
+    typedef struct VkCommandBuffer_T *VkCommandBuffer;
+
+    typedef struct VkShaderModule_T *VkShaderModule;
+    typedef struct VkDescriptorSetLayout_T *VkDescriptorSetLayout;
+
+    typedef struct VkDescriptorPool_T *VkDescriptorPool;
+    typedef struct VkDescriptorSet_T *VkDescriptorSet;
+
+    typedef struct VkPipelineLayout_T *VkPipelineLayout;
+    typedef struct VkPipeline_T *VkPipeline;
 #endif
 
-typedef struct VkInstance_T *VkInstance;
-typedef struct VkPhysicalDevice_T *VkPhysicalDevice;
-typedef struct VkDevice_T *VkDevice;
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkDeviceMemory )
-typedef struct VkCommandBuffer_T *VkCommandBuffer;
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkBuffer )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkBufferView )
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkSurfaceKHR )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkSwapchainKHR )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkImage )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkSemaphore )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkFence )
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkRenderPass )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkFramebuffer )
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkShaderModule )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkDescriptorSetLayout )
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkDescriptorPool )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkDescriptorSet )
-
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkPipelineLayout )
-OGRE_VK_NON_DISPATCHABLE_HANDLE( VkPipeline )
-
-#undef OGRE_VK_NON_DISPATCHABLE_HANDLE
-
 struct VkPipelineShaderStageCreateInfo;
 
 #define OGRE_VULKAN_CONST_SLOT_START 16u
diff --git a/RenderSystems/Vulkan/src/OgreVulkanDescriptorSets.cpp b/RenderSystems/Vulkan/src/OgreVulkanDescriptorSets.cpp
index 3ad778e25..16c3b5723 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanDescriptorSets.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanDescriptorSets.cpp
@@ -54,8 +54,14 @@ namespace Ogre
         {
             const HlmsSamplerblock *samplerblock = *itor;
             VkSampler sampler = dummySampler;
+        #if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+            if( samplerblock )
+                sampler = *(reinterpret_cast<VkSampler*>( samplerblock->mRsData ));
+            
+        #else
             if( samplerblock )
                 sampler = reinterpret_cast<VkSampler>( samplerblock->mRsData );
+        #endif        
             VkDescriptorImageInfo imageInfo;
             imageInfo.sampler = sampler;
             imageInfo.imageView = 0;
diff --git a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
index 63ec920b0..db96aed92 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp
@@ -1533,7 +1533,12 @@ namespace Ogre
         }
         else
         {
+                #if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+            VkSampler textureSampler = *(reinterpret_cast<VkSampler*>( samplerblock->mRsData ));
+        #else
             VkSampler textureSampler = reinterpret_cast<VkSampler>( samplerblock->mRsData );
+        #endif    
+
             if( mGlobalTable.samplers[texUnit].sampler != textureSampler )
             {
                 mGlobalTable.samplers[texUnit].sampler = textureSampler;
@@ -2952,19 +2957,32 @@ namespace Ogre
             samplerDescriptor.compareOp = VulkanMappings::get( newBlock->mCompareFunction );
         }
 
-        VkSampler textureSampler;
-        VkResult result =
-            vkCreateSampler( mActiveDevice->mDevice, &samplerDescriptor, 0, &textureSampler );
-        checkVkResult( result, "vkCreateSampler" );
-
-        newBlock->mRsData = textureSampler;
+        #if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+            VkSampler* textureSampler = new VkSampler;
+            VkResult result =
+                vkCreateSampler( mActiveDevice->mDevice, &samplerDescriptor, 0, textureSampler );
+            checkVkResult( result, "vkCreateSampler" );
+            newBlock->mRsData = (void *)textureSampler;
+        #else
+            VkSampler textureSampler;
+            VkResult result =
+                vkCreateSampler( mActiveDevice->mDevice, &samplerDescriptor, 0, &textureSampler );
+            checkVkResult( result, "vkCreateSampler" );
+            newBlock->mRsData = textureSampler;
+        #endif    
     }
     //-------------------------------------------------------------------------
     void VulkanRenderSystem::_hlmsSamplerblockDestroyed( HlmsSamplerblock *block )
     {
         assert( block->mRsData );
-        VkSampler textureSampler = static_cast<VkSampler>( block->mRsData );
+        #if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+            VkSampler* textureSampler = (VkSampler*)( block->mRsData );
+            delayed_vkDestroySampler( mVaoManager, mActiveDevice->mDevice, *textureSampler, 0 );
+            block->mRsData = 0;
+        #else
+            VkSampler textureSampler = static_cast<VkSampler>( block->mRsData );
         delayed_vkDestroySampler( mVaoManager, mActiveDevice->mDevice, textureSampler, 0 );
+        #endif
     }
     //-------------------------------------------------------------------------
     void VulkanRenderSystem::_descriptorSetTextureCreated( DescriptorSetTexture *newSet )
diff --git a/RenderSystems/Vulkan/src/Vao/OgreVulkanVaoManager.cpp b/RenderSystems/Vulkan/src/Vao/OgreVulkanVaoManager.cpp
index 36538954b..df6bb75dc 100644
--- a/RenderSystems/Vulkan/src/Vao/OgreVulkanVaoManager.cpp
+++ b/RenderSystems/Vulkan/src/Vao/OgreVulkanVaoManager.cpp
@@ -695,10 +695,10 @@ namespace Ogre
                         {
                             // Found one!
                             size_t defaultPoolSize =
-                                std::min( mDefaultPoolSize[vboFlag],
+                                std::min<size_t>( mDefaultPoolSize[vboFlag],
                                           memHeaps[memTypes[*itMemTypeIdx].heapIndex].size -
                                               mUsedHeapMemory[heapIdx] );
-                            poolSize = std::max( defaultPoolSize, sizeBytes );
+                            poolSize = std::max<size_t>( defaultPoolSize, sizeBytes );
                             break;
                         }
                     }
@@ -728,11 +728,11 @@ namespace Ogre
                                 {
                                     // Found one!
                                     size_t defaultPoolSize =
-                                        std::min( mDefaultPoolSize[vboFlag],
+                                        std::min<size_t>( mDefaultPoolSize[vboFlag],
                                                   memHeaps[memTypes[heapIdx].heapIndex].size -
                                                       mUsedHeapMemory[heapIdx] );
                                     chosenMemoryTypeIdx = static_cast<uint32>( i );
-                                    poolSize = std::max( defaultPoolSize, sizeBytes );
+                                    poolSize = std::max<size_t>( defaultPoolSize, sizeBytes );
                                     break;
                                 }
                             }
diff --git a/Samples/2.0/AndroidAppTemplate/GenTemplate.py b/Samples/2.0/AndroidAppTemplate/GenTemplate.py
index 145a57b28..6920af5ee 100644
--- a/Samples/2.0/AndroidAppTemplate/GenTemplate.py
+++ b/Samples/2.0/AndroidAppTemplate/GenTemplate.py
@@ -8,7 +8,7 @@
 import os
 import shutil
 
-ogreBinariesPath = os.path.abspath( '../../../build/Android/' )
+ogreBinariesPath = os.path.abspath( '../../../armeabi-v7a-build' )
 ogreSourcePath = os.path.abspath( '../../../' )
 
 sampleNames = [ \
@@ -83,6 +83,8 @@ for sampleName in sampleNames:
 	dstAssetsPath = './Autogen/' + sampleName + "/app/src/main/assets/"
 	os.makedirs( os.path.dirname( dstAssetsPath ), exist_ok=True )
 	for mediaFolder in mediaFolders:
+	
+		#srcPath = '../../../Samples/Media/' + mediaFolder
 		srcPath = '../../../../../../../../Media/' + mediaFolder
 		dstPath = dstAssetsPath + mediaFolder
 		print( 'Generating symlink from ' + srcPath + ' to ' + dstPath )
@@ -112,4 +114,4 @@ for sampleName in sampleNames:
 			fileData = fileData.replace( '%%ogreBinaries%%', ogreBinariesPath )
 			fileData = fileData.replace( '%%ogreSource%%', ogreSourcePath )
 			dstFile = open( newPath, 'w' )
-			dstFile.write( fileData )
\ No newline at end of file
+			dstFile.write( fileData )
diff --git a/Samples/2.0/AndroidAppTemplate/Template/app/CMakeLists.txt b/Samples/2.0/AndroidAppTemplate/Template/app/CMakeLists.txt
index ab4bb0438..afadfb630 100644
--- a/Samples/2.0/AndroidAppTemplate/Template/app/CMakeLists.txt
+++ b/Samples/2.0/AndroidAppTemplate/Template/app/CMakeLists.txt
@@ -13,14 +13,17 @@ add_library( cpufeatures STATIC ${ANDROID_CPU_FEATURES_DIR}/cpu-features.c )
 set( OGRE_SOURCE %%ogreSource%% )
 set( OGRE_BINARIES %%ogreBinaries%%/${CMAKE_BUILD_TYPE} )
 
+set (OGRE_DEPENDENCIES /media/sdb5/Libraries/OGRE/src/ogre-next-deps/armeabi-v7a-sdk)
+
 include_directories( ${OGRE_SOURCE}/OgreMain/include )
+include_directories( ${OGRE_SOURCE}/OgreMain/include/Math/Array )
 include_directories( ${OGRE_SOURCE}/RenderSystems/Vulkan/include )
 include_directories( ${OGRE_SOURCE}/Components/Overlay/include )
 include_directories( ${OGRE_SOURCE}/Components/Hlms/Common/include )
 include_directories( ${OGRE_SOURCE}/Components/Hlms/Pbs/include )
 include_directories( ${OGRE_SOURCE}/Components/Hlms/Unlit/include )
 include_directories( ${OGRE_BINARIES}/include )
-include_directories( ${OGRE_SOURCE}/DependenciesAndroid/include )
+include_directories( ${OGRE_DEPENDENCIES}/include )
 include_directories( ${OGRE_SOURCE}/Samples/2.0/Common/include )
 
 # build vulkan app
@@ -55,10 +58,10 @@ set( OGRE_LIBS
 	debug ${OGRE_BINARIES}/lib/libRenderSystem_VulkanStatic_d.a
 	debug ${OGRE_BINARIES}/lib/libOgreMainStatic_d.a
 
-	${OGRE_SOURCE}/DependenciesAndroid/lib/libshaderc_combined.a
-	${OGRE_SOURCE}/DependenciesAndroid/lib/libFreeImage.a
-	${OGRE_SOURCE}/DependenciesAndroid/lib/libfreetype.a
-	${OGRE_SOURCE}/DependenciesAndroid/lib/libzlib.a
-	${OGRE_SOURCE}/DependenciesAndroid/lib/libzziplib.a )
+	${OGRE_DEPENDENCIES}/lib/libshaderc_combined.a
+	${OGRE_DEPENDENCIES}/lib/libFreeImage.a
+	${OGRE_DEPENDENCIES}/lib/libfreetype.a
+	${OGRE_DEPENDENCIES}/lib/libzlib.a
+	${OGRE_DEPENDENCIES}/lib/libzziplib.a )
 
 target_link_libraries( %%sampleName%% app-glue log android vulkan ${OGRE_LIBS} cpufeatures )

Edit 30 Sep 2020
--------------------
Update for the OgreHlmsComputeJob double alignment problem, now the Compute and Terrain demos run.

Code: Select all

@@ -194,6 +194,7 @@ namespace Ogre
             }
             else
             {
+                //return;
                 ShaderParams::Param param;
                 param.isAutomatic   = false;
                 param.isDirty       = true;
@@ -223,17 +224,23 @@ namespace Ogre
 
                 param.mp.dataSizeBytes = paramArraySize * 4u;
                 memset( param.mp.dataBytes, 0, param.mp.dataSizeBytes );
-
+                
                 float *dataFloat = reinterpret_cast<float*>( param.mp.dataBytes );
                 int32 *dataInt32 = reinterpret_cast<int32*>( param.mp.dataBytes );
                 uint32 *dataUint32 = reinterpret_cast<uint32*>( param.mp.dataBytes );
 
+
                 for( rapidjson::SizeType j=0; j<paramArraySize; ++j )
                 {
                     if( param.mp.elementType == ShaderParams::ElementFloat &&
                         paramArray[j].IsNumber() )
                     {
-                       dataFloat[j] = paramArray[j].GetDouble();
+                       #if defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
+                       float val = static_cast<float>(paramArray[j].GetDouble());
+                       memcpy(&dataFloat[j], &val, sizeof(float));
+                       #else
+                       dataFloat[j] = static_cast<float>(&paramArray[j].GetDouble());
+                       #endif
                     }
                     else if( param.mp.elementType == ShaderParams::ElementInt &&
                              paramArray[j].IsInt() )
@@ -246,8 +253,9 @@ namespace Ogre
                         dataUint32[j] = paramArray[j].GetUint();
                     }
                 }
-
+                
                 shaderParams.mParams.push_back( param );
+
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

Hi,

Has something changed with the Vulkan Renderer, trying to run after a fresh build all samples freeze and I have to manually kill to get back a functioning desktop.

Ogre.log

Code: Select all

11:55:34: Creating resource group General
11:55:34: Creating resource group Internal
11:55:34: Creating resource group Autodetect
11:55:34: SceneManagerFactory for type 'DefaultSceneManager' registered.
11:55:34: Registering ResourceManager for type Material
11:55:34: Registering ResourceManager for type Mesh
11:55:34: Registering ResourceManager for type Mesh2
11:55:34: Registering ResourceManager for type OldSkeleton
11:55:34: MovableObjectFactory for type 'ParticleSystem' registered.
11:55:34: ArchiveFactory for archive type FileSystem registered.
11:55:34: ArchiveFactory for archive type Zip registered.
11:55:34: ArchiveFactory for archive type EmbeddedZip registered.
11:55:34: DDS codec registering
11:55:34: FreeImage version: 3.18.0
11:55:34: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
11:55:34: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,psb,cut,xbm,xpm,gif,hdr,g3,sgi,rgb,rgba,bw,exr,j2k,j2c,jp2,pfm,pct,pict,pic,3fr,arw,bay,bmq,cap,cine,cr2,crw,cs1,dc2,dcr,drf,dsc,dng,erf,fff,ia,iiq,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,ptx,pxn,qtk,raf,raw,rdc,rw2,rwl,rwz,sr2,srf,srw,sti,x3f,webp,jxr,wdp,hdp
11:55:34: OITD codec registering
11:55:34: Registering ResourceManager for type HighLevelGpuProgram
11:55:34: MovableObjectFactory for type 'Decal' registered.
11:55:34: MovableObjectFactory for type 'InternalCubemapProbe' registered.
11:55:34: MovableObjectFactory for type 'Entity' registered.
11:55:34: MovableObjectFactory for type 'Item' registered.
11:55:34: MovableObjectFactory for type 'Light' registered.
11:55:34: MovableObjectFactory for type 'Rectangle2Dv2' registered.
11:55:34: MovableObjectFactory for type 'BillboardSet' registered.
11:55:34: MovableObjectFactory for type 'ManualObject2' registered.
11:55:34: MovableObjectFactory for type 'BillboardChain' registered.
11:55:34: MovableObjectFactory for type 'RibbonTrail' registered.
11:55:34: MovableObjectFactory for type 'WireAabb' registered.
11:55:34: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_Vulkan_d
11:55:34: Installing plugin: Vulkan RenderSystem
11:55:34: [Vulkan] Initializing VkInstance
11:55:34: Found instance extension: VK_KHR_device_group_creation
11:55:34: Found instance extension: VK_KHR_display
11:55:34: Found instance extension: VK_KHR_external_fence_capabilities
11:55:34: Found instance extension: VK_KHR_external_memory_capabilities
11:55:34: Found instance extension: VK_KHR_external_semaphore_capabilities
11:55:34: Found instance extension: VK_KHR_get_display_properties2
11:55:34: Found instance extension: VK_KHR_get_physical_device_properties2
11:55:34: Found instance extension: VK_KHR_get_surface_capabilities2
11:55:34: Found instance extension: VK_KHR_surface
11:55:34: Found instance extension: VK_KHR_surface_protected_capabilities
11:55:34: Found instance extension: VK_KHR_xcb_surface
11:55:34: Found instance extension: VK_KHR_xlib_surface
11:55:34: Found instance extension: VK_EXT_acquire_xlib_display
11:55:34: Found instance extension: VK_EXT_debug_report
11:55:34: Found instance extension: VK_EXT_debug_utils
11:55:34: Found instance extension: VK_EXT_direct_mode_display
11:55:34: Found instance extension: VK_EXT_display_surface_counter
11:55:34: Found instance layer: VK_LAYER_RENDERDOC_Capture
11:55:34: Found instance layer: VK_LAYER_NV_optimus
11:55:34: Found instance layer: VK_LAYER_LUNARG_api_dump
11:55:34: Found instance layer: VK_LAYER_LUNARG_device_simulation
11:55:34: Found instance layer: VK_LAYER_LUNARG_starter_layer
11:55:34: Found instance layer: VK_LAYER_KHRONOS_validation
11:55:34: Found instance layer: VK_LAYER_LUNARG_screenshot
11:55:34: Found instance layer: VK_LAYER_LUNARG_vktrace
11:55:34: Found instance layer: VK_LAYER_LUNARG_demo_layer
11:55:34: Found instance layer: VK_LAYER_LUNARG_gfxreconstruct
11:55:34: Found instance layer: VK_LAYER_LUNARG_monitor
11:55:34: [Vulkan] Found 1 devices
11:55:34: [Vulkan] Found devices:
11:55:34: GeForce GTX 650 Ti BOOST #0
11:55:34: Plugin successfully installed
11:55:34: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_GL3Plus_d
11:55:34: Installing plugin: GL 3+ RenderSystem
11:55:34: OpenGL 3+ Rendering Subsystem created.
11:55:35: Plugin successfully installed
11:55:35: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/Plugin_ParticleFX_d
11:55:35: Installing plugin: ParticleFX
11:55:35: Particle Emitter Type 'Point' registered
11:55:35: Particle Emitter Type 'Box' registered
11:55:35: Particle Emitter Type 'Ellipsoid' registered
11:55:35: Particle Emitter Type 'Cylinder' registered
11:55:35: Particle Emitter Type 'Ring' registered
11:55:35: Particle Emitter Type 'HollowEllipsoid' registered
11:55:35: Particle Affector Type 'LinearForce' registered
11:55:35: Particle Affector Type 'ColourFader' registered
11:55:35: Particle Affector Type 'ColourFader2' registered
11:55:35: Particle Affector Type 'ColourImage' registered
11:55:35: Particle Affector Type 'ColourInterpolator' registered
11:55:35: Particle Affector Type 'Scaler' registered
11:55:35: Particle Affector Type 'Rotator' registered
11:55:35: Particle Affector Type 'DirectionRandomiser' registered
11:55:35: Particle Affector Type 'DeflectorPlane' registered
11:55:35: Plugin successfully installed
11:55:35: *-*-* OGRE Initialising
11:55:35: *-*-* Version 2.3.0unstable (D)
11:55:39: CPU Identifier & Features
11:55:39: -------------------------
11:55:39:  *   CPU ID: GenuineIntel: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
11:55:39:  *   Logical cores: 8
11:55:39:  *      SSE: yes
11:55:39:  *     SSE2: yes
11:55:39:  *     SSE3: yes
11:55:39:  *      MMX: yes
11:55:39:  *   MMXEXT: yes
11:55:39:  *    3DNOW: no
11:55:39:  * 3DNOWEXT: no
11:55:39:  *     CMOV: yes
11:55:39:  *      TSC: yes
11:55:39:  *      FPU: yes
11:55:39:  *      PRO: yes
11:55:39:  *       HT: no
11:55:39: -------------------------
11:55:39: [Vulkan] Found 1 devices
11:55:39: [Vulkan] Selecting device 0
11:55:39: [Vulkan] API Version: 1.2.133 (0x402085)
11:55:39: [Vulkan] Driver Version (raw): 0x70908000
11:55:39: [Vulkan] Vendor ID: 0x10de
11:55:39: [Vulkan] Device ID: 0x11c2
11:55:39: Registering ResourceManager for type GpuProgram
11:55:39: RenderSystem capabilities
11:55:39: -------------------------
11:55:39: RenderSystem Name: Vulkan Rendering Subsystem
11:55:39: GPU Vendor: nvidia
11:55:39: Device Name: GeForce GTX 650 Ti BOOST
11:55:39: Driver Version: 450.66.0.0
11:55:39:  * Fixed function pipeline: no
11:55:39:  * Hardware generation of mipmaps: yes
11:55:39:  * Texture blending: yes
11:55:39:  * Anisotropic texture filtering: yes
11:55:39:  * Dot product texture operation: yes
11:55:39:  * Cube mapping: yes
11:55:39:  * Hardware stencil buffer: yes
11:55:39:    - Stencil depth: 8
11:55:39:    - Two sided stencil support: yes
11:55:39:    - Wrap stencil values: yes
11:55:39:  * Hardware vertex / index buffers: yes
11:55:39:  * 32-bit index buffers: no
11:55:39:  * Vertex programs: no
11:55:39:  * Number of floating-point constants for vertex programs: 256
11:55:39:  * Number of integer constants for vertex programs: 256
11:55:39:  * Number of boolean constants for vertex programs: 256
11:55:39:  * Fragment programs: no
11:55:39:  * Number of floating-point constants for fragment programs: 256
11:55:39:  * Number of integer constants for fragment programs: 256
11:55:39:  * Number of boolean constants for fragment programs: 256
11:55:39:  * Geometry programs: no
11:55:39:  * Number of floating-point constants for geometry programs: 256
11:55:39:  * Number of integer constants for geometry programs: 256
11:55:39:  * Number of boolean constants for geometry programs: 256
11:55:39:  * Tessellation Hull programs: no
11:55:39:  * Number of floating-point constants for tessellation hull programs: 256
11:55:39:  * Number of integer constants for tessellation hull programs: 256
11:55:39:  * Number of boolean constants for tessellation hull programs: 256
11:55:39:  * Tessellation Domain programs: no
11:55:39:  * Number of floating-point constants for tessellation domain programs: 256
11:55:39:  * Number of integer constants for tessellation domain programs: 256
11:55:39:  * Number of boolean constants for tessellation domain programs: 256
11:55:39:  * Compute programs: yes
11:55:39:  * Number of floating-point constants for compute programs: 256
11:55:39:  * Number of integer constants for compute programs: 256
11:55:39:  * Number of boolean constants for compute programs: 256
11:55:39:  * Supported Shader Profiles: glsl glslvk hlsl hlslvk
11:55:39:  * Texture Compression: yes
11:55:39:    - DXT: yes
11:55:39:    - VTC: no
11:55:39:    - PVRTC: no
11:55:39:    - ATC: no
11:55:39:    - ETC1: no
11:55:39:    - ETC2: no
11:55:39:    - BC4/BC5: yes
11:55:39:    - BC6H/BC7: yes
11:55:39:    - ASTC: no
11:55:39:  * Hardware Occlusion Query: no
11:55:39:  * User clip planes: yes
11:55:39:  * VET_UBYTE4 vertex element type: yes
11:55:39:  * Infinite far plane projection: yes
11:55:39:  * Hardware render-to-texture: yes
11:55:39:  * Floating point textures: yes
11:55:39:  * Non-power-of-two textures: yes
11:55:39:  * 1d textures: yes
11:55:39:  * Volume textures: yes
11:55:39:  * Max Texture resolution (2D) 16384
11:55:39:  * Max Texture resolution (3D) 4096
11:55:39:  * Max Texture resolution (Cubemaps) 16384
11:55:39:  * Multiple Render Targets: 1
11:55:39:    - With different bit depths: no
11:55:39:  * Point Sprites: yes
11:55:39:  * Extended point parameters: yes
11:55:39:  * Max Point Size: 256
11:55:39:  * Vertex texture fetch: no
11:55:39:  * Number of world matrices: 0
11:55:39:  * Number of texture units: 32
11:55:39:  * Stencil buffer depth: 8
11:55:39:  * Number of vertex blend matrices: 0
11:55:39:  * Render to Vertex Buffer : no
11:55:39:  * Hardware Atomic Counters: no
11:55:39:  * Compute max threads per threadgroup per axis: 1536, 1024, 64
11:55:39:  * Compute max threads per threadgroup total: 1536
11:55:39:  * Using Reverse Z: yes
11:55:39: Found device extension: VK_KHR_16bit_storage
11:55:39: Found device extension: VK_KHR_8bit_storage
11:55:39: Found device extension: VK_KHR_bind_memory2
11:55:39: Found device extension: VK_KHR_buffer_device_address
11:55:39: Found device extension: VK_KHR_create_renderpass2
11:55:39: Found device extension: VK_KHR_dedicated_allocation
11:55:39: Found device extension: VK_KHR_depth_stencil_resolve
11:55:39: Found device extension: VK_KHR_descriptor_update_template
11:55:39: Found device extension: VK_KHR_device_group
11:55:39: Found device extension: VK_KHR_draw_indirect_count
11:55:39: Found device extension: VK_KHR_driver_properties
11:55:39: Found device extension: VK_KHR_external_fence
11:55:39: Found device extension: VK_KHR_external_fence_fd
11:55:39: Found device extension: VK_KHR_external_memory
11:55:39: Found device extension: VK_KHR_external_memory_fd
11:55:39: Found device extension: VK_KHR_external_semaphore
11:55:39: Found device extension: VK_KHR_external_semaphore_fd
11:55:39: Found device extension: VK_KHR_get_memory_requirements2
11:55:39: Found device extension: VK_KHR_image_format_list
11:55:39: Found device extension: VK_KHR_imageless_framebuffer
11:55:39: Found device extension: VK_KHR_maintenance1
11:55:39: Found device extension: VK_KHR_maintenance2
11:55:39: Found device extension: VK_KHR_maintenance3
11:55:39: Found device extension: VK_KHR_multiview
11:55:39: Found device extension: VK_KHR_pipeline_executable_properties
11:55:39: Found device extension: VK_KHR_push_descriptor
11:55:39: Found device extension: VK_KHR_relaxed_block_layout
11:55:39: Found device extension: VK_KHR_sampler_mirror_clamp_to_edge
11:55:39: Found device extension: VK_KHR_sampler_ycbcr_conversion
11:55:39: Found device extension: VK_KHR_separate_depth_stencil_layouts
11:55:39: Found device extension: VK_KHR_shader_clock
11:55:39: Found device extension: VK_KHR_shader_draw_parameters
11:55:39: Found device extension: VK_KHR_shader_float16_int8
11:55:39: Found device extension: VK_KHR_shader_float_controls
11:55:39: Found device extension: VK_KHR_shader_non_semantic_info
11:55:39: Found device extension: VK_KHR_shader_subgroup_extended_types
11:55:39: Found device extension: VK_KHR_spirv_1_4
11:55:39: Found device extension: VK_KHR_storage_buffer_storage_class
11:55:39: Found device extension: VK_KHR_swapchain
11:55:39: Found device extension: VK_KHR_swapchain_mutable_format
11:55:39: Found device extension: VK_KHR_timeline_semaphore
11:55:39: Found device extension: VK_KHR_uniform_buffer_standard_layout
11:55:39: Found device extension: VK_KHR_variable_pointers
11:55:39: Found device extension: VK_EXT_buffer_device_address
11:55:39: Found device extension: VK_EXT_calibrated_timestamps
11:55:39: Found device extension: VK_EXT_conditional_rendering
11:55:39: Found device extension: VK_EXT_custom_border_color
11:55:39: Found device extension: VK_EXT_depth_clip_enable
11:55:39: Found device extension: VK_EXT_depth_range_unrestricted
11:55:39: Found device extension: VK_EXT_descriptor_indexing
11:55:39: Found device extension: VK_EXT_discard_rectangles
11:55:39: Found device extension: VK_EXT_display_control
11:55:39: Found device extension: VK_EXT_global_priority
11:55:39: Found device extension: VK_EXT_host_query_reset
11:55:39: Found device extension: VK_EXT_index_type_uint8
11:55:39: Found device extension: VK_EXT_inline_uniform_block
11:55:39: Found device extension: VK_EXT_line_rasterization
11:55:39: Found device extension: VK_EXT_memory_budget
11:55:39: Found device extension: VK_EXT_pci_bus_info
11:55:39: Found device extension: VK_EXT_pipeline_creation_feedback
11:55:39: Found device extension: VK_EXT_scalar_block_layout
11:55:39: Found device extension: VK_EXT_separate_stencil_usage
11:55:39: Found device extension: VK_EXT_shader_demote_to_helper_invocation
11:55:39: Found device extension: VK_EXT_shader_subgroup_ballot
11:55:39: Found device extension: VK_EXT_shader_subgroup_vote
11:55:39: Found device extension: VK_EXT_subgroup_size_control
11:55:39: Found device extension: VK_EXT_texel_buffer_alignment
11:55:39: Found device extension: VK_EXT_tooling_info
11:55:39: Found device extension: VK_EXT_transform_feedback
11:55:39: Found device extension: VK_EXT_vertex_attribute_divisor
11:55:39: Found device extension: VK_EXT_ycbcr_image_arrays
11:55:39: Found device extension: VK_NV_dedicated_allocation
11:55:39: Found device extension: VK_NV_dedicated_allocation_image_aliasing
11:55:39: Found device extension: VK_NV_device_diagnostic_checkpoints
11:55:39: Found device extension: VK_NV_device_diagnostics_config
11:55:39: Found device extension: VK_NV_shader_sm_builtins
11:55:39: Found device extension: VK_NV_shader_subgroup_partitioned
11:55:39: Found device extension: VK_NVX_device_generated_commands
11:55:39: Found device extension: VK_NVX_multiview_per_view_attributes
11:55:39: Supported memory types for general buffer usage: 897
11:55:39: Supported memory types for reading: 897
11:55:39: VkDevice will use coherent memory buffers: true
11:55:39: VkDevice will use non-coherent memory buffers: false
11:55:39: VkDevice will use coherent memory for reading: true
11:55:39: VkDevice read memory is coherent: true
11:55:40: Trying presentMode = IMMEDIATE_KHR
11:55:40: Chosen presentMode = IMMEDIATE_KHR
11:55:40: surfaceCaps.currentTransform = 1
11:55:40: DefaultWorkQueue('Root') initialising on thread main.
11:55:40:  _hlmsMacroblockCreated 
11:55:40:  _hlmsBlendblockCreated 
11:55:40: Particle Renderer Type 'billboard' registered
11:55:40: OverlayElementFactory for type Panel registered.
11:55:40: OverlayElementFactory for type BorderPanel registered.
11:55:40: OverlayElementFactory for type TextArea registered.
11:55:40: Registering ResourceManager for type Font
11:55:40: Creating resource group Essential
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/DebugPack.zip' of type 'Zip' to resource group 'Essential'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/CornellBox.zip' of type 'Zip' to resource group 'Essential'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Any' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSL' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSLES' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/HLSL' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Metal' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Any' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/GLSL' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/HLSL' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Metal' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Algorithms/IBL' of type 'FileSystem' to resource group 'General'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Tools/Any' of type 'FileSystem' to resource group 'General'
11:55:40: Creating resource group Popular
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/Compositors' of type 'FileSystem' to resource group 'Popular'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/models' of type 'FileSystem' to resource group 'Popular'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures' of type 'FileSystem' to resource group 'Popular'
11:55:40: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures/Cubemaps' of type 'FileSystem' to resource group 'Popular'
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: [INFO] Texture cache not found at .//textureMetadataCache.json
11:55:40: Parsing scripts for resource group Autodetect
11:55:40: Finished parsing scripts for resource group Autodetect
11:55:40: Creating resources for group Autodetect
11:55:40: All done
11:55:40: Parsing scripts for resource group Essential
11:55:40: Parsing script Materials.material
11:55:40: Parsing script CornellBox.material.json
11:55:40:  _hlmsMacroblockCreated 
11:55:40: Parsing script DebugFont.fontdef
11:55:40: Finished parsing scripts for resource group Essential
11:55:40: Creating resources for group Essential
11:55:40: All done
11:55:40: Parsing scripts for resource group General
11:55:40: Parsing script Quad.program
11:55:40: Shader Ogre/Compositor/Quad_vs_VK compiled successfully.
11:55:40: Shader Ogre/Compositor/QuadCameraDir_vs_VK compiled successfully.
11:55:40: Shader Ogre/Compositor/QuadCameraDirNoUV_vs_VK compiled successfully.
11:55:40: Parsing script RadialDensityMask.material
11:55:40: Shader Ogre/Compositor/RadialDensityMask_vs_VK compiled successfully.
11:55:40: Shader Ogre/VR/RadialDensityMask_ps_VK compiled successfully.
11:55:40:  _hlmsMacroblockCreated 
11:55:40: Parsing script Copyback.material
11:55:40: Shader Ogre/Copy/4xFP32_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsMacroblockCreated 
11:55:40: Shader Ogre/Copy/4xFP32_2DArray_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Shader Ogre/Copy/1xFP32_ps_VK compiled successfully.
11:55:40: Shader Ogre/Resolve/1xFP32_Subsample0_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script HiddenAreaMeshVr.material
11:55:40: Shader Ogre/VR/HiddenAreaMeshVr_vs_VK compiled successfully.
11:55:40: Shader Ogre/VR/HiddenAreaMeshVr_ps_VK compiled successfully.
11:55:40:  _hlmsMacroblockCreated 
11:55:40:  _hlmsBlendblockCreated 
11:55:40: Parsing script Sky.material
11:55:40: Shader Ogre/Sky/Cubemap_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsMacroblockCreated 
11:55:40: Shader Ogre/Sky/Equirectangular_ps_VK compiled successfully.
11:55:40: OGRE EXCEPTION(5:ItemIdentityException): Parameter called sliceIdx does not exist. Known names are:  in GpuProgramParameters::_findNamedConstantDefinition at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/OgreGpuProgramParams.cpp (line 2226)
11:55:40: Compiler error: invalid parameters in Sky.material(127): setting of constant failed
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script EsmGaussianBlurLogFilter.material
11:55:40: Shader ESM/GaussianLogFilterH_ps_VK compiled successfully.
11:55:40: Shader ESM/GaussianLogFilterV_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script PccDepthCompressor.material
11:55:40: Shader PccDepthCompressor_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsBlendblockCreated 
11:55:40: Parsing script DepthUtils.material
11:55:40: Shader Ogre/Depth/DownscaleMax_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script DPSM.material
11:55:40: Shader Ogre/DPSM/CubeToDpsm_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Shader Ogre/DPSM/CubeToDpsm_Colour_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script DPM.material
11:55:40: Shader Ogre/DPM/CubeToDpm_4xFP16_ps_VK compiled successfully.
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40:  _hlmsMacroblockCreated 
11:55:40: Parsing script EsmGaussianBlurLogFilter.material.json
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Parsing script Mipmaps.material.json
11:55:40: Parsing script IBL.material.json
11:55:40: Finished parsing scripts for resource group General
11:55:40: Creating resources for group General
11:55:40: All done
11:55:40: Parsing scripts for resource group Internal
11:55:40: Finished parsing scripts for resource group Internal
11:55:40: Creating resources for group Internal
11:55:40: All done
11:55:40: Parsing scripts for resource group Popular
11:55:40: Parsing script Tutorial_Terrain.compositor
11:55:40: Parsing script TutorialUav01_Setup.compositor
11:55:40: Parsing script StencilTest.compositor
11:55:40: Parsing script PbsMaterials.compositor
11:55:40: Parsing script TutorialUav02_Setup.compositor
11:55:40: Parsing script StaticShadowMaps.compositor
11:55:40: Parsing script Refractions.compositor
11:55:40: Parsing script StereoRendering.compositor
11:55:40: Parsing script IrradianceFieldRaster.compositor
11:55:40: Parsing script InstancedStereo.compositor
11:55:40: Parsing script UvBaking.compositor
11:55:40: Parsing script PlanarReflections.compositor
11:55:40: Parsing script LocalCubemaps.compositor
11:55:40: Parsing script Tutorial_OpenVRWorkspace.compositor
11:55:40: Parsing script ScreenSpaceReflections.compositor
11:55:40: Parsing script TutorialSky_Postprocess.compositor
11:55:40: Parsing script Tutorial_ReconstructPosFromDepth.compositor
11:55:40: Parsing script Tutorial_DynamicCubemap.compositor
11:55:40: Parsing script ShadowMapDebugging.compositor
11:55:40: Finished parsing scripts for resource group Popular
11:55:40: Creating resources for group Popular
11:55:40: All done
11:55:40: Mesh: Loading athene.mesh.
11:55:40: WARNING: athene.mesh is an older format ([MeshSerializer_v1.8]); you should upgrade it as soon as possible using the OgreMeshTool tool.
11:55:40: Mesh: Loading athene.mesh.
11:55:40: WARNING: athene.mesh is an older format ([MeshSerializer_v1.8]); you should upgrade it as soon as possible using the OgreMeshTool tool.
11:55:40: Can't assign material 1 - Default because this Material does not exist. Have you forgotten to define it in a .material script?
11:55:40: Mesh: Loading Barrel.mesh.
11:55:40: WARNING: Barrel.mesh is an older format ([MeshSerializer_v1.8]); you should upgrade it as soon as possible using the OgreMeshTool tool.
11:55:40: MeshSerializer writing mesh data to stream ...
11:55:40: File header written.
11:55:40: Writing mesh data...
11:55:40: Writing submesh...
11:55:40: Submesh exported.
11:55:40: Exporting bounds information....
11:55:40: Corrupted chunk detected! Stream name: '' Chunk id: 36864
11:55:40: Bounds information exported.
11:55:40: Exporting submesh name table...
11:55:40: Submesh name table exported.
11:55:40: Corrupted chunk detected! Stream name: 
11:55:40: Mesh data exported.
11:55:40: MeshSerializer export successful.
11:55:40: Font DebugFont using texture size 512x512
11:55:40: Info: Freetype returned null for character 127 in font DebugFont
11:55:40: Info: Freetype returned null for character 128 in font DebugFont
11:55:40: Info: Freetype returned null for character 129 in font DebugFont
11:55:40: Info: Freetype returned null for character 130 in font DebugFont
11:55:40: Info: Freetype returned null for character 131 in font DebugFont
11:55:40: Info: Freetype returned null for character 132 in font DebugFont
11:55:40: Info: Freetype returned null for character 133 in font DebugFont
11:55:40: Info: Freetype returned null for character 134 in font DebugFont
11:55:40: Info: Freetype returned null for character 135 in font DebugFont
11:55:40: Info: Freetype returned null for character 136 in font DebugFont
11:55:40: Info: Freetype returned null for character 137 in font DebugFont
11:55:40: Info: Freetype returned null for character 138 in font DebugFont
11:55:40: Info: Freetype returned null for character 139 in font DebugFont
11:55:40: Info: Freetype returned null for character 140 in font DebugFont
11:55:40: Info: Freetype returned null for character 141 in font DebugFont
11:55:40: Info: Freetype returned null for character 142 in font DebugFont
11:55:40: Info: Freetype returned null for character 143 in font DebugFont
11:55:40: Info: Freetype returned null for character 144 in font DebugFont
11:55:40: Info: Freetype returned null for character 145 in font DebugFont
11:55:40: Info: Freetype returned null for character 146 in font DebugFont
11:55:40: Info: Freetype returned null for character 147 in font DebugFont
11:55:40: Info: Freetype returned null for character 148 in font DebugFont
11:55:40: Info: Freetype returned null for character 149 in font DebugFont
11:55:40: Info: Freetype returned null for character 150 in font DebugFont
11:55:40: Info: Freetype returned null for character 151 in font DebugFont
11:55:40: Info: Freetype returned null for character 152 in font DebugFont
11:55:40: Info: Freetype returned null for character 153 in font DebugFont
11:55:40: Info: Freetype returned null for character 154 in font DebugFont
11:55:40: Info: Freetype returned null for character 155 in font DebugFont
11:55:40: Info: Freetype returned null for character 156 in font DebugFont
11:55:40: Info: Freetype returned null for character 157 in font DebugFont
11:55:40: Info: Freetype returned null for character 158 in font DebugFont
11:55:40: Info: Freetype returned null for character 159 in font DebugFont
11:55:40: Info: Freetype returned null for character 160 in font DebugFont
11:55:40:  _hlmsBlendblockCreated 
11:55:40:  _hlmsSamplerblockCreated 
11:55:40: Shader 100000000VertexShader_vs compiled successfully.
11:55:40: Shader 100000000PixelShader_ps compiled successfully.
11:55:40: Shader 300000000VertexShader_vs compiled successfully.
11:55:40: Shader 300000000PixelShader_ps compiled successfully.
11:55:40: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkQueueSubmit-pWaitSemaphores-00069 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; Object 1: handle = 0x557c8d880d90, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xef858864 | VkQueue 0x557c8d880d90[] is waiting on VkSemaphore 0x250000000025[] that has no way to be signaled. The Vulkan spec states: All elements of the pWaitSemaphores member of all elements of pSubmits must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkQueueSubmit-pWaitSemaphores-00069)
If I run a single OpenGL demo (which creates textureMetadataCache.json and hlmsDiskCache*.bin), vulkan demos run OK, see zipped log file.

If I delete textureMetadataCache.json file the same problem as above.

Since it was the only change I could see since I last updated I tried reverting, same problem.
https://github.com/OGRECave/ogre-next/c ... c9a880495c

Thanks.
Attachments
Ogre_SecondRun.log.zip
(5.22 KiB) Downloaded 104 times
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

So if I get this straight, if you run it clean (no caches) it freezes but if you let GL create the caches then run it a 2nd time it runs ok?
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

dark_sylinc wrote: Wed Oct 14, 2020 5:41 am So if I get this straight, if you run it clean (no caches) it freezes but if you let GL create the caches then run it a 2nd time it runs ok?
Yes. This happens for all samples debug and release. I'll check if one of the library dependencies such as sdl has been updated on Ubuntu recently.
https://ibb.co/RgxfR7Q
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

There is a commit where I fixed a semaphore leak in OgreVulkanQueue.cpp
It could've started then.

I wonder if I can repro it. I may not have tried with a clean metadata cache.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

dark_sylinc wrote: Wed Oct 14, 2020 3:00 pm There is a commit where I fixed a semaphore leak in OgreVulkanQueue.cpp
It could've started then.

I wonder if I can repro it. I may not have tried with a clean metadata cache.
Strangely enough the demos built in release mode run fine in gdb, but in debug mode freeze. This is the output from gdb from sample built debug:

Code: Select all

Info: Freetype returned null for character 160 in font DebugFont
 _hlmsBlendblockCreated 
 _hlmsSamplerblockCreated 
Shader 100000002VertexShader_vs compiled successfully.
Shader 100000002PixelShader_ps compiled successfully.
ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkQueueSubmit-pWaitSemaphores-00069 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; Object 1: handle = 0x555555a83dd0, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xef858864 | VkQueue 0x555555a83dd0[] is waiting on VkSemaphore 0x250000000025[] that has no way to be signaled. The Vulkan spec states: All elements of the pWaitSemaphores member of all elements of pSubmits must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkQueueSubmit-pWaitSemaphores-00069)
^Z
Thread 1 "Sample_V2Mesh" received signal SIGTSTP, Stopped (user).
0x00007ffff6c8faff in __GI___poll (fds=0x55555710b300, nfds=1, timeout=10)
    at ../sysdeps/unix/sysv/linux/poll.c:29
29	../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) bt
#0  0x00007ffff6c8faff in __GI___poll (fds=0x55555710b300, nfds=1, timeout=10)
    at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff191fc55 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.450.66
#2  0x00007ffff1cf970b in ?? ()
   from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.450.66
#3  0x00007ffff1d19891 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.450.66
#4  0x00007ffff1d0412a in ?? ()
   from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.450.66
#5  0x00007fffef44130c in DispatchWaitForFences (
    device=device@entry=0x555555ef6b10, fenceCount=fenceCount@entry=1, 
    pFences=pFences@entry=0x555556a49550, waitAll=waitAll@entry=1, 
    timeout=timeout@entry=18446744073709551615)
    at /media/sdb11/VULKAN/VULKANSDK/1.2.141.0/source/Vulkan-ValidationLayers/layers/generated/layer_chassis_dispatch.cpp:1616
#6  0x00007fffef3939b5 in vulkan_layer_chassis::WaitForFences (
    device=0x555555ef6b10, fenceCount=1, pFences=0x555556a49550, waitAll=1, 
    timeout=18446744073709551615)
    at /media/sdb11/VULKAN/VULKANSDK/1.2.141.0/source/Vulkan-ValidationLayers/layers/generated/chassis.cpp:1840
#7  0x00007ffff00799ec in Ogre::VulkanQueue::_waitOnFrame (
    this=0x555555e0b160, frameIdx=1 '\001')
--Type <RET> for more, q to quit, c to continue without paging--
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp:988
#8  0x00007ffff00ce348 in Ogre::VulkanVaoManager::waitForTailFrameToFinish (
    this=0x555555e253d0)
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/Vao/OgreVulkanVaoManager.cpp:1742
#9  0x00007ffff007776f in Ogre::VulkanQueue::newCommandBuffer (
    this=0x555555e0b160)
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp:259
#10 0x00007ffff007a119 in Ogre::VulkanQueue::commitAndNextCommandBuffer (
    this=0x555555e0b160, submissionType=Ogre::SubmissionType::EndFrameAndSwap)
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp:1108
#11 0x00007ffff004ea4d in Ogre::VulkanDevice::commitAndNextCommandBuffer (
    this=0x555555e0b140, submissionType=Ogre::SubmissionType::EndFrameAndSwap)
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/OgreVulkanDevice.cpp:348
#12 0x00007ffff008db5b in Ogre::VulkanRenderSystem::_endFrameOnce (
    this=0x555555841930)
    at /media/sdb5/Libraries/OGRE/src/master/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp:1520
#13 0x00007ffff78e6998 in Ogre::CompositorManager2::_swapAllFinalTargets (
--Type <RET> for more, q to quit, c to continue without paging--
    this=0x555555a8e0f0)
    at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/Compositor/OgreCompositorManager2.cpp:821
#14 0x00007ffff76e3062 in Ogre::Root::_updateAllRenderTargets (
    this=0x55555584ec00)
    at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/OgreRoot.cpp:1547
#15 0x00007ffff76e0ac5 in Ogre::Root::renderOneFrame (this=0x55555584ec00)
    at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/OgreRoot.cpp:1116
#16 0x000055555559f063 in Demo::GraphicsSystem::update (this=0x55555561b070, 
    timeSinceLast=0.00128600001)
    at /media/sdb5/Libraries/OGRE/src/master/Samples/2.0/Common/src/GraphicsSystem.cpp:411
#17 0x00005555555b0290 in Demo::MainEntryPoints::mainAppSingleThreaded (
    argc=1, argv=0x7fffffffd788)
    at /media/sdb5/Libraries/OGRE/src/master/Samples/2.0/Common/src/System/Desktop/MainLoopSingleThreaded.cpp:136
#18 0x000055555559afd3 in mainApp (argc=1, argv=0x7fffffffd788)
    at /media/sdb5/Libraries/OGRE/src/master/Samples/2.0/ApiUsage/V2Mesh/V2Mesh.cpp:16
#19 0x000055555559af06 in main (argc=1, argv=0x7fffffffd788)
    at /media/sdb5/Libraries/OGRE/src/master/Samples/2.0/Common/include/MainEntryPointHelper.h:40
(gdb) kill
Kill the program being debugged? (y or n) y
[Inferior 1 (process 25773) killed]
(gdb) 
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

The suspicious commits are:
I cannot repro but based on what you're saying and assuming there's no old/stale obj in your build (i.e. do a full rebuild just in case?) it suggests this is a race condition and you happen to trigger it.

My guess it has to do with the init process. For example during resize I've noticed the following two paths are possible:
  1. Resize happens outside the render loop, gets detected on the next frame. We recreate the swapchain like two times
  2. Resize during the render loop, gets detected in VulkanWindow::acquireNextSwapchain (mSuboptimal == true), the swapchain gets recreated then; then we get some OS notifications about resizing and the swapchain gets recreated two more times again.
"Fix semaphore leaks when resizing" commit fixed a leak in the 2nd case.
During window creation, there's a lot of OS stuff going on and we get resize notifications hence the swapchain gets (unnecessarily) recreated several times. It's not surprising we got this wrong and in your machine the chain of events causes a deadlock.

In particular it seems the bug is associated with the init process taking too long, which is why you only can repro it in Debug with no caches
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

This is how the semaphores and swapchains are supposed to work:
  1. Swapchain is acquired via vkAcquireNextImageKHR; which will signal a semaphore. This semaphore eventually lands into mGpuWaitSemaphForCurrCmdBuff (via VulkanRenderPassDescriptor::performLoadActions, so that only the first pass to render to the render window must wait on swapchain being released from presentation; eg. rendering to shadow maps can begin while swapchain is still presenting). This is required otherwise we would start rendering while the swapchain is still being presented on screen.
  2. Because the semaphore is in mGpuWaitSemaphForCurrCmdBuff, it will land into submitInfo.pWaitSemaphores in VulkanQueue::commitAndNextCommandBuffer
  3. We also create a new semaphore to indicate when we're done rendering, this is stored into mGpuSignalSemaphForCurrCmdBuff; and will be passed to VulkanWindow::_swapBuffers. This blocks the GPU's presentation engine from presenting the swapchain while we're still rendering to it
  4. Repeat from step 1
In short:
  1. vkAcquireNextImageKHR -> VulkanRenderPassDescriptor::performLoadActions -> mGpuWaitSemaphForCurrCmdBuff
  2. vkQueueSubmit waits on mGpuWaitSemaphForCurrCmdBuff, signals mGpuSignalSemaphForCurrCmdBuff
  3. VulkanWindow::_swapBuffers waits on mGpuSignalSemaphForCurrCmdBuff
  4. Repeat
This process is flawless in theory.

In practice we have submissions where we don't render to screen (thus we don't signal anything and there shouldn't be any window that waits on that work) or possibly presentation where nothing was rendered (I don't think this ever happened? thus we would wait on work that is never signaled? But mPendingCmds should be empty and thus return earlier without calling swapBuffers...). The SubmissionType argument is supposed to handle this.

In practice and in my experience, the bugs so far have happened when something inside VulkanQueue::commitAndNextCommandBuffer ends up calling VulkanQueue::commitAndNextCommandBuffer again; causing this perfect circle to break and be left in an inconsistent state.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

dark_sylinc wrote: Wed Oct 14, 2020 4:46 pm The suspicious commits are:
...
Thanks for your detailed response. I reverted OgreVulkanQueue.cpp back to changeset " [Vulkan] Fix semaphore leaks when resizing [104c7c6]" and the problem goes away.

I think you are correct regarding the init process, problems still exist when using OpenGL/Vulkan without SDL and multi monitors and/or when graphics card is also connected to TV, even when the secondary monitor/TV is disabled. I'll go through the code for change set [612d737] and open up another thread regarding the multi-monitor issues.

Thanks again.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

Ahhh! Thanks!!!

I am now able to repro it based on your data!

Adding an extra call to mVaoManager->_update(); in RenderSystem::_update triggers the error for me too. There is no deadlock for me (probably the GPU driver ignores the semaphore?) but the validation layer complains
dermont wrote: Thu Oct 15, 2020 5:45 am I think you are correct regarding the init process, problems still exist when using OpenGL/Vulkan without SDL and multi monitors and/or when graphics card is also connected to TV, even when the secondary monitor/TV is disabled. I'll go through the code for change set [612d737] and open up another thread regarding the multi-monitor issues.
Sadly I'm aware of them. When not using SDL, multimonitor setup gets messed up in both GL and Vulkan (usually this means all monitors but the primary get turned off). Additionally Vulkan doesn't restore the resolution when the application exists.

The latter problem is easy to fix (just remember old resolution and restore it on exit, like GL does. However this doesn't work if the app crashes before we restore it), the former problem is quite hard (I took a glance at what SDL was doing, and it's messy. X11 has 3 different concepts of a screen, as X11 multi-monitor got added incrementally through the decades)
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

Could you try this patch? (applied on top of latest master)

Code: Select all

diff --git a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
index 10ad4a0d9..669e13de5 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
@@ -1074,6 +1074,7 @@ namespace Ogre
         VkFence fence = mCurrentFence;  // Note: mCurrentFence may be nullptr
 
         vkQueueSubmit( mQueue, 1u, &submitInfo, fence );
+        mGpuWaitSemaphForCurrCmdBuff.clear();
 
         if( mCurrentFence && mCurrentFenceRefCount > 0 )
         {
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

dark_sylinc wrote: Thu Oct 15, 2020 3:29 pm Could you try this patch? (applied on top of latest master)

Code: Select all

diff --git a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
index 10ad4a0d9..669e13de5 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
@@ -1074,6 +1074,7 @@ namespace Ogre
         VkFence fence = mCurrentFence;  // Note: mCurrentFence may be nullptr
 
         vkQueueSubmit( mQueue, 1u, &submitInfo, fence );
+        mGpuWaitSemaphForCurrCmdBuff.clear();
 
         if( mCurrentFence && mCurrentFenceRefCount > 0 )
         {
Thanks, this worked no more deadlock/freeze. However running the demos in debug mode the log shows:

Code: Select all

ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0xa800000000a8, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)


Ogre.log

Code: Select all


23:07:43: OITD codec registering
23:07:43: Registering ResourceManager for type HighLevelGpuProgram
23:07:43: MovableObjectFactory for type 'Decal' registered.
23:07:43: MovableObjectFactory for type 'InternalCubemapProbe' registered.
23:07:43: MovableObjectFactory for type 'Entity' registered.
23:07:43: MovableObjectFactory for type 'Item' registered.
23:07:43: MovableObjectFactory for type 'Light' registered.
23:07:43: MovableObjectFactory for type 'Rectangle2Dv2' registered.
23:07:43: MovableObjectFactory for type 'BillboardSet' registered.
23:07:43: MovableObjectFactory for type 'ManualObject2' registered.
23:07:43: MovableObjectFactory for type 'BillboardChain' registered.
23:07:43: MovableObjectFactory for type 'RibbonTrail' registered.
23:07:43: MovableObjectFactory for type 'WireAabb' registered.
23:07:43: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_Vulkan_d
23:07:43: Installing plugin: Vulkan RenderSystem
23:07:43: [Vulkan] Initializing VkInstance
23:07:43: Found instance extension: VK_KHR_device_group_creation
23:07:43: Found instance extension: VK_KHR_display
23:07:43: Found instance extension: VK_KHR_external_fence_capabilities
23:07:43: Found instance extension: VK_KHR_external_memory_capabilities
23:07:43: Found instance extension: VK_KHR_external_semaphore_capabilities
23:07:43: Found instance extension: VK_KHR_get_display_properties2
23:07:43: Found instance extension: VK_KHR_get_physical_device_properties2
23:07:43: Found instance extension: VK_KHR_get_surface_capabilities2
23:07:43: Found instance extension: VK_KHR_surface
23:07:43: Found instance extension: VK_KHR_surface_protected_capabilities
23:07:43: Found instance extension: VK_KHR_xcb_surface
23:07:43: Found instance extension: VK_KHR_xlib_surface
23:07:43: Found instance extension: VK_EXT_acquire_xlib_display
23:07:43: Found instance extension: VK_EXT_debug_report
23:07:43: Found instance extension: VK_EXT_debug_utils
23:07:43: Found instance extension: VK_EXT_direct_mode_display
23:07:43: Found instance extension: VK_EXT_display_surface_counter
23:07:43: Found instance layer: VK_LAYER_RENDERDOC_Capture
23:07:43: Found instance layer: VK_LAYER_NV_optimus
23:07:43: Found instance layer: VK_LAYER_LUNARG_api_dump
23:07:43: Found instance layer: VK_LAYER_LUNARG_device_simulation
23:07:43: Found instance layer: VK_LAYER_LUNARG_starter_layer
23:07:43: Found instance layer: VK_LAYER_KHRONOS_validation
23:07:43: Found instance layer: VK_LAYER_LUNARG_screenshot
23:07:43: Found instance layer: VK_LAYER_LUNARG_vktrace
23:07:43: Found instance layer: VK_LAYER_LUNARG_demo_layer
23:07:43: Found instance layer: VK_LAYER_LUNARG_gfxreconstruct
23:07:43: Found instance layer: VK_LAYER_LUNARG_monitor
23:07:43: [Vulkan] Found 1 devices
23:07:43: [Vulkan] Found devices:
23:07:43: GeForce GTX 650 Ti BOOST #0
23:07:43: Plugin successfully installed
23:07:43: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_GL3Plus_d
23:07:43: Installing plugin: GL 3+ RenderSystem
23:07:43: OpenGL 3+ Rendering Subsystem created.
23:07:43: Plugin successfully installed
23:07:43: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/Plugin_ParticleFX_d
23:07:43: Installing plugin: ParticleFX
23:07:43: Particle Emitter Type 'Point' registered
23:07:43: Particle Emitter Type 'Box' registered
23:07:43: Particle Emitter Type 'Ellipsoid' registered
23:07:43: Particle Emitter Type 'Cylinder' registered
23:07:43: Particle Emitter Type 'Ring' registered
23:07:43: Particle Emitter Type 'HollowEllipsoid' registered
23:07:43: Particle Affector Type 'LinearForce' registered
23:07:43: Particle Affector Type 'ColourFader' registered
23:07:43: Particle Affector Type 'ColourFader2' registered
23:07:43: Particle Affector Type 'ColourImage' registered
23:07:43: Particle Affector Type 'ColourInterpolator' registered
23:07:43: Particle Affector Type 'Scaler' registered
23:07:43: Particle Affector Type 'Rotator' registered
23:07:43: Particle Affector Type 'DirectionRandomiser' registered
23:07:43: Particle Affector Type 'DeflectorPlane' registered
23:07:43: Plugin successfully installed
23:07:43: *-*-* OGRE Initialising
23:07:43: *-*-* Version 2.3.0unstable (D)
23:07:46: CPU Identifier & Features
23:07:46: -------------------------
23:07:46:  *   CPU ID: GenuineIntel: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
23:07:46:  *   Logical cores: 8
23:07:46:  *      SSE: yes
23:07:46:  *     SSE2: yes
23:07:46:  *     SSE3: yes
23:07:46:  *      MMX: yes
23:07:46:  *   MMXEXT: yes
23:07:46:  *    3DNOW: no
23:07:46:  * 3DNOWEXT: no
23:07:46:  *     CMOV: yes
23:07:46:  *      TSC: yes
23:07:46:  *      FPU: yes
23:07:46:  *      PRO: yes
23:07:46:  *       HT: no
23:07:46: -------------------------
23:07:46: [Vulkan] Found 1 devices
23:07:46: [Vulkan] Selecting device 0
23:07:46: [Vulkan] API Version: 1.2.142 (0x40208e)
23:07:46: [Vulkan] Driver Version (raw): 0x71c70000
23:07:46: [Vulkan] Vendor ID: 0x10de
23:07:46: [Vulkan] Device ID: 0x11c2
23:07:46: Registering ResourceManager for type GpuProgram
23:07:46: RenderSystem capabilities
23:07:46: -------------------------
23:07:46: RenderSystem Name: Vulkan Rendering Subsystem
23:07:46: GPU Vendor: nvidia
23:07:46: Device Name: GeForce GTX 650 Ti BOOST
23:07:46: Driver Version: 455.28.0.0
23:07:46:  * Fixed function pipeline: no
23:07:46:  * Hardware generation of mipmaps: yes
23:07:46:  * Texture blending: yes
23:07:46:  * Anisotropic texture filtering: yes
23:07:46:  * Dot product texture operation: yes
23:07:46:  * Cube mapping: yes
23:07:46:  * Hardware stencil buffer: yes
23:07:46:    - Stencil depth: 8
23:07:46:    - Two sided stencil support: yes
23:07:46:    - Wrap stencil values: yes
23:07:46:  * Hardware vertex / index buffers: yes
23:07:46:  * 32-bit index buffers: no
23:07:46:  * Vertex programs: no
23:07:46:  * Number of floating-point constants for vertex programs: 256
23:07:46:  * Number of integer constants for vertex programs: 256
23:07:46:  * Number of boolean constants for vertex programs: 256
23:07:46:  * Fragment programs: no
23:07:46:  * Number of floating-point constants for fragment programs: 256
23:07:46:  * Number of integer constants for fragment programs: 256
23:07:46:  * Number of boolean constants for fragment programs: 256
23:07:46:  * Geometry programs: no
23:07:46:  * Number of floating-point constants for geometry programs: 256
23:07:46:  * Number of integer constants for geometry programs: 256
23:07:46:  * Number of boolean constants for geometry programs: 256
23:07:46:  * Tessellation Hull programs: no
23:07:46:  * Number of floating-point constants for tessellation hull programs: 256
23:07:46:  * Number of integer constants for tessellation hull programs: 256
23:07:46:  * Number of boolean constants for tessellation hull programs: 256
23:07:46:  * Tessellation Domain programs: no
23:07:46:  * Number of floating-point constants for tessellation domain programs: 256
23:07:46:  * Number of integer constants for tessellation domain programs: 256
23:07:46:  * Number of boolean constants for tessellation domain programs: 256
23:07:46:  * Compute programs: yes
23:07:46:  * Number of floating-point constants for compute programs: 256
23:07:46:  * Number of integer constants for compute programs: 256
23:07:46:  * Number of boolean constants for compute programs: 256
23:07:46:  * Supported Shader Profiles: glsl glslvk hlsl hlslvk
23:07:46:  * Texture Compression: yes
23:07:46:    - DXT: yes
23:07:46:    - VTC: no
23:07:46:    - PVRTC: no
23:07:46:    - ATC: no
23:07:46:    - ETC1: no
23:07:46:    - ETC2: no
23:07:46:    - BC4/BC5: yes
23:07:46:    - BC6H/BC7: yes
23:07:46:    - ASTC: no
23:07:46:  * Hardware Occlusion Query: no
23:07:46:  * User clip planes: yes
23:07:46:  * VET_UBYTE4 vertex element type: yes
23:07:46:  * Infinite far plane projection: yes
23:07:46:  * Hardware render-to-texture: yes
23:07:46:  * Floating point textures: yes
23:07:46:  * Non-power-of-two textures: yes
23:07:46:  * 1d textures: yes
23:07:46:  * Volume textures: yes
23:07:46:  * Max Texture resolution (2D) 16384
23:07:46:  * Max Texture resolution (3D) 4096
23:07:46:  * Max Texture resolution (Cubemaps) 16384
23:07:46:  * Multiple Render Targets: 1
23:07:46:    - With different bit depths: no
23:07:46:  * Point Sprites: yes
23:07:46:  * Extended point parameters: yes
23:07:46:  * Max Point Size: 256
23:07:46:  * Vertex texture fetch: no
23:07:46:  * Number of world matrices: 0
23:07:46:  * Number of texture units: 32
23:07:46:  * Stencil buffer depth: 8
23:07:46:  * Number of vertex blend matrices: 0
23:07:46:  * Render to Vertex Buffer : no
23:07:46:  * Hardware Atomic Counters: no
23:07:46:  * Compute max threads per threadgroup per axis: 1536, 1024, 64
23:07:46:  * Compute max threads per threadgroup total: 1536
23:07:46:  * Using Reverse Z: yes
23:07:46: Found device extension: VK_KHR_16bit_storage
23:07:46: Found device extension: VK_KHR_8bit_storage
23:07:46: Found device extension: VK_KHR_bind_memory2
23:07:46: Found device extension: VK_KHR_buffer_device_address
23:07:46: Found device extension: VK_KHR_create_renderpass2
23:07:46: Found device extension: VK_KHR_dedicated_allocation
23:07:46: Found device extension: VK_KHR_depth_stencil_resolve
23:07:46: Found device extension: VK_KHR_descriptor_update_template
23:07:46: Found device extension: VK_KHR_device_group
23:07:46: Found device extension: VK_KHR_draw_indirect_count
23:07:46: Found device extension: VK_KHR_driver_properties
23:07:46: Found device extension: VK_KHR_external_fence
23:07:46: Found device extension: VK_KHR_external_fence_fd
23:07:46: Found device extension: VK_KHR_external_memory
23:07:46: Found device extension: VK_KHR_external_memory_fd
23:07:46: Found device extension: VK_KHR_external_semaphore
23:07:46: Found device extension: VK_KHR_external_semaphore_fd
23:07:46: Found device extension: VK_KHR_get_memory_requirements2
23:07:46: Found device extension: VK_KHR_image_format_list
23:07:46: Found device extension: VK_KHR_imageless_framebuffer
23:07:46: Found device extension: VK_KHR_maintenance1
23:07:46: Found device extension: VK_KHR_maintenance2
23:07:46: Found device extension: VK_KHR_maintenance3
23:07:46: Found device extension: VK_KHR_multiview
23:07:46: Found device extension: VK_KHR_pipeline_executable_properties
23:07:46: Found device extension: VK_KHR_push_descriptor
23:07:46: Found device extension: VK_KHR_relaxed_block_layout
23:07:46: Found device extension: VK_KHR_sampler_mirror_clamp_to_edge
23:07:46: Found device extension: VK_KHR_sampler_ycbcr_conversion
23:07:46: Found device extension: VK_KHR_separate_depth_stencil_layouts
23:07:46: Found device extension: VK_KHR_shader_clock
23:07:46: Found device extension: VK_KHR_shader_draw_parameters
23:07:46: Found device extension: VK_KHR_shader_float16_int8
23:07:46: Found device extension: VK_KHR_shader_float_controls
23:07:46: Found device extension: VK_KHR_shader_non_semantic_info
23:07:46: Found device extension: VK_KHR_shader_subgroup_extended_types
23:07:46: Found device extension: VK_KHR_spirv_1_4
23:07:46: Found device extension: VK_KHR_storage_buffer_storage_class
23:07:46: Found device extension: VK_KHR_swapchain
23:07:46: Found device extension: VK_KHR_swapchain_mutable_format
23:07:46: Found device extension: VK_KHR_timeline_semaphore
23:07:46: Found device extension: VK_KHR_uniform_buffer_standard_layout
23:07:46: Found device extension: VK_KHR_variable_pointers
23:07:46: Found device extension: VK_EXT_buffer_device_address
23:07:46: Found device extension: VK_EXT_calibrated_timestamps
23:07:46: Found device extension: VK_EXT_conditional_rendering
23:07:46: Found device extension: VK_EXT_custom_border_color
23:07:46: Found device extension: VK_EXT_depth_clip_enable
23:07:46: Found device extension: VK_EXT_depth_range_unrestricted
23:07:46: Found device extension: VK_EXT_descriptor_indexing
23:07:46: Found device extension: VK_EXT_discard_rectangles
23:07:46: Found device extension: VK_EXT_display_control
23:07:46: Found device extension: VK_EXT_external_memory_host
23:07:46: Found device extension: VK_EXT_global_priority
23:07:46: Found device extension: VK_EXT_host_query_reset
23:07:46: Found device extension: VK_EXT_index_type_uint8
23:07:46: Found device extension: VK_EXT_inline_uniform_block
23:07:46: Found device extension: VK_EXT_line_rasterization
23:07:46: Found device extension: VK_EXT_memory_budget
23:07:46: Found device extension: VK_EXT_pci_bus_info
23:07:46: Found device extension: VK_EXT_pipeline_creation_cache_control
23:07:46: Found device extension: VK_EXT_pipeline_creation_feedback
23:07:46: Found device extension: VK_EXT_private_data
23:07:46: Found device extension: VK_EXT_robustness2
23:07:46: Found device extension: VK_EXT_scalar_block_layout
23:07:46: Found device extension: VK_EXT_separate_stencil_usage
23:07:46: Found device extension: VK_EXT_shader_demote_to_helper_invocation
23:07:46: Found device extension: VK_EXT_shader_subgroup_ballot
23:07:46: Found device extension: VK_EXT_shader_subgroup_vote
23:07:46: Found device extension: VK_EXT_subgroup_size_control
23:07:46: Found device extension: VK_EXT_texel_buffer_alignment
23:07:46: Found device extension: VK_EXT_tooling_info
23:07:46: Found device extension: VK_EXT_transform_feedback
23:07:46: Found device extension: VK_EXT_vertex_attribute_divisor
23:07:46: Found device extension: VK_EXT_ycbcr_image_arrays
23:07:46: Found device extension: VK_NV_dedicated_allocation
23:07:46: Found device extension: VK_NV_dedicated_allocation_image_aliasing
23:07:46: Found device extension: VK_NV_device_diagnostic_checkpoints
23:07:46: Found device extension: VK_NV_device_diagnostics_config
23:07:46: Found device extension: VK_NV_device_generated_commands
23:07:46: Found device extension: VK_NV_shader_sm_builtins
23:07:46: Found device extension: VK_NV_shader_subgroup_partitioned
23:07:46: Found device extension: VK_NVX_multiview_per_view_attributes
23:07:46: Supported memory types for general buffer usage: 897
23:07:46: Supported memory types for reading: 897
23:07:46: VkDevice will use coherent memory buffers: true
23:07:46: VkDevice will use non-coherent memory buffers: false
23:07:46: VkDevice will use coherent memory for reading: true
23:07:46: VkDevice read memory is coherent: true
23:07:46: Trying presentMode = IMMEDIATE_KHR
23:07:46: Chosen presentMode = IMMEDIATE_KHR
23:07:46: surfaceCaps.currentTransform = 1
23:07:46: DefaultWorkQueue('Root') initialising on thread main.
23:07:46:  _hlmsMacroblockCreated 
23:07:46:  _hlmsBlendblockCreated 
23:07:46: Particle Renderer Type 'billboard' registered
23:07:46: OverlayElementFactory for type Panel registered.
23:07:46: OverlayElementFactory for type BorderPanel registered.
23:07:46: OverlayElementFactory for type TextArea registered.
23:07:46: Registering ResourceManager for type Font
23:07:46: Creating resource group Essential
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/DebugPack.zip' of type 'Zip' to resource group 'Essential'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/CornellBox.zip' of type 'Zip' to resource group 'Essential'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Any' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSLES' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/HLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Metal' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Any' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/GLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/HLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Metal' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Algorithms/IBL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Tools/Any' of type 'FileSystem' to resource group 'General'
23:07:46: Creating resource group Popular
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/Compositors' of type 'FileSystem' to resource group 'Popular'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/models' of type 'FileSystem' to resource group 'Popular'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures' of type 'FileSystem' to resource group 'Popular'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures/Cubemaps' of type 'FileSystem' to resource group 'Popular'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/PbsMaterials' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/LocalCubemaps/' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/LocalCubemaps/GLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/LocalCubemaps/HLSL' of type 'FileSystem' to resource group 'General'
23:07:46: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/LocalCubemaps/Metal' of type 'FileSystem' to resource group 'General'
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Loading HlmsDiskCache from hlmsDiskCache1.bin
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Applying HlmsDiskCache 1
23:07:46: Shader 100000000VertexShader_vs compiled successfully.
23:07:46: Shader 100000000PixelShader_ps compiled successfully.
23:07:46: Loading HlmsDiskCache from hlmsDiskCache3.bin
23:07:46:  _hlmsMacroblockCreated 
23:07:46:  _hlmsBlendblockCreated 
23:07:46: Applying HlmsDiskCache 3
23:07:46: Shader 300000000VertexShader_vs compiled successfully.
23:07:46: Shader 300000000PixelShader_ps compiled successfully.
23:07:46: Parsing scripts for resource group Autodetect
23:07:46: Finished parsing scripts for resource group Autodetect
23:07:46: Creating resources for group Autodetect
23:07:46: All done
23:07:46: Parsing scripts for resource group Essential
23:07:46: Parsing script Materials.material
23:07:46: Parsing script CornellBox.material.json
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Parsing script DebugFont.fontdef
23:07:46: Finished parsing scripts for resource group Essential
23:07:46: Creating resources for group Essential
23:07:46: All done
23:07:46: Parsing scripts for resource group General
23:07:46: Parsing script Quad.program
23:07:46: Shader Ogre/Compositor/Quad_vs_VK compiled successfully.
23:07:46: Shader Ogre/Compositor/QuadCameraDir_vs_VK compiled successfully.
23:07:46: Shader Ogre/Compositor/QuadCameraDirNoUV_vs_VK compiled successfully.
23:07:46: Parsing script RadialDensityMask.material
23:07:46: Shader Ogre/Compositor/RadialDensityMask_vs_VK compiled successfully.
23:07:46: Shader Ogre/VR/RadialDensityMask_ps_VK compiled successfully.
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Parsing script Copyback.material
23:07:46: Shader Ogre/Copy/4xFP32_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Shader Ogre/Copy/4xFP32_2DArray_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Shader Ogre/Copy/1xFP32_ps_VK compiled successfully.
23:07:46: Shader Ogre/Resolve/1xFP32_Subsample0_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script HiddenAreaMeshVr.material
23:07:46: Shader Ogre/VR/HiddenAreaMeshVr_vs_VK compiled successfully.
23:07:46: Shader Ogre/VR/HiddenAreaMeshVr_ps_VK compiled successfully.
23:07:46:  _hlmsMacroblockCreated 
23:07:46:  _hlmsBlendblockCreated 
23:07:46: Parsing script Sky.material
23:07:46: Shader Ogre/Sky/Cubemap_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Shader Ogre/Sky/Equirectangular_ps_VK compiled successfully.
23:07:46: OGRE EXCEPTION(5:ItemIdentityException): Parameter called sliceIdx does not exist. Known names are:  in GpuProgramParameters::_findNamedConstantDefinition at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/OgreGpuProgramParams.cpp (line 2226)
23:07:46: Compiler error: invalid parameters in Sky.material(127): setting of constant failed
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script EsmGaussianBlurLogFilter.material
23:07:46: Shader ESM/GaussianLogFilterH_ps_VK compiled successfully.
23:07:46: Shader ESM/GaussianLogFilterV_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script PccDepthCompressor.material
23:07:46: Shader PccDepthCompressor_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsBlendblockCreated 
23:07:46: Parsing script DepthUtils.material
23:07:46: Shader Ogre/Depth/DownscaleMax_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script DPSM.material
23:07:46: Shader Ogre/DPSM/CubeToDpsm_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Shader Ogre/DPSM/CubeToDpsm_Colour_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script DPM.material
23:07:46: Shader Ogre/DPM/CubeToDpm_4xFP16_ps_VK compiled successfully.
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsSamplerblockCreated 
23:07:46:  _hlmsMacroblockCreated 
23:07:46: Parsing script PbsMaterials.material
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script CopyCubemap.material
23:07:46: Shader Cubemap/CopyCubemap_PX_ps_VK compiled successfully.
23:07:46: Shader Cubemap/CopyCubemap_NX_ps_VK compiled successfully.
23:07:46: Shader Cubemap/CopyCubemap_PY_ps_VK compiled successfully.
23:07:46: Shader Cubemap/CopyCubemap_NY_ps_VK compiled successfully.
23:07:46: Shader Cubemap/CopyCubemap_PZ_ps_VK compiled successfully.
23:07:46: Shader Cubemap/CopyCubemap_NZ_ps_VK compiled successfully.
23:07:46: Parsing script BlendProjectCubemap.material
23:07:46: Shader Cubemap/BlendProjectCubemap_vs_VK compiled successfully.
23:07:46: Shader Cubemap/BlendProjectCubemap_ps_VK compiled successfully.
23:07:46:  _hlmsMacroblockCreated 
23:07:46:  _hlmsBlendblockCreated 
23:07:46: Parsing script EsmGaussianBlurLogFilter.material.json
23:07:46:  _hlmsSamplerblockCreated 
23:07:46: Parsing script Mipmaps.material.json
23:07:46: Parsing script IBL.material.json
23:07:46: Finished parsing scripts for resource group General
23:07:46: Creating resources for group General
23:07:46: All done
23:07:46: Parsing scripts for resource group Internal
23:07:46: Finished parsing scripts for resource group Internal
23:07:46: Creating resources for group Internal
23:07:46: All done
23:07:46: Parsing scripts for resource group Popular
23:07:46: Parsing script Tutorial_Terrain.compositor
23:07:46: Parsing script TutorialUav01_Setup.compositor
23:07:46: Parsing script StencilTest.compositor
23:07:46: Parsing script PbsMaterials.compositor
23:07:46: Parsing script TutorialUav02_Setup.compositor
23:07:46: Parsing script StaticShadowMaps.compositor
23:07:46: Parsing script Refractions.compositor
23:07:46: Parsing script StereoRendering.compositor
23:07:46: Parsing script IrradianceFieldRaster.compositor
23:07:46: Parsing script InstancedStereo.compositor
23:07:46: Parsing script UvBaking.compositor
23:07:46: Parsing script PlanarReflections.compositor
23:07:46: Parsing script LocalCubemaps.compositor
23:07:46: Parsing script Tutorial_OpenVRWorkspace.compositor
23:07:46: Parsing script ScreenSpaceReflections.compositor
23:07:46: Parsing script TutorialSky_Postprocess.compositor
23:07:46: Parsing script Tutorial_ReconstructPosFromDepth.compositor
23:07:46: Parsing script Tutorial_DynamicCubemap.compositor
23:07:46: Parsing script ShadowMapDebugging.compositor
23:07:46: Finished parsing scripts for resource group Popular
23:07:46: Creating resources for group Popular
23:07:46: All done
23:07:46: Mesh: Loading Sphere1000.mesh.
23:07:46: WARNING: Sphere1000.mesh is an older format ([MeshSerializer_v2.1 R1]); you should upgrade it as soon as possible using the OgreMeshTool tool.
23:07:46: Mesh: Loading Cube_d.mesh.
23:07:46: WARNING: Cube_d.mesh is an older format ([MeshSerializer_v2.1 R1]); you should upgrade it as soon as possible using the OgreMeshTool tool.
23:07:55:  _hlmsSamplerblockCreated 
23:07:56: Shader 100000001VertexShader_vs compiled successfully.
23:07:56:  _hlmsMacroblockCreated 
23:07:56: Shader 100000002VertexShader_vs compiled successfully.
23:07:56: Shader 100000003VertexShader_vs compiled successfully.
23:07:56: Shader 100000003PixelShader_ps compiled successfully.
23:07:56: Shader 100000004VertexShader_vs compiled successfully.
23:07:56: Shader 100000004PixelShader_ps compiled successfully.
23:07:56: Shader 100000005VertexShader_vs compiled successfully.
23:07:56: Shader 100000005PixelShader_ps compiled successfully.
23:07:58: Shader 100000006VertexShader_vs compiled successfully.
23:07:58: Shader 100000006PixelShader_ps compiled successfully.
23:07:58: Shader 100000007VertexShader_vs compiled successfully.
23:07:59: Shader 100000007PixelShader_ps compiled successfully.
23:07:59: Shader 100000008VertexShader_vs compiled successfully.
23:07:59: Shader 100000008PixelShader_ps compiled successfully.
23:07:59: Shader 100000009VertexShader_vs compiled successfully.
23:07:59: Shader 100000009PixelShader_ps compiled successfully.
23:07:59: Font DebugFont using texture size 512x512
23:07:59: Info: Freetype returned null for character 127 in font DebugFont
23:07:59: Info: Freetype returned null for character 128 in font DebugFont
23:07:59: Info: Freetype returned null for character 129 in font DebugFont
23:07:59: Info: Freetype returned null for character 130 in font DebugFont
23:07:59: Info: Freetype returned null for character 131 in font DebugFont
23:07:59: Info: Freetype returned null for character 132 in font DebugFont
23:07:59: Info: Freetype returned null for character 133 in font DebugFont
23:07:59: Info: Freetype returned null for character 134 in font DebugFont
23:07:59: Info: Freetype returned null for character 135 in font DebugFont
23:07:59: Info: Freetype returned null for character 136 in font DebugFont
23:07:59: Info: Freetype returned null for character 137 in font DebugFont
23:07:59: Info: Freetype returned null for character 138 in font DebugFont
23:07:59: Info: Freetype returned null for character 139 in font DebugFont
23:07:59: Info: Freetype returned null for character 140 in font DebugFont
23:07:59: Info: Freetype returned null for character 141 in font DebugFont
23:07:59: Info: Freetype returned null for character 142 in font DebugFont
23:07:59: Info: Freetype returned null for character 143 in font DebugFont
23:07:59: Info: Freetype returned null for character 144 in font DebugFont
23:07:59: Info: Freetype returned null for character 145 in font DebugFont
23:07:59: Info: Freetype returned null for character 146 in font DebugFont
23:07:59: Info: Freetype returned null for character 147 in font DebugFont
23:07:59: Info: Freetype returned null for character 148 in font DebugFont
23:07:59: Info: Freetype returned null for character 149 in font DebugFont
23:07:59: Info: Freetype returned null for character 150 in font DebugFont
23:07:59: Info: Freetype returned null for character 151 in font DebugFont
23:07:59: Info: Freetype returned null for character 152 in font DebugFont
23:07:59: Info: Freetype returned null for character 153 in font DebugFont
23:07:59: Info: Freetype returned null for character 154 in font DebugFont
23:07:59: Info: Freetype returned null for character 155 in font DebugFont
23:07:59: Info: Freetype returned null for character 156 in font DebugFont
23:07:59: Info: Freetype returned null for character 157 in font DebugFont
23:07:59: Info: Freetype returned null for character 158 in font DebugFont
23:07:59: Info: Freetype returned null for character 159 in font DebugFont
23:07:59: Info: Freetype returned null for character 160 in font DebugFont
23:07:59:  _hlmsBlendblockCreated 
23:08:00: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:00: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x50e000000050e, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:01: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x4f700000004f7, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:01: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:02: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x5020000000502, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:02: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x4f700000004f7, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:03: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x5020000000502, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:03: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x4f700000004f7, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:04: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x5020000000502, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:04: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x4f700000004f7, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:06: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x50e000000050e, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:06: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x5020000000502, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:07: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:07: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x50e000000050e, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:08: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:08: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x50e000000050e, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:09: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:09: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x50e000000050e, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:10: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x4f700000004f7, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:11: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; | MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. The Vulkan spec states: If semaphore is not VK_NULL_HANDLE it must be unsignaled (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)
23:08:11: Saving HlmsDiskCache to hlmsDiskCache1.bin
23:08:11: Saving HlmsDiskCache to hlmsDiskCache3.bin
23:08:11: Unregistering ResourceManager for type Font
23:08:11: DefaultWorkQueue('Root') shutting down on thread main.
23:08:11: *-*-* OGRE Shutdown
23:08:11: Unregistering ResourceManager for type OldSkeleton
23:08:11: Unregistering ResourceManager for type Mesh2
23:08:11: Unregistering ResourceManager for type Mesh
23:08:11: Unregistering ResourceManager for type Material
23:08:11: Unregistering ResourceManager for type HighLevelGpuProgram
23:08:11: Uninstalling plugin: ParticleFX
23:08:11: Plugin successfully uninstalled
23:08:11: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/Plugin_ParticleFX_d
23:08:11: Uninstalling plugin: GL 3+ RenderSystem
23:08:11: ******************************
*** Stopping GLX Subsystem ***
******************************
23:08:11: Plugin successfully uninstalled
23:08:11: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_GL3Plus_d
23:08:11: Uninstalling plugin: Vulkan RenderSystem
23:08:11: Unregistering ResourceManager for type GpuProgram
23:08:11: WARNING: Deleting mapped buffer without having it unmapped. This is often sign of a resource leak or a bad pattern. Umapping the buffer for you...
23:08:11: Plugin successfully uninstalled
23:08:11: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_Vulkan_d
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

I added lots of log statements to compare the output of the samples run with and without the cache, for comparison, the main difference was the additonal commitAndNextCommandBuffer waiting for textures to finish streaming, based on that I tried your fix as follows and no more Validation Errors:

Code: Select all

        if (submissionType == SubmissionType::NewFrameIdx)
            mGpuWaitSemaphForCurrCmdBuff.clear();

Code: Select all

****************************************************************************************
HERE   
****************************************************************************************

17:24:31: ############################################################################ 
17:24:31: commitAndNextCommandBuffer START   
17:24:31: ############################################################################ 
17:24:31: [VkSubmitInfo] START 
17:24:31: [VkSubmitInfo] END 
17:24:31: [endCommandBuffer] START 
17:24:31: [endCommandBuffer] END 
17:24:31: [if submissionType >= SubmissionType::NewFrameIdx resetAllBindings] START 
17:24:31: if [submissionType >= SubmissionType::NewFrameIdx resetAllBindings] END 
17:24:31: [if mPendingCmds.empty()] START 
17:24:31: [if [mPendingCmds.empty()] END 
17:24:31: [windowsSemaphStart] 0
17:24:31: [mGpuSignalSemaphForCurrCmdBuff.size()] 0

                                                 ####################################################################### 
                                                 /// It's like forcing the end of a frame without swapping windows, e.g.
                                                 /// when waiting for textures to finish streaming. 
17:24:31: [submissionType] 1   ## NewFrameIdx    ####################################################################### 
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx )] START: 
17:24:31: [if( submissionType >= SubmissionType::EndFrameAndSwap ) START] 
17:24:31: [if( submissionType >= SubmissionType::EndFrameAndSwap ) END] 
17:24:31: [if( !mGpuWaitSemaphForCurrCmdBuff.empty() ) START] 
17:24:31: !mGpuWaitSemaphForCurrCmdBuff.empty(): 
17:24:31:    mGpuWaitSemaphForCurrCmdBuff.size()  1
17:24:31: [if( !mGpuWaitSemaphForCurrCmdBuff.empty() ) END] 
17:24:31: [if( !mGpuSignalSemaphForCurrCmdBuff.empty() ) START] 
17:24:31: [if( !mGpuSignalSemaphForCurrCmdBuff.empty() ) END] 
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx ) START] 
17:24:31: [getCurrentFence] Begin 
17:24:31: current Fence is Null 
17:24:31: [getCurrentFence] End 
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx ) END] 
17:24:31: // clang-format off
17:24:31:   [mGpuWaitSemaphForCurrCmdBuff.size()]  1
17:24:31: [waitForTailFrameToFinish] Start
17:24:31: VulkanVaoManager::waitForTailFrameToFinish
17:24:31: mDynamicBufferCurrentFrame 0
17:24:31: VulkanQueue::_waitOnFrame
17:24:31: Fences Size 0
17:24:31: [waitForTailFrameToFinish] End
17:24:31: [VkFence fence = mCurrentFence]
17:24:31: mCurrentFence is NOT NULL
17:24:31: [QueueSubmit] Start
17:24:31: [QueueSubmit] End
17:24:31: [if mCurrentFence && mCurrentFenceRefCount > 0] START
17:24:31: [if mCurrentFence && mCurrentFenceRefCount > 0] END
17:24:31: [if (fence)]
17:24:31: fence is NOT NULL
17:24:31: [mPendingCmds.clear] START
17:24:31: [mPendingCmds.clear] END
17:24:31: submissionType >= SubmissionType::NewFrameIdx START
17:24:31: submissionType >= SubmissionType::NewFrameIdx END
17:24:31: [newCommandBuffer ] START
17:24:31: [newCommandBuffer] START
17:24:31: VulkanVaoManager::waitForTailFrameToFinish
17:24:31: mDynamicBufferCurrentFrame 1
17:24:31: VulkanQueue::_waitOnFrame
17:24:31: Fences Size 0
17:24:31: [currFrame] 1
17:24:31: [currFrame] end 
17:24:31: [VkCommandBufferBeginInfo] start 
17:24:31: [newCommandBuffer] END
17:24:31: [newCommandBuffer ] START
17:24:31: ############################################################################ 
17:24:31: commitAndNextCommandBuffer END 
17:24:31: ############################################################################ 
17:24:31: ############################################################################ 
17:24:31: commitAndNextCommandBuffer START 
17:24:31: ############################################################################ 
17:24:31: [VkSubmitInfo] START 
17:24:31: [VkSubmitInfo] END 
17:24:31: [endCommandBuffer] START 
17:24:31: [endCommandBuffer] END 
17:24:31: [if submissionType >= SubmissionType::NewFrameIdx resetAllBindings] START 
17:24:31: if [submissionType >= SubmissionType::NewFrameIdx resetAllBindings] END 
17:24:31: [if mPendingCmds.empty()] START 
17:24:31: [if [mPendingCmds.empty()] END 
17:24:31: [windowsSemaphStart] 0
17:24:31: [mGpuSignalSemaphForCurrCmdBuff.size()] 0
                           ############################################################################ 
17:24:31: [submissionType] ## EndFrameAndSwap 2
                           ############################################################################   
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx )] START: 
17:24:31: [if( submissionType >= SubmissionType::EndFrameAndSwap ) START] 
17:24:31:    numWindowsPendingSwap 1
17:24:31: [if( submissionType >= SubmissionType::EndFrameAndSwap ) END] 
17:24:31: [if( !mGpuWaitSemaphForCurrCmdBuff.empty() ) START] 
17:24:31: !mGpuWaitSemaphForCurrCmdBuff.empty(): 
17:24:31:    mGpuWaitSemaphForCurrCmdBuff.size()  1
17:24:31: [if( !mGpuWaitSemaphForCurrCmdBuff.empty() ) END] 
17:24:31: [if( !mGpuSignalSemaphForCurrCmdBuff.empty() ) START] 
17:24:31: !mGpuSignalSemaphForCurrCmdBuff.empty(): 
17:24:31:    mGpuWaitSemaphForCurrCmdBuff.size()  1
17:24:31: [if( !mGpuSignalSemaphForCurrCmdBuff.empty() ) END] 
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx ) START] 
17:24:31: [getCurrentFence] Begin 
17:24:31: current Fence is Null 
17:24:31: [getCurrentFence] End 
17:24:31: [if( submissionType >= SubmissionType::NewFrameIdx ) END] 
17:24:31: // clang-format off
17:24:31:   [mGpuWaitSemaphForCurrCmdBuff.size()]  1
17:24:31: [waitForTailFrameToFinish] Start
17:24:31: VulkanVaoManager::waitForTailFrameToFinish
17:24:31: mDynamicBufferCurrentFrame 1
17:24:31: VulkanQueue::_waitOnFrame
17:24:31: Fences Size 0
17:24:31: [waitForTailFrameToFinish] End
17:24:31: [VkFence fence = mCurrentFence]
17:24:31: mCurrentFence is NOT NULL
17:24:31: [QueueSubmit] Start
17:24:31: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkQueueSubmit-pWaitSemaphores-00069 ] Object 0: handle = 0x250000000025, type = VK_OBJECT_TYPE_SEMAPHORE; Object 1: handle = 0x55e43d36ae08, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xef858864 | VkQueue 0x55e43d36ae08[] is waiting on VkSemaphore 0x250000000025[] that has no way to be signaled. The Vulkan spec states: All elements of the pWaitSemaphores member of all elements of pSubmits must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution (https://vulkan.lunarg.com/doc/view/1.2.141.0/linux/1.2-extensions/vkspec.html#VUID-vkQueueSubmit-pWaitSemaphores-00069)
17:24:31: [QueueSubmit] End
17:24:31: [if mCurrentFence && mCurrentFenceRefCount > 0] START
17:24:31: [if mCurrentFence && mCurrentFenceRefCount > 0] END
17:24:31: [if (fence)]
17:24:31: fence is NOT NULL
17:24:31: [mPendingCmds.clear] START
17:24:31: [mPendingCmds.clear] END
17:24:31: submissionType >= SubmissionType::EndFrameAndSwap START
17:24:31: submissionType >= SubmissionType::EndFrameAndSwap END
17:24:31: submissionType >= SubmissionType::NewFrameIdx START
17:24:31: submissionType >= SubmissionType::NewFrameIdx END
17:24:31: [newCommandBuffer ] START
17:24:31: [newCommandBuffer] START
17:24:31: VulkanVaoManager::waitForTailFrameToFinish
17:24:31: mDynamicBufferCurrentFrame 2
17:24:31: VulkanQueue::_waitOnFrame
17:24:31: Fences Size 0
17:24:31: [currFrame] 2
17:24:31: [currFrame] end 
17:24:31: [VkCommandBufferBeginInfo] start 
17:24:31: [newCommandBuffer] END
17:24:31: [newCommandBuffer ] START
17:24:31: submissionType >= SubmissionType::EndFrameAndSwap START
17:24:31: submissionType >= SubmissionType::EndFrameAndSwap END
17:24:31: ==========================================
17:24:31: commitAndNextCommandBuffer END 
17:24:31: ==========================================

Ogre.log after update:

Code: Select all

23:33:27: Creating resource group General
23:33:27: Creating resource group Internal
23:33:27: Creating resource group Autodetect
23:33:27: SceneManagerFactory for type 'DefaultSceneManager' registered.
23:33:27: Registering ResourceManager for type Material
23:33:27: Registering ResourceManager for type Mesh
23:33:27: Registering ResourceManager for type Mesh2
23:33:27: Registering ResourceManager for type OldSkeleton
23:33:27: MovableObjectFactory for type 'ParticleSystem' registered.
23:33:27: ArchiveFactory for archive type FileSystem registered.
23:33:27: ArchiveFactory for archive type Zip registered.
23:33:27: ArchiveFactory for archive type EmbeddedZip registered.
23:33:27: DDS codec registering
23:33:27: FreeImage version: 3.18.0
23:33:27: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
23:33:27: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,psb,cut,xbm,xpm,gif,hdr,g3,sgi,rgb,rgba,bw,exr,j2k,j2c,jp2,pfm,pct,pict,pic,3fr,arw,bay,bmq,cap,cine,cr2,crw,cs1,dc2,dcr,drf,dsc,dng,erf,fff,ia,iiq,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,ptx,pxn,qtk,raf,raw,rdc,rw2,rwl,rwz,sr2,srf,srw,sti,x3f,webp,jxr,wdp,hdp
23:33:27: OITD codec registering
23:33:27: Registering ResourceManager for type HighLevelGpuProgram
23:33:27: MovableObjectFactory for type 'Decal' registered.
23:33:27: MovableObjectFactory for type 'InternalCubemapProbe' registered.
23:33:27: MovableObjectFactory for type 'Entity' registered.
23:33:27: MovableObjectFactory for type 'Item' registered.
23:33:27: MovableObjectFactory for type 'Light' registered.
23:33:27: MovableObjectFactory for type 'Rectangle2Dv2' registered.
23:33:27: MovableObjectFactory for type 'BillboardSet' registered.
23:33:27: MovableObjectFactory for type 'ManualObject2' registered.
23:33:27: MovableObjectFactory for type 'BillboardChain' registered.
23:33:27: MovableObjectFactory for type 'RibbonTrail' registered.
23:33:27: MovableObjectFactory for type 'WireAabb' registered.
23:33:27: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_Vulkan_d
23:33:27: Installing plugin: Vulkan RenderSystem
23:33:27: [Vulkan] Initializing VkInstance
23:33:27: Found instance extension: VK_KHR_device_group_creation
23:33:27: Found instance extension: VK_KHR_display
23:33:27: Found instance extension: VK_KHR_external_fence_capabilities
23:33:27: Found instance extension: VK_KHR_external_memory_capabilities
23:33:27: Found instance extension: VK_KHR_external_semaphore_capabilities
23:33:27: Found instance extension: VK_KHR_get_display_properties2
23:33:27: Found instance extension: VK_KHR_get_physical_device_properties2
23:33:27: Found instance extension: VK_KHR_get_surface_capabilities2
23:33:27: Found instance extension: VK_KHR_surface
23:33:27: Found instance extension: VK_KHR_surface_protected_capabilities
23:33:27: Found instance extension: VK_KHR_xcb_surface
23:33:27: Found instance extension: VK_KHR_xlib_surface
23:33:27: Found instance extension: VK_EXT_acquire_xlib_display
23:33:27: Found instance extension: VK_EXT_debug_report
23:33:27: Found instance extension: VK_EXT_debug_utils
23:33:27: Found instance extension: VK_EXT_direct_mode_display
23:33:27: Found instance extension: VK_EXT_display_surface_counter
23:33:27: Found instance layer: VK_LAYER_RENDERDOC_Capture
23:33:27: Found instance layer: VK_LAYER_NV_optimus
23:33:27: Found instance layer: VK_LAYER_LUNARG_api_dump
23:33:27: Found instance layer: VK_LAYER_LUNARG_device_simulation
23:33:27: Found instance layer: VK_LAYER_LUNARG_starter_layer
23:33:27: Found instance layer: VK_LAYER_KHRONOS_validation
23:33:27: Found instance layer: VK_LAYER_LUNARG_screenshot
23:33:27: Found instance layer: VK_LAYER_LUNARG_vktrace
23:33:27: Found instance layer: VK_LAYER_LUNARG_demo_layer
23:33:27: Found instance layer: VK_LAYER_LUNARG_gfxreconstruct
23:33:27: Found instance layer: VK_LAYER_LUNARG_monitor
23:33:27: [Vulkan] Found 1 devices
23:33:27: [Vulkan] Found devices:
23:33:27: GeForce GTX 650 Ti BOOST #0
23:33:27: Plugin successfully installed
23:33:27: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_GL3Plus_d
23:33:27: Installing plugin: GL 3+ RenderSystem
23:33:27: OpenGL 3+ Rendering Subsystem created.
23:33:28: Plugin successfully installed
23:33:28: Loading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/Plugin_ParticleFX_d
23:33:28: Installing plugin: ParticleFX
23:33:28: Particle Emitter Type 'Point' registered
23:33:28: Particle Emitter Type 'Box' registered
23:33:28: Particle Emitter Type 'Ellipsoid' registered
23:33:28: Particle Emitter Type 'Cylinder' registered
23:33:28: Particle Emitter Type 'Ring' registered
23:33:28: Particle Emitter Type 'HollowEllipsoid' registered
23:33:28: Particle Affector Type 'LinearForce' registered
23:33:28: Particle Affector Type 'ColourFader' registered
23:33:28: Particle Affector Type 'ColourFader2' registered
23:33:28: Particle Affector Type 'ColourImage' registered
23:33:28: Particle Affector Type 'ColourInterpolator' registered
23:33:28: Particle Affector Type 'Scaler' registered
23:33:28: Particle Affector Type 'Rotator' registered
23:33:28: Particle Affector Type 'DirectionRandomiser' registered
23:33:28: Particle Affector Type 'DeflectorPlane' registered
23:33:28: Plugin successfully installed
23:33:28: *-*-* OGRE Initialising
23:33:28: *-*-* Version 2.3.0unstable (D)
23:33:30: CPU Identifier & Features
23:33:30: -------------------------
23:33:30:  *   CPU ID: GenuineIntel: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
23:33:30:  *   Logical cores: 8
23:33:30:  *      SSE: yes
23:33:30:  *     SSE2: yes
23:33:30:  *     SSE3: yes
23:33:30:  *      MMX: yes
23:33:30:  *   MMXEXT: yes
23:33:30:  *    3DNOW: no
23:33:30:  * 3DNOWEXT: no
23:33:30:  *     CMOV: yes
23:33:30:  *      TSC: yes
23:33:30:  *      FPU: yes
23:33:30:  *      PRO: yes
23:33:30:  *       HT: no
23:33:30: -------------------------
23:33:30: [Vulkan] Found 1 devices
23:33:30: [Vulkan] Selecting device 0
23:33:30: [Vulkan] API Version: 1.2.142 (0x40208e)
23:33:30: [Vulkan] Driver Version (raw): 0x71c70000
23:33:30: [Vulkan] Vendor ID: 0x10de
23:33:30: [Vulkan] Device ID: 0x11c2
23:33:30: Registering ResourceManager for type GpuProgram
23:33:30: RenderSystem capabilities
23:33:30: -------------------------
23:33:30: RenderSystem Name: Vulkan Rendering Subsystem
23:33:30: GPU Vendor: nvidia
23:33:30: Device Name: GeForce GTX 650 Ti BOOST
23:33:30: Driver Version: 455.28.0.0
23:33:30:  * Fixed function pipeline: no
23:33:30:  * Hardware generation of mipmaps: yes
23:33:30:  * Texture blending: yes
23:33:30:  * Anisotropic texture filtering: yes
23:33:30:  * Dot product texture operation: yes
23:33:30:  * Cube mapping: yes
23:33:30:  * Hardware stencil buffer: yes
23:33:30:    - Stencil depth: 8
23:33:30:    - Two sided stencil support: yes
23:33:30:    - Wrap stencil values: yes
23:33:30:  * Hardware vertex / index buffers: yes
23:33:30:  * 32-bit index buffers: no
23:33:30:  * Vertex programs: no
23:33:30:  * Number of floating-point constants for vertex programs: 256
23:33:30:  * Number of integer constants for vertex programs: 256
23:33:30:  * Number of boolean constants for vertex programs: 256
23:33:30:  * Fragment programs: no
23:33:30:  * Number of floating-point constants for fragment programs: 256
23:33:30:  * Number of integer constants for fragment programs: 256
23:33:30:  * Number of boolean constants for fragment programs: 256
23:33:30:  * Geometry programs: no
23:33:30:  * Number of floating-point constants for geometry programs: 256
23:33:30:  * Number of integer constants for geometry programs: 256
23:33:30:  * Number of boolean constants for geometry programs: 256
23:33:30:  * Tessellation Hull programs: no
23:33:30:  * Number of floating-point constants for tessellation hull programs: 256
23:33:30:  * Number of integer constants for tessellation hull programs: 256
23:33:30:  * Number of boolean constants for tessellation hull programs: 256
23:33:30:  * Tessellation Domain programs: no
23:33:30:  * Number of floating-point constants for tessellation domain programs: 256
23:33:30:  * Number of integer constants for tessellation domain programs: 256
23:33:30:  * Number of boolean constants for tessellation domain programs: 256
23:33:30:  * Compute programs: yes
23:33:30:  * Number of floating-point constants for compute programs: 256
23:33:30:  * Number of integer constants for compute programs: 256
23:33:30:  * Number of boolean constants for compute programs: 256
23:33:30:  * Supported Shader Profiles: glsl glslvk hlsl hlslvk
23:33:30:  * Texture Compression: yes
23:33:30:    - DXT: yes
23:33:30:    - VTC: no
23:33:30:    - PVRTC: no
23:33:30:    - ATC: no
23:33:30:    - ETC1: no
23:33:30:    - ETC2: no
23:33:30:    - BC4/BC5: yes
23:33:30:    - BC6H/BC7: yes
23:33:30:    - ASTC: no
23:33:30:  * Hardware Occlusion Query: no
23:33:30:  * User clip planes: yes
23:33:30:  * VET_UBYTE4 vertex element type: yes
23:33:30:  * Infinite far plane projection: yes
23:33:30:  * Hardware render-to-texture: yes
23:33:30:  * Floating point textures: yes
23:33:30:  * Non-power-of-two textures: yes
23:33:30:  * 1d textures: yes
23:33:30:  * Volume textures: yes
23:33:30:  * Max Texture resolution (2D) 16384
23:33:30:  * Max Texture resolution (3D) 4096
23:33:30:  * Max Texture resolution (Cubemaps) 16384
23:33:30:  * Multiple Render Targets: 1
23:33:30:    - With different bit depths: no
23:33:30:  * Point Sprites: yes
23:33:30:  * Extended point parameters: yes
23:33:30:  * Max Point Size: 256
23:33:30:  * Vertex texture fetch: no
23:33:30:  * Number of world matrices: 0
23:33:30:  * Number of texture units: 32
23:33:30:  * Stencil buffer depth: 8
23:33:30:  * Number of vertex blend matrices: 0
23:33:30:  * Render to Vertex Buffer : no
23:33:30:  * Hardware Atomic Counters: no
23:33:30:  * Compute max threads per threadgroup per axis: 1536, 1024, 64
23:33:30:  * Compute max threads per threadgroup total: 1536
23:33:30:  * Using Reverse Z: yes
23:33:30: Found device extension: VK_KHR_16bit_storage
23:33:30: Found device extension: VK_KHR_8bit_storage
23:33:30: Found device extension: VK_KHR_bind_memory2
23:33:30: Found device extension: VK_KHR_buffer_device_address
23:33:30: Found device extension: VK_KHR_create_renderpass2
23:33:30: Found device extension: VK_KHR_dedicated_allocation
23:33:30: Found device extension: VK_KHR_depth_stencil_resolve
23:33:30: Found device extension: VK_KHR_descriptor_update_template
23:33:30: Found device extension: VK_KHR_device_group
23:33:30: Found device extension: VK_KHR_draw_indirect_count
23:33:30: Found device extension: VK_KHR_driver_properties
23:33:30: Found device extension: VK_KHR_external_fence
23:33:30: Found device extension: VK_KHR_external_fence_fd
23:33:30: Found device extension: VK_KHR_external_memory
23:33:30: Found device extension: VK_KHR_external_memory_fd
23:33:30: Found device extension: VK_KHR_external_semaphore
23:33:30: Found device extension: VK_KHR_external_semaphore_fd
23:33:30: Found device extension: VK_KHR_get_memory_requirements2
23:33:30: Found device extension: VK_KHR_image_format_list
23:33:30: Found device extension: VK_KHR_imageless_framebuffer
23:33:30: Found device extension: VK_KHR_maintenance1
23:33:30: Found device extension: VK_KHR_maintenance2
23:33:30: Found device extension: VK_KHR_maintenance3
23:33:30: Found device extension: VK_KHR_multiview
23:33:30: Found device extension: VK_KHR_pipeline_executable_properties
23:33:30: Found device extension: VK_KHR_push_descriptor
23:33:30: Found device extension: VK_KHR_relaxed_block_layout
23:33:30: Found device extension: VK_KHR_sampler_mirror_clamp_to_edge
23:33:30: Found device extension: VK_KHR_sampler_ycbcr_conversion
23:33:30: Found device extension: VK_KHR_separate_depth_stencil_layouts
23:33:30: Found device extension: VK_KHR_shader_clock
23:33:30: Found device extension: VK_KHR_shader_draw_parameters
23:33:30: Found device extension: VK_KHR_shader_float16_int8
23:33:30: Found device extension: VK_KHR_shader_float_controls
23:33:30: Found device extension: VK_KHR_shader_non_semantic_info
23:33:30: Found device extension: VK_KHR_shader_subgroup_extended_types
23:33:30: Found device extension: VK_KHR_spirv_1_4
23:33:30: Found device extension: VK_KHR_storage_buffer_storage_class
23:33:30: Found device extension: VK_KHR_swapchain
23:33:30: Found device extension: VK_KHR_swapchain_mutable_format
23:33:30: Found device extension: VK_KHR_timeline_semaphore
23:33:30: Found device extension: VK_KHR_uniform_buffer_standard_layout
23:33:30: Found device extension: VK_KHR_variable_pointers
23:33:30: Found device extension: VK_EXT_buffer_device_address
23:33:30: Found device extension: VK_EXT_calibrated_timestamps
23:33:30: Found device extension: VK_EXT_conditional_rendering
23:33:30: Found device extension: VK_EXT_custom_border_color
23:33:30: Found device extension: VK_EXT_depth_clip_enable
23:33:30: Found device extension: VK_EXT_depth_range_unrestricted
23:33:30: Found device extension: VK_EXT_descriptor_indexing
23:33:30: Found device extension: VK_EXT_discard_rectangles
23:33:30: Found device extension: VK_EXT_display_control
23:33:30: Found device extension: VK_EXT_external_memory_host
23:33:30: Found device extension: VK_EXT_global_priority
23:33:30: Found device extension: VK_EXT_host_query_reset
23:33:30: Found device extension: VK_EXT_index_type_uint8
23:33:30: Found device extension: VK_EXT_inline_uniform_block
23:33:30: Found device extension: VK_EXT_line_rasterization
23:33:30: Found device extension: VK_EXT_memory_budget
23:33:30: Found device extension: VK_EXT_pci_bus_info
23:33:30: Found device extension: VK_EXT_pipeline_creation_cache_control
23:33:30: Found device extension: VK_EXT_pipeline_creation_feedback
23:33:30: Found device extension: VK_EXT_private_data
23:33:30: Found device extension: VK_EXT_robustness2
23:33:30: Found device extension: VK_EXT_scalar_block_layout
23:33:30: Found device extension: VK_EXT_separate_stencil_usage
23:33:30: Found device extension: VK_EXT_shader_demote_to_helper_invocation
23:33:30: Found device extension: VK_EXT_shader_subgroup_ballot
23:33:30: Found device extension: VK_EXT_shader_subgroup_vote
23:33:30: Found device extension: VK_EXT_subgroup_size_control
23:33:30: Found device extension: VK_EXT_texel_buffer_alignment
23:33:30: Found device extension: VK_EXT_tooling_info
23:33:30: Found device extension: VK_EXT_transform_feedback
23:33:30: Found device extension: VK_EXT_vertex_attribute_divisor
23:33:30: Found device extension: VK_EXT_ycbcr_image_arrays
23:33:30: Found device extension: VK_NV_dedicated_allocation
23:33:30: Found device extension: VK_NV_dedicated_allocation_image_aliasing
23:33:30: Found device extension: VK_NV_device_diagnostic_checkpoints
23:33:30: Found device extension: VK_NV_device_diagnostics_config
23:33:30: Found device extension: VK_NV_device_generated_commands
23:33:30: Found device extension: VK_NV_shader_sm_builtins
23:33:30: Found device extension: VK_NV_shader_subgroup_partitioned
23:33:30: Found device extension: VK_NVX_multiview_per_view_attributes
23:33:30: Supported memory types for general buffer usage: 897
23:33:30: Supported memory types for reading: 897
23:33:30: VkDevice will use coherent memory buffers: true
23:33:30: VkDevice will use non-coherent memory buffers: false
23:33:30: VkDevice will use coherent memory for reading: true
23:33:30: VkDevice read memory is coherent: true
23:33:30: Trying presentMode = IMMEDIATE_KHR
23:33:30: Chosen presentMode = IMMEDIATE_KHR
23:33:30: surfaceCaps.currentTransform = 1
23:33:31: DefaultWorkQueue('Root') initialising on thread main.
23:33:31:  _hlmsMacroblockCreated 
23:33:31:  _hlmsBlendblockCreated 
23:33:31: Particle Renderer Type 'billboard' registered
23:33:31: OverlayElementFactory for type Panel registered.
23:33:31: OverlayElementFactory for type BorderPanel registered.
23:33:31: OverlayElementFactory for type TextArea registered.
23:33:31: Registering ResourceManager for type Font
23:33:31: Creating resource group Essential
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/DebugPack.zip' of type 'Zip' to resource group 'Essential'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/packs/CornellBox.zip' of type 'Zip' to resource group 'Essential'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Any' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSL' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/GLSLES' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/HLSL' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/Common/Metal' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Any' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/GLSL' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/HLSL' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Hlms/Common/Metal' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Algorithms/IBL' of type 'FileSystem' to resource group 'General'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/Compute/Tools/Any' of type 'FileSystem' to resource group 'General'
23:33:31: Creating resource group Popular
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/Compositors' of type 'FileSystem' to resource group 'Popular'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/models' of type 'FileSystem' to resource group 'Popular'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures' of type 'FileSystem' to resource group 'Popular'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/materials/textures/Cubemaps' of type 'FileSystem' to resource group 'Popular'
23:33:31: Added resource location '/media/sdb5/Libraries/OGRE/src/master/Samples/Media/2.0/scripts/materials/TutorialSky_Postprocess' of type 'FileSystem' to resource group 'General'
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: [INFO] Texture cache not found at .//textureMetadataCache.json
23:33:31: Parsing scripts for resource group Autodetect
23:33:31: Finished parsing scripts for resource group Autodetect
23:33:31: Creating resources for group Autodetect
23:33:31: All done
23:33:31: Parsing scripts for resource group Essential
23:33:31: Parsing script Materials.material
23:33:31: Parsing script CornellBox.material.json
23:33:31:  _hlmsMacroblockCreated 
23:33:31: Parsing script DebugFont.fontdef
23:33:31: Finished parsing scripts for resource group Essential
23:33:31: Creating resources for group Essential
23:33:31: All done
23:33:31: Parsing scripts for resource group General
23:33:31: Parsing script Quad.program
23:33:31: Shader Ogre/Compositor/Quad_vs_VK compiled successfully.
23:33:31: Shader Ogre/Compositor/QuadCameraDir_vs_VK compiled successfully.
23:33:31: Shader Ogre/Compositor/QuadCameraDirNoUV_vs_VK compiled successfully.
23:33:31: Parsing script RadialDensityMask.material
23:33:31: Shader Ogre/Compositor/RadialDensityMask_vs_VK compiled successfully.
23:33:31: Shader Ogre/VR/RadialDensityMask_ps_VK compiled successfully.
23:33:31:  _hlmsMacroblockCreated 
23:33:31: Parsing script Copyback.material
23:33:31: Shader Ogre/Copy/4xFP32_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsMacroblockCreated 
23:33:31: Shader Ogre/Copy/4xFP32_2DArray_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Shader Ogre/Copy/1xFP32_ps_VK compiled successfully.
23:33:31: Shader Ogre/Resolve/1xFP32_Subsample0_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script HiddenAreaMeshVr.material
23:33:31: Shader Ogre/VR/HiddenAreaMeshVr_vs_VK compiled successfully.
23:33:31: Shader Ogre/VR/HiddenAreaMeshVr_ps_VK compiled successfully.
23:33:31:  _hlmsMacroblockCreated 
23:33:31:  _hlmsBlendblockCreated 
23:33:31: Parsing script Sky.material
23:33:31: Shader Ogre/Sky/Cubemap_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsMacroblockCreated 
23:33:31: Shader Ogre/Sky/Equirectangular_ps_VK compiled successfully.
23:33:31: OGRE EXCEPTION(5:ItemIdentityException): Parameter called sliceIdx does not exist. Known names are:  in GpuProgramParameters::_findNamedConstantDefinition at /media/sdb5/Libraries/OGRE/src/master/OgreMain/src/OgreGpuProgramParams.cpp (line 2226)
23:33:31: Compiler error: invalid parameters in Sky.material(127): setting of constant failed
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script EsmGaussianBlurLogFilter.material
23:33:31: Shader ESM/GaussianLogFilterH_ps_VK compiled successfully.
23:33:31: Shader ESM/GaussianLogFilterV_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script PccDepthCompressor.material
23:33:31: Shader PccDepthCompressor_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsBlendblockCreated 
23:33:31: Parsing script DepthUtils.material
23:33:31: Shader Ogre/Depth/DownscaleMax_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script DPSM.material
23:33:31: Shader Ogre/DPSM/CubeToDpsm_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Shader Ogre/DPSM/CubeToDpsm_Colour_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script DPM.material
23:33:31: Shader Ogre/DPM/CubeToDpm_4xFP16_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31:  _hlmsMacroblockCreated 
23:33:31: Parsing script SkyPostprocess.material
23:33:31: Shader SkyPostprocess_vs_VK compiled successfully.
23:33:31: Shader SkyPostprocess_ps_VK compiled successfully.
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script EsmGaussianBlurLogFilter.material.json
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Parsing script Mipmaps.material.json
23:33:31: Parsing script IBL.material.json
23:33:31: Finished parsing scripts for resource group General
23:33:31: Creating resources for group General
23:33:31: All done
23:33:31: Parsing scripts for resource group Internal
23:33:31: Finished parsing scripts for resource group Internal
23:33:31: Creating resources for group Internal
23:33:31: All done
23:33:31: Parsing scripts for resource group Popular
23:33:31: Parsing script Tutorial_Terrain.compositor
23:33:31: Parsing script TutorialUav01_Setup.compositor
23:33:31: Parsing script StencilTest.compositor
23:33:31: Parsing script PbsMaterials.compositor
23:33:31: Parsing script TutorialUav02_Setup.compositor
23:33:31: Parsing script StaticShadowMaps.compositor
23:33:31: Parsing script Refractions.compositor
23:33:31: Parsing script StereoRendering.compositor
23:33:31: Parsing script IrradianceFieldRaster.compositor
23:33:31: Parsing script InstancedStereo.compositor
23:33:31: Parsing script UvBaking.compositor
23:33:31: Parsing script PlanarReflections.compositor
23:33:31: Parsing script LocalCubemaps.compositor
23:33:31: Parsing script Tutorial_OpenVRWorkspace.compositor
23:33:31: Parsing script ScreenSpaceReflections.compositor
23:33:31: Parsing script TutorialSky_Postprocess.compositor
23:33:31: Parsing script Tutorial_ReconstructPosFromDepth.compositor
23:33:31: Parsing script Tutorial_DynamicCubemap.compositor
23:33:31: Parsing script ShadowMapDebugging.compositor
23:33:31: Finished parsing scripts for resource group Popular
23:33:31: Creating resources for group Popular
23:33:31: All done
23:33:31: Mesh: Loading Cube_d.mesh.
23:33:31: WARNING: Cube_d.mesh is an older format ([MeshSerializer_v2.1 R1]); you should upgrade it as soon as possible using the OgreMeshTool tool.
23:33:31: Font DebugFont using texture size 512x512
23:33:31: Info: Freetype returned null for character 127 in font DebugFont
23:33:31: Info: Freetype returned null for character 128 in font DebugFont
23:33:31: Info: Freetype returned null for character 129 in font DebugFont
23:33:31: Info: Freetype returned null for character 130 in font DebugFont
23:33:31: Info: Freetype returned null for character 131 in font DebugFont
23:33:31: Info: Freetype returned null for character 132 in font DebugFont
23:33:31: Info: Freetype returned null for character 133 in font DebugFont
23:33:31: Info: Freetype returned null for character 134 in font DebugFont
23:33:31: Info: Freetype returned null for character 135 in font DebugFont
23:33:31: Info: Freetype returned null for character 136 in font DebugFont
23:33:31: Info: Freetype returned null for character 137 in font DebugFont
23:33:31: Info: Freetype returned null for character 138 in font DebugFont
23:33:31: Info: Freetype returned null for character 139 in font DebugFont
23:33:31: Info: Freetype returned null for character 140 in font DebugFont
23:33:31: Info: Freetype returned null for character 141 in font DebugFont
23:33:31: Info: Freetype returned null for character 142 in font DebugFont
23:33:31: Info: Freetype returned null for character 143 in font DebugFont
23:33:31: Info: Freetype returned null for character 144 in font DebugFont
23:33:31: Info: Freetype returned null for character 145 in font DebugFont
23:33:31: Info: Freetype returned null for character 146 in font DebugFont
23:33:31: Info: Freetype returned null for character 147 in font DebugFont
23:33:31: Info: Freetype returned null for character 148 in font DebugFont
23:33:31: Info: Freetype returned null for character 149 in font DebugFont
23:33:31: Info: Freetype returned null for character 150 in font DebugFont
23:33:31: Info: Freetype returned null for character 151 in font DebugFont
23:33:31: Info: Freetype returned null for character 152 in font DebugFont
23:33:31: Info: Freetype returned null for character 153 in font DebugFont
23:33:31: Info: Freetype returned null for character 154 in font DebugFont
23:33:31: Info: Freetype returned null for character 155 in font DebugFont
23:33:31: Info: Freetype returned null for character 156 in font DebugFont
23:33:31: Info: Freetype returned null for character 157 in font DebugFont
23:33:31: Info: Freetype returned null for character 158 in font DebugFont
23:33:31: Info: Freetype returned null for character 159 in font DebugFont
23:33:31: Info: Freetype returned null for character 160 in font DebugFont
23:33:31:  _hlmsBlendblockCreated 
23:33:31:  _hlmsSamplerblockCreated 
23:33:31: Shader 100000000VertexShader_vs compiled successfully.
23:33:31: Shader 100000000PixelShader_ps compiled successfully.
23:33:31: Shader 300000000VertexShader_vs compiled successfully.
23:33:31: Shader 300000000PixelShader_ps compiled successfully.
23:33:36: Saving HlmsDiskCache to hlmsDiskCache1.bin
23:33:36: Saving HlmsDiskCache to hlmsDiskCache3.bin
23:33:36: Unregistering ResourceManager for type Font
23:33:36: DefaultWorkQueue('Root') shutting down on thread main.
23:33:36: *-*-* OGRE Shutdown
23:33:36: Unregistering ResourceManager for type OldSkeleton
23:33:36: Unregistering ResourceManager for type Mesh2
23:33:36: Unregistering ResourceManager for type Mesh
23:33:36: Unregistering ResourceManager for type Material
23:33:36: Unregistering ResourceManager for type HighLevelGpuProgram
23:33:36: Uninstalling plugin: ParticleFX
23:33:36: Plugin successfully uninstalled
23:33:36: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/Plugin_ParticleFX_d
23:33:36: Uninstalling plugin: GL 3+ RenderSystem
23:33:36: ******************************
*** Stopping GLX Subsystem ***
******************************
23:33:36: Plugin successfully uninstalled
23:33:36: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_GL3Plus_d
23:33:36: Uninstalling plugin: Vulkan RenderSystem
23:33:36: Unregistering ResourceManager for type GpuProgram
23:33:36: WARNING: Deleting mapped buffer without having it unmapped. This is often sign of a resource leak or a bad pattern. Umapping the buffer for you...
23:33:36: WARNING: Deleting mapped buffer without having it unmapped. This is often sign of a resource leak or a bad pattern. Umapping the buffer for you...
23:33:36: Plugin successfully uninstalled
23:33:36: Unloading library /media/sdb5/Libraries/OGRE/build/masterDEBUG/lib/RenderSystem_Vulkan_d
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

Thanks!!!

Although I could not repro your last issue, with your info it became clearly obvious that my quick fix was always clearing mGpuWaitSemaphForCurrCmdBuff even though we should only do that when submissionType >= SubmissionType::NewFrameIdx (because only then is mGpuWaitSemaphForCurrCmdBuff sent to the GPU). Here's that fix.

Then later I realized that we should always send mGpuWaitSemaphForCurrCmdBuff; thus I moved a couple lines around. Here's that fix.

Let's hope and cross fingers it still works on your machine after these changes :)
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

Thanks for the fix the demos now run with/without the cache. However there is a problem with the frame rate for the vulkan demos.

I have done a clean build 3 times, checked the cmake link/flags , the file size of the libs/demos and plugin paths for the Debug/Release build and they are all as expected.

The Manual Object demo GL fps(1150) / Vulkan fps(900), again consistent with previous builds.

The Pbs Materials fps isn't consistent with previous builds and there are other examples. I just installed the latest NVidia driver, I'll trying reverting back to a previous version unless you have any ideas.

Pbs Materials
GL fps(350) Vulkan fps(29)
Terrain
GL fps(220) Vulkan(21)
SceneFormat
Release GL fps(132) Vulkan(21)
Debug GL fps(53) Vulkan(24)
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5296
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1278
Contact:

Re: [2.3] Vulkan Progress

Post by dark_sylinc »

What happens with this patch?

Code: Select all

diff --git a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
index 8d5f3e948..0f18ca8b4 100644
--- a/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
+++ b/RenderSystems/Vulkan/src/OgreVulkanQueue.cpp
@@ -1014,6 +1014,11 @@ namespace Ogre
     //-------------------------------------------------------------------------
     void VulkanQueue::commitAndNextCommandBuffer( SubmissionType::SubmissionType submissionType )
     {
+        if( submissionType == SubmissionType::FlushOnly )
+            int here= 0;
+        LogManager::getSingleton().logMessage( "SubmissionType: " +
+                                               StringConverter::toString( submissionType ) );
+
         endCommandBuffer();
 
         // We must reset all bindings or else after 3 (mDynamicBufferCurrentFrame) frames
@@ -1032,8 +1037,7 @@ namespace Ogre
         {
             // We need to wait on these semaphores so that rendering can
             // only happen start the swapchain is done presenting
-            submitInfo.waitSemaphoreCount =
-                static_cast<uint32>( mGpuWaitSemaphForCurrCmdBuff.size() );
+            submitInfo.waitSemaphoreCount = static_cast<uint32>( mGpuWaitSemaphForCurrCmdBuff.size() );
             submitInfo.pWaitSemaphores = mGpuWaitSemaphForCurrCmdBuff.begin();
             submitInfo.pWaitDstStageMask = mGpuWaitFlags.begin();
         }
diff --git a/Samples/2.0/Common/src/TutorialGameState.cpp b/Samples/2.0/Common/src/TutorialGameState.cpp
index 9d9ed71f0..d7abb3e61 100644
--- a/Samples/2.0/Common/src/TutorialGameState.cpp
+++ b/Samples/2.0/Common/src/TutorialGameState.cpp
@@ -107,6 +107,8 @@ namespace Demo
 
         mDebugText->setCaption( finalText );
         mDebugTextShadow->setCaption( finalText );
+
+        printf( "%.02f - %.02f\n", 1.0f / timeSinceLast, 1000.0f / frameStats->getAvgTime());
     }
     //-----------------------------------------------------------------------------------
     void TutorialGameState::update( float timeSinceLast )
diff --git a/Samples/Media/2.0/scripts/Compositors/PbsMaterials.compositor b/Samples/Media/2.0/scripts/Compositors/PbsMaterials.compositor
index a246ebb60..2bcaf8f73 100644
--- a/Samples/Media/2.0/scripts/Compositors/PbsMaterials.compositor
+++ b/Samples/Media/2.0/scripts/Compositors/PbsMaterials.compositor
@@ -17,7 +17,7 @@ compositor_node PbsMaterialsRenderingNode
 				depth	dont_care
 				stencil	dont_care
 			}
-			overlays	on
+			overlays	off
 			shadows		PbsMaterialsShadowNode
 		}
 	}
What this patch does:
  1. Disable overlays in PBS. Overlays are forcing us to perform a flush every N frames. After disabling overlays, I only get "SubmissionType: 2" in the Ogre.log every frame, and one "SubmissionType: 0" at init and one deinit. I don't get "SubmissionType: 1"
  2. printf the framerate because otherwise there is no way to know the framerate without overlays
  3. Log the value of SubmissionType to Ogre.log
Let me know if:
  • PBS framerate issues suddenly disappear by disabling the overlays
  • If it does, reenable the overlays and send me the Ogre.log
  • If it doesn't, send me the Ogre.log of without enabling the overlays
If you have NVIDIA Nsight, it may reveal what's going on.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: [2.3] Vulkan Progress

Post by dermont »

PBS framerate issues still there after patch and disabling overlays.

"SubmissionType: 2" in the Ogre.log every frame, and one "SubmissionType: 0" at init and one deinit.

I don't have NVIDIA Nsight but I'll try it out.

Attached logs/fps output for Vulkan Release/Debug and OpenGL for comparison.

I've taking enough of your time. I'll try to figure out what is going on. Thanks for all your help.
Attachments
PbsMaterials.zip
(18.69 KiB) Downloaded 91 times
Post Reply