summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2017-04-24 14:46:25 -0600
committerTobin Ehlis <tobine@google.com>2017-04-25 08:01:31 -0600
commitfad18b0689ddc8768fc948e56124136ad223baf4 (patch)
treec33aff745c39594590a3fbad11d7292bda5f636e
parented832a346f5de647635da80bcdb95e29634c70d2 (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.cpp19
-rw-r--r--layers/object_tracker.h1
-rw-r--r--layers/vk_validation_error_database.txt8
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