[packages/vulkan-sdk] Fix false-positive in mem tracker validation layer

jajcus jajcus at pld-linux.org
Sat Mar 5 15:51:48 CET 2016


commit ace27fac324e6a2d75986e61f8bce8d1fc6f5324
Author: Jacek Konieczny <jajcus at jajcus.net>
Date:   Sat Mar 5 15:50:14 2016 +0100

    Fix false-positive in mem tracker validation layer
    
    Patch from:
    https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/commit/e1a61848f5d302c52bd4775b6421007498194745
    
    rel. 7

 validation_swapchain_fence.patch | 46 ++++++++++++++++++++++++++++++++++++++++
 vulkan-sdk.spec                  |  4 +++-
 2 files changed, 49 insertions(+), 1 deletion(-)
---
diff --git a/vulkan-sdk.spec b/vulkan-sdk.spec
index 3d2d90a..1f24a8f 100644
--- a/vulkan-sdk.spec
+++ b/vulkan-sdk.spec
@@ -19,7 +19,7 @@
 %define tools_commit	e5dccf86cf999ff9988be97337d0e3a3d508b085
 # master branch
 %define	lg_commit	0a73713f0d664aa97a7e359f567a16d7c3fce359
-%define	rel	6
+%define	rel	7
 Summary:	LunarG Vulkan SDK
 Name:		vulkan-sdk
 Version:	1.0.3.0
@@ -40,6 +40,7 @@ Patch2:		demos_out_of_src.patch
 Patch3:		rpath.patch
 Patch4:		loader_repo_name.patch
 Patch5:		wayland.patch
+Patch6:		validation_swapchain_fence.patch
 URL:		http://lunarg.com/vulkan-sdk/
 %{?with_icd:BuildRequires:	Mesa-libGL-devel}
 BuildRequires:	bison
@@ -151,6 +152,7 @@ mv VulkanTools-%{tools_commit} VulkanTools
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 %if %{with icd}
 mv LunarGLASS-%{lg_commit} LunarGLASS
diff --git a/validation_swapchain_fence.patch b/validation_swapchain_fence.patch
new file mode 100644
index 0000000..b98cfb2
--- /dev/null
+++ b/validation_swapchain_fence.patch
@@ -0,0 +1,46 @@
+diff -dur -x '*~' -x '*.orig' -x '*.rej' vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.cpp vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.cpp
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.cpp	2016-02-22 22:02:54.000000000 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.cpp	2016-03-05 15:37:45.230208306 +0100
+@@ -2120,14 +2120,16 @@
+                     " already in SIGNALED state.",
+                     apiCall, (uint64_t)fence);
+             }
+-            if (!pFenceInfo->second
+-                     .queue) { // Checking status of unsubmitted fence
++            if (!pFenceInfo->second.queue &&
++                !pFenceInfo->second
++                     .swapchain) { // Checking status of unsubmitted fence
+                 skipCall |= log_msg(
+                     my_data->report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT,
+                     VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, (uint64_t)fence,
+                     __LINE__, MEMTRACK_INVALID_FENCE_STATE, "MEM",
+                     "%s called for fence %#" PRIxLEAST64
+-                    " which has not been submitted on a Queue.",
++                    " which has not been submitted on a Queue or during "
++		    "acquire next image.",
+                     apiCall, (uint64_t)fence);
+             }
+         } else {
+@@ -3439,6 +3441,10 @@
+         }
+         my_data->semaphoreMap[semaphore] = MEMTRACK_SEMAPHORE_STATE_SIGNALLED;
+     }
++    auto fence_data = my_data->fenceMap.find(fence);
++    if (fence_data != my_data->fenceMap.end()) {
++        fence_data->second.swapchain = swapchain;
++    }
+     loader_platform_thread_unlock_mutex(&globalLock);
+     if (VK_FALSE == skipCall) {
+         result = my_data->device_dispatch_table->AcquireNextImageKHR(
+diff -dur -x '*~' -x '*.orig' -x '*.rej' vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.h vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.h
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.h	2016-02-22 22:02:54.000000000 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/mem_tracker.h	2016-03-05 15:38:14.170910811 +0100
+@@ -206,6 +206,8 @@
+ struct MT_FENCE_INFO {
+     uint64_t fenceId; // Sequence number for fence at last submit
+     VkQueue queue;    // Queue that this fence is submitted against or NULL
++    VkSwapchainKHR
++        swapchain; // Swapchain that this fence is submitted against or NULL
+     VkBool32 firstTimeFlag; // Fence was created in signaled state, avoid
+                             // warnings for first use
+     VkFenceCreateInfo createInfo;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/vulkan-sdk.git/commitdiff/ace27fac324e6a2d75986e61f8bce8d1fc6f5324



More information about the pld-cvs-commit mailing list