diff options
author | Tobin Ehlis <tobine@google.com> | 2017-04-24 14:46:25 -0600 |
---|---|---|
committer | Tobin Ehlis <tobine@google.com> | 2017-04-25 08:01:31 -0600 |
commit | fad18b0689ddc8768fc948e56124136ad223baf4 (patch) | |
tree | c33aff745c39594590a3fbad11d7292bda5f636e | |
parent | ed832a346f5de647635da80bcdb95e29634c70d2 (diff) |
layers:Validate objects for display_timing
Update object_tracker validation for swapchain objects in new functions
for VK_GOOGLE_display_timing extension.
Add in missing Error IDs and update database.
-rw-r--r-- | layers/object_tracker.cpp | 19 | ||||
-rw-r--r-- | layers/object_tracker.h | 1 | ||||
-rw-r--r-- | layers/vk_validation_error_database.txt | 8 |
3 files changed, 16 insertions, 12 deletions
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp index 541bc5dc..21ba1511 100644 --- a/layers/object_tracker.cpp +++ b/layers/object_tracker.cpp @@ -3310,6 +3310,9 @@ static void CheckDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo, if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME) == 0) { device_data->enables.nvx_device_generated_commands = true; } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME) == 0) { + device_data->enables.google_display_timing = true; + } } } @@ -4989,9 +4992,8 @@ VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(VkDevice device, bool skip = false; { std::unique_lock<std::mutex> lock(global_lock); - skip |= - ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED); - skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, VALIDATION_ERROR_UNDEFINED, + skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_03181, VALIDATION_ERROR_UNDEFINED); + skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, VALIDATION_ERROR_03182, VALIDATION_ERROR_UNDEFINED); } @@ -5008,9 +5010,8 @@ VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(VkDevice device, Vk bool skip = false; { std::unique_lock<std::mutex> lock(global_lock); - skip |= - ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED); - skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, VALIDATION_ERROR_UNDEFINED, + skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_03178, VALIDATION_ERROR_UNDEFINED); + skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, VALIDATION_ERROR_03179, VALIDATION_ERROR_UNDEFINED); } @@ -5175,8 +5176,6 @@ static inline PFN_vkVoidFunction InterceptCoreDeviceCommand(const char *name) { #endif // VK_USE_PLATFORM_WIN32_KHR if (!strcmp(name, "CmdDrawIndirectCountAMD")) return (PFN_vkVoidFunction)CmdDrawIndirectCountAMD; if (!strcmp(name, "CmdDrawIndexedIndirectCountAMD")) return (PFN_vkVoidFunction)CmdDrawIndexedIndirectCountAMD; - if (!strcmp(name, "GetPastPresentationTimingGOOGLE")) return (PFN_vkVoidFunction)GetPastPresentationTimingGOOGLE; - if (!strcmp(name, "GetRefreshCycleDurationGOOGLE")) return (PFN_vkVoidFunction)GetRefreshCycleDurationGOOGLE; if (!strcmp(name, "SetHdrMetadataEXT")) return (PFN_vkVoidFunction)SetHdrMetadataEXT; return NULL; @@ -5325,6 +5324,10 @@ static inline PFN_vkVoidFunction InterceptDeviceExtensionCommand(const char *nam if (!strcmp(name, "RegisterObjectsNVX")) return (PFN_vkVoidFunction)RegisterObjectsNVX; if (!strcmp(name, "UnregisterObjectsNVX")) return (PFN_vkVoidFunction)UnregisterObjectsNVX; } + if (device_data->enables.google_display_timing) { + if (!strcmp(name, "GetPastPresentationTimingGOOGLE")) return (PFN_vkVoidFunction)GetPastPresentationTimingGOOGLE; + if (!strcmp(name, "GetRefreshCycleDurationGOOGLE")) return (PFN_vkVoidFunction)GetRefreshCycleDurationGOOGLE; + } } return NULL; diff --git a/layers/object_tracker.h b/layers/object_tracker.h index 58ad5713..b315ba67 100644 --- a/layers/object_tracker.h +++ b/layers/object_tracker.h @@ -105,6 +105,7 @@ struct device_extension_enables{ bool ext_discard_rectangles; bool nv_clip_space_w_scaling; bool nvx_device_generated_commands; + bool google_display_timing; }; typedef std::unordered_map<uint64_t, OBJTRACK_NODE *> object_map_type; diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt index a837540e..be851197 100644 --- a/layers/vk_validation_error_database.txt +++ b/layers/vk_validation_error_database.txt @@ -2998,11 +2998,11 @@ VALIDATION_ERROR_03174~^~N~^~Unknown~^~vkGetPhysicalDevicePresentRectanglesKHX~^ VALIDATION_ERROR_03175~^~N~^~Unknown~^~vkGetPhysicalDevicePresentRectanglesKHX~^~For more information refer to Vulkan Spec Section '30.6. Device Group Queries' which states 'surface must be a valid VkSurfaceKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHX)~^~implicit VALIDATION_ERROR_03176~^~N~^~Unknown~^~vkGetPhysicalDevicePresentRectanglesKHX~^~For more information refer to Vulkan Spec Section '30.6. Device Group Queries' which states 'pRectCount must be a pointer to a uint32_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHX)~^~implicit VALIDATION_ERROR_03177~^~N~^~Unknown~^~vkGetPhysicalDevicePresentRectanglesKHX~^~For more information refer to Vulkan Spec Section '30.6. Device Group Queries' which states 'If the value referenced by pRectCount is not 0, and pRects is not NULL, pRects must be a pointer to an array of pRectCount VkRect2D structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHX)~^~implicit -VALIDATION_ERROR_03178~^~N~^~Unknown~^~vkGetRefreshCycleDurationGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetRefreshCycleDurationGOOGLE)~^~implicit -VALIDATION_ERROR_03179~^~N~^~Unknown~^~vkGetRefreshCycleDurationGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'swapchain must be a valid VkSwapchainKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetRefreshCycleDurationGOOGLE)~^~implicit +VALIDATION_ERROR_03178~^~Y~^~Unknown~^~vkGetRefreshCycleDurationGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetRefreshCycleDurationGOOGLE)~^~implicit +VALIDATION_ERROR_03179~^~Y~^~Unknown~^~vkGetRefreshCycleDurationGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'swapchain must be a valid VkSwapchainKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetRefreshCycleDurationGOOGLE)~^~implicit VALIDATION_ERROR_03180~^~N~^~Unknown~^~vkGetRefreshCycleDurationGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'pDisplayTimingProperties must be a pointer to a VkRefreshCycleDurationGOOGLE structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetRefreshCycleDurationGOOGLE)~^~implicit -VALIDATION_ERROR_03181~^~N~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit -VALIDATION_ERROR_03182~^~N~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'swapchain must be a valid VkSwapchainKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit +VALIDATION_ERROR_03181~^~Y~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit +VALIDATION_ERROR_03182~^~Y~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'swapchain must be a valid VkSwapchainKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit VALIDATION_ERROR_03183~^~N~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'pPresentationTimingCount must be a pointer to a uint32_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit VALIDATION_ERROR_03184~^~N~^~Unknown~^~vkGetPastPresentationTimingGOOGLE~^~For more information refer to Vulkan Spec Section '30.7. Display Timing Queries' which states 'If the value referenced by pPresentationTimingCount is not 0, and pPresentationTimings is not NULL, pPresentationTimings must be a pointer to an array of pPresentationTimingCount VkPastPresentationTimingGOOGLE structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkGetPastPresentationTimingGOOGLE)~^~implicit VALIDATION_ERROR_03185~^~N~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'pNext must be NULL or a pointer to a valid instance of VkDeviceGroupSwapchainCreateInfoKHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSwapchainCreateFlagBitsKHR)~^~implicit |