1*b7893ccfSSadaf Ebrahimi /* *** THIS FILE IS GENERATED - DO NOT EDIT! ***
2*b7893ccfSSadaf Ebrahimi * See parameter_validation_generator.py for modifications
3*b7893ccfSSadaf Ebrahimi *
4*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 The Khronos Group Inc.
5*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 LunarG, Inc.
6*b7893ccfSSadaf Ebrahimi * Copyright (C) 2015-2019 Google Inc.
7*b7893ccfSSadaf Ebrahimi *
8*b7893ccfSSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License");
9*b7893ccfSSadaf Ebrahimi * you may not use this file except in compliance with the License.
10*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2017 Valve Corporation
11*b7893ccfSSadaf Ebrahimi * You may obtain a copy of the License at
12*b7893ccfSSadaf Ebrahimi *
13*b7893ccfSSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0
14*b7893ccfSSadaf Ebrahimi *
15*b7893ccfSSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software
16*b7893ccfSSadaf Ebrahimi * distributed under the License is distributed on an "AS IS" BASIS,
17*b7893ccfSSadaf Ebrahimi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*b7893ccfSSadaf Ebrahimi * See the License for the specific language governing permissions and
19*b7893ccfSSadaf Ebrahimi * limitations under the License.
20*b7893ccfSSadaf Ebrahimi *
21*b7893ccfSSadaf Ebrahimi * Author: Mark Lobodzinski <mark@LunarG.com>
22*b7893ccfSSadaf Ebrahimi * Author: Dave Houlton <daveh@LunarG.com>
23*b7893ccfSSadaf Ebrahimi */
24*b7893ccfSSadaf Ebrahimi
25*b7893ccfSSadaf Ebrahimi
26*b7893ccfSSadaf Ebrahimi #include "chassis.h"
27*b7893ccfSSadaf Ebrahimi
28*b7893ccfSSadaf Ebrahimi #include "stateless_validation.h"
29*b7893ccfSSadaf Ebrahimi
30*b7893ccfSSadaf Ebrahimi const uint32_t GeneratedVulkanHeaderVersion = 121;
31*b7893ccfSSadaf Ebrahimi
32*b7893ccfSSadaf Ebrahimi const VkAccessFlags AllVkAccessFlagBits = VK_ACCESS_INDIRECT_COMMAND_READ_BIT|VK_ACCESS_INDEX_READ_BIT|VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT|VK_ACCESS_UNIFORM_READ_BIT|VK_ACCESS_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT|VK_ACCESS_TRANSFER_READ_BIT|VK_ACCESS_TRANSFER_WRITE_BIT|VK_ACCESS_HOST_READ_BIT|VK_ACCESS_HOST_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT|VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT|VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT|VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX|VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX|VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT|VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV|VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV|VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV|VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT;
33*b7893ccfSSadaf Ebrahimi const VkAttachmentDescriptionFlags AllVkAttachmentDescriptionFlagBits = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT;
34*b7893ccfSSadaf Ebrahimi const VkBufferCreateFlags AllVkBufferCreateFlagBits = VK_BUFFER_CREATE_SPARSE_BINDING_BIT|VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT|VK_BUFFER_CREATE_SPARSE_ALIASED_BIT|VK_BUFFER_CREATE_PROTECTED_BIT|VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT;
35*b7893ccfSSadaf Ebrahimi const VkBufferUsageFlags AllVkBufferUsageFlagBits = VK_BUFFER_USAGE_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_TRANSFER_DST_BIT|VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT|VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT|VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT|VK_BUFFER_USAGE_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_INDEX_BUFFER_BIT|VK_BUFFER_USAGE_VERTEX_BUFFER_BIT|VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT|VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT|VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT|VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT|VK_BUFFER_USAGE_RAY_TRACING_BIT_NV|VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
36*b7893ccfSSadaf Ebrahimi const VkColorComponentFlags AllVkColorComponentFlagBits = VK_COLOR_COMPONENT_R_BIT|VK_COLOR_COMPONENT_G_BIT|VK_COLOR_COMPONENT_B_BIT|VK_COLOR_COMPONENT_A_BIT;
37*b7893ccfSSadaf Ebrahimi const VkCommandBufferResetFlags AllVkCommandBufferResetFlagBits = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT;
38*b7893ccfSSadaf Ebrahimi const VkCommandBufferUsageFlags AllVkCommandBufferUsageFlagBits = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT|VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT|VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT;
39*b7893ccfSSadaf Ebrahimi const VkCommandPoolCreateFlags AllVkCommandPoolCreateFlagBits = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT|VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT|VK_COMMAND_POOL_CREATE_PROTECTED_BIT;
40*b7893ccfSSadaf Ebrahimi const VkCommandPoolResetFlags AllVkCommandPoolResetFlagBits = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT;
41*b7893ccfSSadaf Ebrahimi const VkCullModeFlags AllVkCullModeFlagBits = VK_CULL_MODE_NONE|VK_CULL_MODE_FRONT_BIT|VK_CULL_MODE_BACK_BIT|VK_CULL_MODE_FRONT_AND_BACK;
42*b7893ccfSSadaf Ebrahimi const VkDependencyFlags AllVkDependencyFlagBits = VK_DEPENDENCY_BY_REGION_BIT|VK_DEPENDENCY_DEVICE_GROUP_BIT|VK_DEPENDENCY_VIEW_LOCAL_BIT|VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR|VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR;
43*b7893ccfSSadaf Ebrahimi const VkDescriptorPoolCreateFlags AllVkDescriptorPoolCreateFlagBits = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT|VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT;
44*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateFlags AllVkDescriptorSetLayoutCreateFlagBits = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR|VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT;
45*b7893ccfSSadaf Ebrahimi const VkDeviceQueueCreateFlags AllVkDeviceQueueCreateFlagBits = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT;
46*b7893ccfSSadaf Ebrahimi const VkFenceCreateFlags AllVkFenceCreateFlagBits = VK_FENCE_CREATE_SIGNALED_BIT;
47*b7893ccfSSadaf Ebrahimi const VkFormatFeatureFlags AllVkFormatFeatureFlagBits = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT|VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT|VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT|VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT|VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT|VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT|VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT|VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT|VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT|VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT|VK_FORMAT_FEATURE_BLIT_SRC_BIT|VK_FORMAT_FEATURE_BLIT_DST_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT|VK_FORMAT_FEATURE_TRANSFER_SRC_BIT|VK_FORMAT_FEATURE_TRANSFER_DST_BIT|VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT|VK_FORMAT_FEATURE_DISJOINT_BIT|VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT|VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG|VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR|VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT|VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR|VK_FORMAT_FEATURE_DISJOINT_BIT_KHR|VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR|VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT|VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT;
48*b7893ccfSSadaf Ebrahimi const VkFramebufferCreateFlags AllVkFramebufferCreateFlagBits = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR;
49*b7893ccfSSadaf Ebrahimi const VkImageAspectFlags AllVkImageAspectFlagBits = VK_IMAGE_ASPECT_COLOR_BIT|VK_IMAGE_ASPECT_DEPTH_BIT|VK_IMAGE_ASPECT_STENCIL_BIT|VK_IMAGE_ASPECT_METADATA_BIT|VK_IMAGE_ASPECT_PLANE_0_BIT|VK_IMAGE_ASPECT_PLANE_1_BIT|VK_IMAGE_ASPECT_PLANE_2_BIT|VK_IMAGE_ASPECT_PLANE_0_BIT_KHR|VK_IMAGE_ASPECT_PLANE_1_BIT_KHR|VK_IMAGE_ASPECT_PLANE_2_BIT_KHR|VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT;
50*b7893ccfSSadaf Ebrahimi const VkImageCreateFlags AllVkImageCreateFlagBits = VK_IMAGE_CREATE_SPARSE_BINDING_BIT|VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT|VK_IMAGE_CREATE_SPARSE_ALIASED_BIT|VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT|VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT|VK_IMAGE_CREATE_ALIAS_BIT|VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT|VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT|VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT|VK_IMAGE_CREATE_EXTENDED_USAGE_BIT|VK_IMAGE_CREATE_PROTECTED_BIT|VK_IMAGE_CREATE_DISJOINT_BIT|VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV|VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR|VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR|VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR|VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR|VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT|VK_IMAGE_CREATE_DISJOINT_BIT_KHR|VK_IMAGE_CREATE_ALIAS_BIT_KHR|VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT;
51*b7893ccfSSadaf Ebrahimi const VkImageUsageFlags AllVkImageUsageFlagBits = VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT|VK_IMAGE_USAGE_STORAGE_BIT|VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT|VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT|VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT|VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV|VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT;
52*b7893ccfSSadaf Ebrahimi const VkImageViewCreateFlags AllVkImageViewCreateFlagBits = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT;
53*b7893ccfSSadaf Ebrahimi const VkMemoryHeapFlags AllVkMemoryHeapFlagBits = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT|VK_MEMORY_HEAP_MULTI_INSTANCE_BIT|VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR;
54*b7893ccfSSadaf Ebrahimi const VkMemoryPropertyFlags AllVkMemoryPropertyFlagBits = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT|VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT|VK_MEMORY_PROPERTY_PROTECTED_BIT|VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD|VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD;
55*b7893ccfSSadaf Ebrahimi const VkPipelineCreateFlags AllVkPipelineCreateFlagBits = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT|VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT|VK_PIPELINE_CREATE_DERIVATIVE_BIT|VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT|VK_PIPELINE_CREATE_DISPATCH_BASE|VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR|VK_PIPELINE_CREATE_DISPATCH_BASE_KHR|VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV|VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR|VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR;
56*b7893ccfSSadaf Ebrahimi const VkPipelineShaderStageCreateFlags AllVkPipelineShaderStageCreateFlagBits = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT|VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT;
57*b7893ccfSSadaf Ebrahimi const VkPipelineStageFlags AllVkPipelineStageFlagBits = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT|VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT|VK_PIPELINE_STAGE_VERTEX_INPUT_BIT|VK_PIPELINE_STAGE_VERTEX_SHADER_BIT|VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT|VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT|VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT|VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT|VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT|VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT|VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT|VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT|VK_PIPELINE_STAGE_TRANSFER_BIT|VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT|VK_PIPELINE_STAGE_HOST_BIT|VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT|VK_PIPELINE_STAGE_ALL_COMMANDS_BIT|VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT|VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX|VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV|VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV|VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV|VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT;
58*b7893ccfSSadaf Ebrahimi const VkQueryControlFlags AllVkQueryControlFlagBits = VK_QUERY_CONTROL_PRECISE_BIT;
59*b7893ccfSSadaf Ebrahimi const VkQueryPipelineStatisticFlags AllVkQueryPipelineStatisticFlagBits = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT|VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT|VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT|VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT|VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT|VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT|VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT|VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT|VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT|VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT|VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT;
60*b7893ccfSSadaf Ebrahimi const VkQueryResultFlags AllVkQueryResultFlagBits = VK_QUERY_RESULT_64_BIT|VK_QUERY_RESULT_WAIT_BIT|VK_QUERY_RESULT_WITH_AVAILABILITY_BIT|VK_QUERY_RESULT_PARTIAL_BIT;
61*b7893ccfSSadaf Ebrahimi const VkQueueFlags AllVkQueueFlagBits = VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT|VK_QUEUE_TRANSFER_BIT|VK_QUEUE_SPARSE_BINDING_BIT|VK_QUEUE_PROTECTED_BIT;
62*b7893ccfSSadaf Ebrahimi const VkSampleCountFlags AllVkSampleCountFlagBits = VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_2_BIT|VK_SAMPLE_COUNT_4_BIT|VK_SAMPLE_COUNT_8_BIT|VK_SAMPLE_COUNT_16_BIT|VK_SAMPLE_COUNT_32_BIT|VK_SAMPLE_COUNT_64_BIT;
63*b7893ccfSSadaf Ebrahimi const VkSamplerCreateFlags AllVkSamplerCreateFlagBits = VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT|VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT;
64*b7893ccfSSadaf Ebrahimi const VkShaderStageFlags AllVkShaderStageFlagBits = VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT|VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT|VK_SHADER_STAGE_GEOMETRY_BIT|VK_SHADER_STAGE_FRAGMENT_BIT|VK_SHADER_STAGE_COMPUTE_BIT|VK_SHADER_STAGE_ALL_GRAPHICS|VK_SHADER_STAGE_ALL|VK_SHADER_STAGE_RAYGEN_BIT_NV|VK_SHADER_STAGE_ANY_HIT_BIT_NV|VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV|VK_SHADER_STAGE_MISS_BIT_NV|VK_SHADER_STAGE_INTERSECTION_BIT_NV|VK_SHADER_STAGE_CALLABLE_BIT_NV|VK_SHADER_STAGE_TASK_BIT_NV|VK_SHADER_STAGE_MESH_BIT_NV;
65*b7893ccfSSadaf Ebrahimi const VkSparseImageFormatFlags AllVkSparseImageFormatFlagBits = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT|VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT|VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT;
66*b7893ccfSSadaf Ebrahimi const VkSparseMemoryBindFlags AllVkSparseMemoryBindFlagBits = VK_SPARSE_MEMORY_BIND_METADATA_BIT;
67*b7893ccfSSadaf Ebrahimi const VkStencilFaceFlags AllVkStencilFaceFlagBits = VK_STENCIL_FACE_FRONT_BIT|VK_STENCIL_FACE_BACK_BIT|VK_STENCIL_FACE_FRONT_AND_BACK|VK_STENCIL_FRONT_AND_BACK;
68*b7893ccfSSadaf Ebrahimi const VkSubpassDescriptionFlags AllVkSubpassDescriptionFlagBits = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX|VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX;
69*b7893ccfSSadaf Ebrahimi const VkExternalFenceFeatureFlags AllVkExternalFenceFeatureFlagBits = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR;
70*b7893ccfSSadaf Ebrahimi const VkExternalFenceHandleTypeFlags AllVkExternalFenceHandleTypeFlagBits = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
71*b7893ccfSSadaf Ebrahimi const VkExternalMemoryFeatureFlags AllVkExternalMemoryFeatureFlagBits = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
72*b7893ccfSSadaf Ebrahimi const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT;
73*b7893ccfSSadaf Ebrahimi const VkExternalSemaphoreFeatureFlags AllVkExternalSemaphoreFeatureFlagBits = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR;
74*b7893ccfSSadaf Ebrahimi const VkExternalSemaphoreHandleTypeFlags AllVkExternalSemaphoreHandleTypeFlagBits = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
75*b7893ccfSSadaf Ebrahimi const VkFenceImportFlags AllVkFenceImportFlagBits = VK_FENCE_IMPORT_TEMPORARY_BIT|VK_FENCE_IMPORT_TEMPORARY_BIT_KHR;
76*b7893ccfSSadaf Ebrahimi const VkMemoryAllocateFlags AllVkMemoryAllocateFlagBits = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT|VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR;
77*b7893ccfSSadaf Ebrahimi const VkPeerMemoryFeatureFlags AllVkPeerMemoryFeatureFlagBits = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT|VK_PEER_MEMORY_FEATURE_COPY_DST_BIT|VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT|VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT|VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR|VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR|VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR|VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR;
78*b7893ccfSSadaf Ebrahimi const VkSemaphoreImportFlags AllVkSemaphoreImportFlagBits = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT|VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR;
79*b7893ccfSSadaf Ebrahimi const VkSubgroupFeatureFlags AllVkSubgroupFeatureFlagBits = VK_SUBGROUP_FEATURE_BASIC_BIT|VK_SUBGROUP_FEATURE_VOTE_BIT|VK_SUBGROUP_FEATURE_ARITHMETIC_BIT|VK_SUBGROUP_FEATURE_BALLOT_BIT|VK_SUBGROUP_FEATURE_SHUFFLE_BIT|VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT|VK_SUBGROUP_FEATURE_CLUSTERED_BIT|VK_SUBGROUP_FEATURE_QUAD_BIT|VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV;
80*b7893ccfSSadaf Ebrahimi const VkCompositeAlphaFlagsKHR AllVkCompositeAlphaFlagBitsKHR = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR|VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR|VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR|VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
81*b7893ccfSSadaf Ebrahimi const VkSurfaceTransformFlagsKHR AllVkSurfaceTransformFlagBitsKHR = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR|VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR|VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR|VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR|VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR|VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR|VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR|VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR|VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR;
82*b7893ccfSSadaf Ebrahimi const VkDeviceGroupPresentModeFlagsKHR AllVkDeviceGroupPresentModeFlagBitsKHR = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR|VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR|VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR|VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR;
83*b7893ccfSSadaf Ebrahimi const VkSwapchainCreateFlagsKHR AllVkSwapchainCreateFlagBitsKHR = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR|VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR|VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR|VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR;
84*b7893ccfSSadaf Ebrahimi const VkDisplayPlaneAlphaFlagsKHR AllVkDisplayPlaneAlphaFlagBitsKHR = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR|VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR|VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR|VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR;
85*b7893ccfSSadaf Ebrahimi const VkMemoryAllocateFlagsKHR AllVkMemoryAllocateFlagBitsKHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT|VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR;
86*b7893ccfSSadaf Ebrahimi const VkPeerMemoryFeatureFlagsKHR AllVkPeerMemoryFeatureFlagBitsKHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT|VK_PEER_MEMORY_FEATURE_COPY_DST_BIT|VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT|VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT|VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR|VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR|VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR|VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR;
87*b7893ccfSSadaf Ebrahimi const VkExternalMemoryFeatureFlagsKHR AllVkExternalMemoryFeatureFlagBitsKHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR;
88*b7893ccfSSadaf Ebrahimi const VkExternalMemoryHandleTypeFlagsKHR AllVkExternalMemoryHandleTypeFlagBitsKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT;
89*b7893ccfSSadaf Ebrahimi const VkExternalSemaphoreFeatureFlagsKHR AllVkExternalSemaphoreFeatureFlagBitsKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR;
90*b7893ccfSSadaf Ebrahimi const VkExternalSemaphoreHandleTypeFlagsKHR AllVkExternalSemaphoreHandleTypeFlagBitsKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
91*b7893ccfSSadaf Ebrahimi const VkSemaphoreImportFlagsKHR AllVkSemaphoreImportFlagBitsKHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT|VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR;
92*b7893ccfSSadaf Ebrahimi const VkExternalFenceFeatureFlagsKHR AllVkExternalFenceFeatureFlagBitsKHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT|VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT|VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR;
93*b7893ccfSSadaf Ebrahimi const VkExternalFenceHandleTypeFlagsKHR AllVkExternalFenceHandleTypeFlagBitsKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
94*b7893ccfSSadaf Ebrahimi const VkFenceImportFlagsKHR AllVkFenceImportFlagBitsKHR = VK_FENCE_IMPORT_TEMPORARY_BIT|VK_FENCE_IMPORT_TEMPORARY_BIT_KHR;
95*b7893ccfSSadaf Ebrahimi const VkResolveModeFlagsKHR AllVkResolveModeFlagBitsKHR = VK_RESOLVE_MODE_NONE_KHR|VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR|VK_RESOLVE_MODE_AVERAGE_BIT_KHR|VK_RESOLVE_MODE_MIN_BIT_KHR|VK_RESOLVE_MODE_MAX_BIT_KHR;
96*b7893ccfSSadaf Ebrahimi const VkDebugReportFlagsEXT AllVkDebugReportFlagBitsEXT = VK_DEBUG_REPORT_INFORMATION_BIT_EXT|VK_DEBUG_REPORT_WARNING_BIT_EXT|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT|VK_DEBUG_REPORT_ERROR_BIT_EXT|VK_DEBUG_REPORT_DEBUG_BIT_EXT;
97*b7893ccfSSadaf Ebrahimi const VkExternalMemoryFeatureFlagsNV AllVkExternalMemoryFeatureFlagBitsNV = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV;
98*b7893ccfSSadaf Ebrahimi const VkExternalMemoryHandleTypeFlagsNV AllVkExternalMemoryHandleTypeFlagBitsNV = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV;
99*b7893ccfSSadaf Ebrahimi const VkConditionalRenderingFlagsEXT AllVkConditionalRenderingFlagBitsEXT = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT;
100*b7893ccfSSadaf Ebrahimi const VkIndirectCommandsLayoutUsageFlagsNVX AllVkIndirectCommandsLayoutUsageFlagBitsNVX = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX|VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX|VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX|VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX;
101*b7893ccfSSadaf Ebrahimi const VkObjectEntryUsageFlagsNVX AllVkObjectEntryUsageFlagBitsNVX = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX|VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX;
102*b7893ccfSSadaf Ebrahimi const VkSurfaceCounterFlagsEXT AllVkSurfaceCounterFlagBitsEXT = VK_SURFACE_COUNTER_VBLANK_EXT;
103*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessageSeverityFlagsEXT AllVkDebugUtilsMessageSeverityFlagBitsEXT = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT|VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT|VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT|VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
104*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessageTypeFlagsEXT AllVkDebugUtilsMessageTypeFlagBitsEXT = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT|VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT|VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
105*b7893ccfSSadaf Ebrahimi const VkDescriptorBindingFlagsEXT AllVkDescriptorBindingFlagBitsEXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT|VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT|VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT|VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
106*b7893ccfSSadaf Ebrahimi const VkBuildAccelerationStructureFlagsNV AllVkBuildAccelerationStructureFlagBitsNV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV|VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV|VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV|VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV;
107*b7893ccfSSadaf Ebrahimi const VkGeometryFlagsNV AllVkGeometryFlagBitsNV = VK_GEOMETRY_OPAQUE_BIT_NV|VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV;
108*b7893ccfSSadaf Ebrahimi const VkGeometryInstanceFlagsNV AllVkGeometryInstanceFlagBitsNV = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV|VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV|VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV|VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV;
109*b7893ccfSSadaf Ebrahimi const VkPipelineCreationFeedbackFlagsEXT AllVkPipelineCreationFeedbackFlagBitsEXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT|VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT|VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT;
110*b7893ccfSSadaf Ebrahimi
111*b7893ccfSSadaf Ebrahimi const std::vector<VkPipelineCacheHeaderVersion> AllVkPipelineCacheHeaderVersionEnums = {VK_PIPELINE_CACHE_HEADER_VERSION_ONE, };
112*b7893ccfSSadaf Ebrahimi const std::vector<VkResult> AllVkResultEnums = {VK_SUCCESS, VK_NOT_READY, VK_TIMEOUT, VK_EVENT_SET, VK_EVENT_RESET, VK_INCOMPLETE, VK_ERROR_OUT_OF_HOST_MEMORY, VK_ERROR_OUT_OF_DEVICE_MEMORY, VK_ERROR_INITIALIZATION_FAILED, VK_ERROR_DEVICE_LOST, VK_ERROR_MEMORY_MAP_FAILED, VK_ERROR_LAYER_NOT_PRESENT, VK_ERROR_EXTENSION_NOT_PRESENT, VK_ERROR_FEATURE_NOT_PRESENT, VK_ERROR_INCOMPATIBLE_DRIVER, VK_ERROR_TOO_MANY_OBJECTS, VK_ERROR_FORMAT_NOT_SUPPORTED, VK_ERROR_FRAGMENTED_POOL, VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE, VK_ERROR_SURFACE_LOST_KHR, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, VK_SUBOPTIMAL_KHR, VK_ERROR_OUT_OF_DATE_KHR, VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, VK_ERROR_VALIDATION_FAILED_EXT, VK_ERROR_INVALID_SHADER_NV, VK_ERROR_OUT_OF_POOL_MEMORY_KHR, VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, VK_ERROR_FRAGMENTATION_EXT, VK_ERROR_NOT_PERMITTED_EXT, VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, };
113*b7893ccfSSadaf Ebrahimi const std::vector<VkSystemAllocationScope> AllVkSystemAllocationScopeEnums = {VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, VK_SYSTEM_ALLOCATION_SCOPE_CACHE, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE, };
114*b7893ccfSSadaf Ebrahimi const std::vector<VkInternalAllocationType> AllVkInternalAllocationTypeEnums = {VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, };
115*b7893ccfSSadaf Ebrahimi const std::vector<VkFormat> AllVkFormatEnums = {VK_FORMAT_UNDEFINED, VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R4G4B4A4_UNORM_PACK16, VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED, VK_FORMAT_R8_SSCALED, VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_USCALED, VK_FORMAT_R8G8_SSCALED, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8B8_SNORM, VK_FORMAT_R8G8B8_USCALED, VK_FORMAT_R8G8B8_SSCALED, VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_SINT, VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_USCALED, VK_FORMAT_B8G8R8_SSCALED, VK_FORMAT_B8G8R8_UINT, VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_USCALED, VK_FORMAT_R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_USCALED, VK_FORMAT_B8G8R8A8_SSCALED, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32, VK_FORMAT_A8B8G8R8_USCALED_PACK32, VK_FORMAT_A8B8G8R8_SSCALED_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32, VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_SNORM_PACK32, VK_FORMAT_A2R10G10B10_USCALED_PACK32, VK_FORMAT_A2R10G10B10_SSCALED_PACK32, VK_FORMAT_A2R10G10B10_UINT_PACK32, VK_FORMAT_A2R10G10B10_SINT_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2B10G10R10_SNORM_PACK32, VK_FORMAT_A2B10G10R10_USCALED_PACK32, VK_FORMAT_A2B10G10R10_SSCALED_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, VK_FORMAT_R16_SSCALED, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_USCALED, VK_FORMAT_R16G16_SSCALED, VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_UNORM, VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_USCALED, VK_FORMAT_R16G16B16_SSCALED, VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_USCALED, VK_FORMAT_R16G16B16A16_SSCALED, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R32_UINT, VK_FORMAT_R32_SINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32G32_UINT, VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R64_UINT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_SFLOAT, VK_FORMAT_R64G64_UINT, VK_FORMAT_R64G64_SINT, VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64B64_UINT, VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_SFLOAT, VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64A64_SINT, VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_D16_UNORM, VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT, VK_FORMAT_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_SRGB_BLOCK, VK_FORMAT_G8B8G8R8_422_UNORM, VK_FORMAT_B8G8R8G8_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R10X6G10X6_UNORM_2PACK16, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, VK_FORMAT_R12X4_UNORM_PACK16, VK_FORMAT_R12X4G12X4_UNORM_2PACK16, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, VK_FORMAT_G16B16G16R16_422_UNORM, VK_FORMAT_B16G16R16G16_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, VK_FORMAT_G8B8G8R8_422_UNORM_KHR, VK_FORMAT_B8G8R8G8_422_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, VK_FORMAT_R10X6_UNORM_PACK16_KHR, VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, VK_FORMAT_R12X4_UNORM_PACK16_KHR, VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, VK_FORMAT_G16B16G16R16_422_UNORM_KHR, VK_FORMAT_B16G16R16G16_422_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR, };
116*b7893ccfSSadaf Ebrahimi const std::vector<VkImageType> AllVkImageTypeEnums = {VK_IMAGE_TYPE_1D, VK_IMAGE_TYPE_2D, VK_IMAGE_TYPE_3D, };
117*b7893ccfSSadaf Ebrahimi const std::vector<VkImageTiling> AllVkImageTilingEnums = {VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_TILING_LINEAR, VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, };
118*b7893ccfSSadaf Ebrahimi const std::vector<VkPhysicalDeviceType> AllVkPhysicalDeviceTypeEnums = {VK_PHYSICAL_DEVICE_TYPE_OTHER, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_PHYSICAL_DEVICE_TYPE_CPU, };
119*b7893ccfSSadaf Ebrahimi const std::vector<VkQueryType> AllVkQueryTypeEnums = {VK_QUERY_TYPE_OCCLUSION, VK_QUERY_TYPE_PIPELINE_STATISTICS, VK_QUERY_TYPE_TIMESTAMP, VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL, };
120*b7893ccfSSadaf Ebrahimi const std::vector<VkSharingMode> AllVkSharingModeEnums = {VK_SHARING_MODE_EXCLUSIVE, VK_SHARING_MODE_CONCURRENT, };
121*b7893ccfSSadaf Ebrahimi const std::vector<VkImageLayout> AllVkImageLayoutEnums = {VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_PREINITIALIZED, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, };
122*b7893ccfSSadaf Ebrahimi const std::vector<VkImageViewType> AllVkImageViewTypeEnums = {VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_VIEW_TYPE_1D_ARRAY, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, };
123*b7893ccfSSadaf Ebrahimi const std::vector<VkComponentSwizzle> AllVkComponentSwizzleEnums = {VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_ONE, VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A, };
124*b7893ccfSSadaf Ebrahimi const std::vector<VkVertexInputRate> AllVkVertexInputRateEnums = {VK_VERTEX_INPUT_RATE_VERTEX, VK_VERTEX_INPUT_RATE_INSTANCE, };
125*b7893ccfSSadaf Ebrahimi const std::vector<VkPrimitiveTopology> AllVkPrimitiveTopologyEnums = {VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, };
126*b7893ccfSSadaf Ebrahimi const std::vector<VkPolygonMode> AllVkPolygonModeEnums = {VK_POLYGON_MODE_FILL, VK_POLYGON_MODE_LINE, VK_POLYGON_MODE_POINT, VK_POLYGON_MODE_FILL_RECTANGLE_NV, };
127*b7893ccfSSadaf Ebrahimi const std::vector<VkFrontFace> AllVkFrontFaceEnums = {VK_FRONT_FACE_COUNTER_CLOCKWISE, VK_FRONT_FACE_CLOCKWISE, };
128*b7893ccfSSadaf Ebrahimi const std::vector<VkCompareOp> AllVkCompareOpEnums = {VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, };
129*b7893ccfSSadaf Ebrahimi const std::vector<VkStencilOp> AllVkStencilOpEnums = {VK_STENCIL_OP_KEEP, VK_STENCIL_OP_ZERO, VK_STENCIL_OP_REPLACE, VK_STENCIL_OP_INCREMENT_AND_CLAMP, VK_STENCIL_OP_DECREMENT_AND_CLAMP, VK_STENCIL_OP_INVERT, VK_STENCIL_OP_INCREMENT_AND_WRAP, VK_STENCIL_OP_DECREMENT_AND_WRAP, };
130*b7893ccfSSadaf Ebrahimi const std::vector<VkLogicOp> AllVkLogicOpEnums = {VK_LOGIC_OP_CLEAR, VK_LOGIC_OP_AND, VK_LOGIC_OP_AND_REVERSE, VK_LOGIC_OP_COPY, VK_LOGIC_OP_AND_INVERTED, VK_LOGIC_OP_NO_OP, VK_LOGIC_OP_XOR, VK_LOGIC_OP_OR, VK_LOGIC_OP_NOR, VK_LOGIC_OP_EQUIVALENT, VK_LOGIC_OP_INVERT, VK_LOGIC_OP_OR_REVERSE, VK_LOGIC_OP_COPY_INVERTED, VK_LOGIC_OP_OR_INVERTED, VK_LOGIC_OP_NAND, VK_LOGIC_OP_SET, };
131*b7893ccfSSadaf Ebrahimi const std::vector<VkBlendFactor> AllVkBlendFactorEnums = {VK_BLEND_FACTOR_ZERO, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_SRC_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, VK_BLEND_FACTOR_DST_COLOR, VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, VK_BLEND_FACTOR_SRC_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, VK_BLEND_FACTOR_DST_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, VK_BLEND_FACTOR_CONSTANT_COLOR, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, VK_BLEND_FACTOR_CONSTANT_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, VK_BLEND_FACTOR_SRC1_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, VK_BLEND_FACTOR_SRC1_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA, };
132*b7893ccfSSadaf Ebrahimi const std::vector<VkBlendOp> AllVkBlendOpEnums = {VK_BLEND_OP_ADD, VK_BLEND_OP_SUBTRACT, VK_BLEND_OP_REVERSE_SUBTRACT, VK_BLEND_OP_MIN, VK_BLEND_OP_MAX, VK_BLEND_OP_ZERO_EXT, VK_BLEND_OP_SRC_EXT, VK_BLEND_OP_DST_EXT, VK_BLEND_OP_SRC_OVER_EXT, VK_BLEND_OP_DST_OVER_EXT, VK_BLEND_OP_SRC_IN_EXT, VK_BLEND_OP_DST_IN_EXT, VK_BLEND_OP_SRC_OUT_EXT, VK_BLEND_OP_DST_OUT_EXT, VK_BLEND_OP_SRC_ATOP_EXT, VK_BLEND_OP_DST_ATOP_EXT, VK_BLEND_OP_XOR_EXT, VK_BLEND_OP_MULTIPLY_EXT, VK_BLEND_OP_SCREEN_EXT, VK_BLEND_OP_OVERLAY_EXT, VK_BLEND_OP_DARKEN_EXT, VK_BLEND_OP_LIGHTEN_EXT, VK_BLEND_OP_COLORDODGE_EXT, VK_BLEND_OP_COLORBURN_EXT, VK_BLEND_OP_HARDLIGHT_EXT, VK_BLEND_OP_SOFTLIGHT_EXT, VK_BLEND_OP_DIFFERENCE_EXT, VK_BLEND_OP_EXCLUSION_EXT, VK_BLEND_OP_INVERT_EXT, VK_BLEND_OP_INVERT_RGB_EXT, VK_BLEND_OP_LINEARDODGE_EXT, VK_BLEND_OP_LINEARBURN_EXT, VK_BLEND_OP_VIVIDLIGHT_EXT, VK_BLEND_OP_LINEARLIGHT_EXT, VK_BLEND_OP_PINLIGHT_EXT, VK_BLEND_OP_HARDMIX_EXT, VK_BLEND_OP_HSL_HUE_EXT, VK_BLEND_OP_HSL_SATURATION_EXT, VK_BLEND_OP_HSL_COLOR_EXT, VK_BLEND_OP_HSL_LUMINOSITY_EXT, VK_BLEND_OP_PLUS_EXT, VK_BLEND_OP_PLUS_CLAMPED_EXT, VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, VK_BLEND_OP_PLUS_DARKER_EXT, VK_BLEND_OP_MINUS_EXT, VK_BLEND_OP_MINUS_CLAMPED_EXT, VK_BLEND_OP_CONTRAST_EXT, VK_BLEND_OP_INVERT_OVG_EXT, VK_BLEND_OP_RED_EXT, VK_BLEND_OP_GREEN_EXT, VK_BLEND_OP_BLUE_EXT, };
133*b7893ccfSSadaf Ebrahimi const std::vector<VkDynamicState> AllVkDynamicStateEnums = {VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_LINE_WIDTH, VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, };
134*b7893ccfSSadaf Ebrahimi const std::vector<VkFilter> AllVkFilterEnums = {VK_FILTER_NEAREST, VK_FILTER_LINEAR, VK_FILTER_CUBIC_IMG, VK_FILTER_CUBIC_EXT, };
135*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerMipmapMode> AllVkSamplerMipmapModeEnums = {VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_MIPMAP_MODE_LINEAR, };
136*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerAddressMode> AllVkSamplerAddressModeEnums = {VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR, };
137*b7893ccfSSadaf Ebrahimi const std::vector<VkBorderColor> AllVkBorderColorEnums = {VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, VK_BORDER_COLOR_INT_OPAQUE_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, VK_BORDER_COLOR_INT_OPAQUE_WHITE, };
138*b7893ccfSSadaf Ebrahimi const std::vector<VkDescriptorType> AllVkDescriptorTypeEnums = {VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, };
139*b7893ccfSSadaf Ebrahimi const std::vector<VkAttachmentLoadOp> AllVkAttachmentLoadOpEnums = {VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_DONT_CARE, };
140*b7893ccfSSadaf Ebrahimi const std::vector<VkAttachmentStoreOp> AllVkAttachmentStoreOpEnums = {VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_STORE_OP_DONT_CARE, };
141*b7893ccfSSadaf Ebrahimi const std::vector<VkPipelineBindPoint> AllVkPipelineBindPointEnums = {VK_PIPELINE_BIND_POINT_GRAPHICS, VK_PIPELINE_BIND_POINT_COMPUTE, VK_PIPELINE_BIND_POINT_RAY_TRACING_NV, };
142*b7893ccfSSadaf Ebrahimi const std::vector<VkCommandBufferLevel> AllVkCommandBufferLevelEnums = {VK_COMMAND_BUFFER_LEVEL_PRIMARY, VK_COMMAND_BUFFER_LEVEL_SECONDARY, };
143*b7893ccfSSadaf Ebrahimi const std::vector<VkIndexType> AllVkIndexTypeEnums = {VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_UINT32, VK_INDEX_TYPE_NONE_NV, VK_INDEX_TYPE_UINT8_EXT, };
144*b7893ccfSSadaf Ebrahimi const std::vector<VkSubpassContents> AllVkSubpassContentsEnums = {VK_SUBPASS_CONTENTS_INLINE, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, };
145*b7893ccfSSadaf Ebrahimi const std::vector<VkObjectType> AllVkObjectTypeEnums = {VK_OBJECT_TYPE_UNKNOWN, VK_OBJECT_TYPE_INSTANCE, VK_OBJECT_TYPE_PHYSICAL_DEVICE, VK_OBJECT_TYPE_DEVICE, VK_OBJECT_TYPE_QUEUE, VK_OBJECT_TYPE_SEMAPHORE, VK_OBJECT_TYPE_COMMAND_BUFFER, VK_OBJECT_TYPE_FENCE, VK_OBJECT_TYPE_DEVICE_MEMORY, VK_OBJECT_TYPE_BUFFER, VK_OBJECT_TYPE_IMAGE, VK_OBJECT_TYPE_EVENT, VK_OBJECT_TYPE_QUERY_POOL, VK_OBJECT_TYPE_BUFFER_VIEW, VK_OBJECT_TYPE_IMAGE_VIEW, VK_OBJECT_TYPE_SHADER_MODULE, VK_OBJECT_TYPE_PIPELINE_CACHE, VK_OBJECT_TYPE_PIPELINE_LAYOUT, VK_OBJECT_TYPE_RENDER_PASS, VK_OBJECT_TYPE_PIPELINE, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, VK_OBJECT_TYPE_SAMPLER, VK_OBJECT_TYPE_DESCRIPTOR_POOL, VK_OBJECT_TYPE_DESCRIPTOR_SET, VK_OBJECT_TYPE_FRAMEBUFFER, VK_OBJECT_TYPE_COMMAND_POOL, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, VK_OBJECT_TYPE_SURFACE_KHR, VK_OBJECT_TYPE_SWAPCHAIN_KHR, VK_OBJECT_TYPE_DISPLAY_KHR, VK_OBJECT_TYPE_DISPLAY_MODE_KHR, VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, VK_OBJECT_TYPE_OBJECT_TABLE_NVX, VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX, VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR, VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, };
146*b7893ccfSSadaf Ebrahimi const std::vector<VkVendorId> AllVkVendorIdEnums = {VK_VENDOR_ID_VIV, VK_VENDOR_ID_VSI, VK_VENDOR_ID_KAZAN, };
147*b7893ccfSSadaf Ebrahimi const std::vector<VkPointClippingBehavior> AllVkPointClippingBehaviorEnums = {VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR, };
148*b7893ccfSSadaf Ebrahimi const std::vector<VkTessellationDomainOrigin> AllVkTessellationDomainOriginEnums = {VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR, };
149*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerYcbcrModelConversion> AllVkSamplerYcbcrModelConversionEnums = {VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR, };
150*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerYcbcrRange> AllVkSamplerYcbcrRangeEnums = {VK_SAMPLER_YCBCR_RANGE_ITU_FULL, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR, };
151*b7893ccfSSadaf Ebrahimi const std::vector<VkChromaLocation> AllVkChromaLocationEnums = {VK_CHROMA_LOCATION_COSITED_EVEN, VK_CHROMA_LOCATION_MIDPOINT, VK_CHROMA_LOCATION_COSITED_EVEN_KHR, VK_CHROMA_LOCATION_MIDPOINT_KHR, };
152*b7893ccfSSadaf Ebrahimi const std::vector<VkDescriptorUpdateTemplateType> AllVkDescriptorUpdateTemplateTypeEnums = {VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, };
153*b7893ccfSSadaf Ebrahimi const std::vector<VkColorSpaceKHR> AllVkColorSpaceKHREnums = {VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, VK_COLORSPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT, VK_COLOR_SPACE_BT709_LINEAR_EXT, VK_COLOR_SPACE_BT709_NONLINEAR_EXT, VK_COLOR_SPACE_BT2020_LINEAR_EXT, VK_COLOR_SPACE_HDR10_ST2084_EXT, VK_COLOR_SPACE_DOLBYVISION_EXT, VK_COLOR_SPACE_HDR10_HLG_EXT, VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, VK_COLOR_SPACE_PASS_THROUGH_EXT, VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, VK_COLOR_SPACE_DCI_P3_LINEAR_EXT, VK_COLOR_SPACE_DISPLAY_NATIVE_AMD, };
154*b7893ccfSSadaf Ebrahimi const std::vector<VkPresentModeKHR> AllVkPresentModeKHREnums = {VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR, VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR, VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR, };
155*b7893ccfSSadaf Ebrahimi const std::vector<VkDescriptorUpdateTemplateTypeKHR> AllVkDescriptorUpdateTemplateTypeKHREnums = {VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, };
156*b7893ccfSSadaf Ebrahimi const std::vector<VkPointClippingBehaviorKHR> AllVkPointClippingBehaviorKHREnums = {VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR, };
157*b7893ccfSSadaf Ebrahimi const std::vector<VkTessellationDomainOriginKHR> AllVkTessellationDomainOriginKHREnums = {VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR, };
158*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerYcbcrModelConversionKHR> AllVkSamplerYcbcrModelConversionKHREnums = {VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR, };
159*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerYcbcrRangeKHR> AllVkSamplerYcbcrRangeKHREnums = {VK_SAMPLER_YCBCR_RANGE_ITU_FULL, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR, };
160*b7893ccfSSadaf Ebrahimi const std::vector<VkChromaLocationKHR> AllVkChromaLocationKHREnums = {VK_CHROMA_LOCATION_COSITED_EVEN, VK_CHROMA_LOCATION_MIDPOINT, VK_CHROMA_LOCATION_COSITED_EVEN_KHR, VK_CHROMA_LOCATION_MIDPOINT_KHR, };
161*b7893ccfSSadaf Ebrahimi const std::vector<VkDriverIdKHR> AllVkDriverIdKHREnums = {VK_DRIVER_ID_AMD_PROPRIETARY_KHR, VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR, VK_DRIVER_ID_MESA_RADV_KHR, VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR, VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR, VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR, VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR, VK_DRIVER_ID_ARM_PROPRIETARY_KHR, VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR, VK_DRIVER_ID_GGP_PROPRIETARY_KHR, VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR, };
162*b7893ccfSSadaf Ebrahimi const std::vector<VkShaderFloatControlsIndependenceKHR> AllVkShaderFloatControlsIndependenceKHREnums = {VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR, VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR, };
163*b7893ccfSSadaf Ebrahimi const std::vector<VkPipelineExecutableStatisticFormatKHR> AllVkPipelineExecutableStatisticFormatKHREnums = {VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR, VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR, VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR, VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR, };
164*b7893ccfSSadaf Ebrahimi const std::vector<VkDebugReportObjectTypeEXT> AllVkDebugReportObjectTypeEXTEnums = {VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, };
165*b7893ccfSSadaf Ebrahimi const std::vector<VkRasterizationOrderAMD> AllVkRasterizationOrderAMDEnums = {VK_RASTERIZATION_ORDER_STRICT_AMD, VK_RASTERIZATION_ORDER_RELAXED_AMD, };
166*b7893ccfSSadaf Ebrahimi const std::vector<VkShaderInfoTypeAMD> AllVkShaderInfoTypeAMDEnums = {VK_SHADER_INFO_TYPE_STATISTICS_AMD, VK_SHADER_INFO_TYPE_BINARY_AMD, VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, };
167*b7893ccfSSadaf Ebrahimi const std::vector<VkValidationCheckEXT> AllVkValidationCheckEXTEnums = {VK_VALIDATION_CHECK_ALL_EXT, VK_VALIDATION_CHECK_SHADERS_EXT, };
168*b7893ccfSSadaf Ebrahimi const std::vector<VkIndirectCommandsTokenTypeNVX> AllVkIndirectCommandsTokenTypeNVXEnums = {VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX, };
169*b7893ccfSSadaf Ebrahimi const std::vector<VkObjectEntryTypeNVX> AllVkObjectEntryTypeNVXEnums = {VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX, VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX, VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX, VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX, VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX, };
170*b7893ccfSSadaf Ebrahimi const std::vector<VkDisplayPowerStateEXT> AllVkDisplayPowerStateEXTEnums = {VK_DISPLAY_POWER_STATE_OFF_EXT, VK_DISPLAY_POWER_STATE_SUSPEND_EXT, VK_DISPLAY_POWER_STATE_ON_EXT, };
171*b7893ccfSSadaf Ebrahimi const std::vector<VkDeviceEventTypeEXT> AllVkDeviceEventTypeEXTEnums = {VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, };
172*b7893ccfSSadaf Ebrahimi const std::vector<VkDisplayEventTypeEXT> AllVkDisplayEventTypeEXTEnums = {VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, };
173*b7893ccfSSadaf Ebrahimi const std::vector<VkViewportCoordinateSwizzleNV> AllVkViewportCoordinateSwizzleNVEnums = {VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV, };
174*b7893ccfSSadaf Ebrahimi const std::vector<VkDiscardRectangleModeEXT> AllVkDiscardRectangleModeEXTEnums = {VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT, };
175*b7893ccfSSadaf Ebrahimi const std::vector<VkConservativeRasterizationModeEXT> AllVkConservativeRasterizationModeEXTEnums = {VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT, };
176*b7893ccfSSadaf Ebrahimi const std::vector<VkSamplerReductionModeEXT> AllVkSamplerReductionModeEXTEnums = {VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, VK_SAMPLER_REDUCTION_MODE_MIN_EXT, VK_SAMPLER_REDUCTION_MODE_MAX_EXT, };
177*b7893ccfSSadaf Ebrahimi const std::vector<VkBlendOverlapEXT> AllVkBlendOverlapEXTEnums = {VK_BLEND_OVERLAP_UNCORRELATED_EXT, VK_BLEND_OVERLAP_DISJOINT_EXT, VK_BLEND_OVERLAP_CONJOINT_EXT, };
178*b7893ccfSSadaf Ebrahimi const std::vector<VkCoverageModulationModeNV> AllVkCoverageModulationModeNVEnums = {VK_COVERAGE_MODULATION_MODE_NONE_NV, VK_COVERAGE_MODULATION_MODE_RGB_NV, VK_COVERAGE_MODULATION_MODE_ALPHA_NV, VK_COVERAGE_MODULATION_MODE_RGBA_NV, };
179*b7893ccfSSadaf Ebrahimi const std::vector<VkValidationCacheHeaderVersionEXT> AllVkValidationCacheHeaderVersionEXTEnums = {VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, };
180*b7893ccfSSadaf Ebrahimi const std::vector<VkShadingRatePaletteEntryNV> AllVkShadingRatePaletteEntryNVEnums = {VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV, VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV, VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV, VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV, };
181*b7893ccfSSadaf Ebrahimi const std::vector<VkCoarseSampleOrderTypeNV> AllVkCoarseSampleOrderTypeNVEnums = {VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV, VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV, VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV, };
182*b7893ccfSSadaf Ebrahimi const std::vector<VkAccelerationStructureTypeNV> AllVkAccelerationStructureTypeNVEnums = {VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV, VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV, };
183*b7893ccfSSadaf Ebrahimi const std::vector<VkRayTracingShaderGroupTypeNV> AllVkRayTracingShaderGroupTypeNVEnums = {VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV, VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV, VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV, };
184*b7893ccfSSadaf Ebrahimi const std::vector<VkGeometryTypeNV> AllVkGeometryTypeNVEnums = {VK_GEOMETRY_TYPE_TRIANGLES_NV, VK_GEOMETRY_TYPE_AABBS_NV, };
185*b7893ccfSSadaf Ebrahimi const std::vector<VkCopyAccelerationStructureModeNV> AllVkCopyAccelerationStructureModeNVEnums = {VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV, VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV, };
186*b7893ccfSSadaf Ebrahimi const std::vector<VkAccelerationStructureMemoryRequirementsTypeNV> AllVkAccelerationStructureMemoryRequirementsTypeNVEnums = {VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV, VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV, VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV, };
187*b7893ccfSSadaf Ebrahimi const std::vector<VkQueueGlobalPriorityEXT> AllVkQueueGlobalPriorityEXTEnums = {VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT, VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT, VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, };
188*b7893ccfSSadaf Ebrahimi const std::vector<VkTimeDomainEXT> AllVkTimeDomainEXTEnums = {VK_TIME_DOMAIN_DEVICE_EXT, VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT, };
189*b7893ccfSSadaf Ebrahimi const std::vector<VkMemoryOverallocationBehaviorAMD> AllVkMemoryOverallocationBehaviorAMDEnums = {VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD, };
190*b7893ccfSSadaf Ebrahimi const std::vector<VkPerformanceConfigurationTypeINTEL> AllVkPerformanceConfigurationTypeINTELEnums = {VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL, };
191*b7893ccfSSadaf Ebrahimi const std::vector<VkQueryPoolSamplingModeINTEL> AllVkQueryPoolSamplingModeINTELEnums = {VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL, };
192*b7893ccfSSadaf Ebrahimi const std::vector<VkPerformanceOverrideTypeINTEL> AllVkPerformanceOverrideTypeINTELEnums = {VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL, };
193*b7893ccfSSadaf Ebrahimi const std::vector<VkPerformanceParameterTypeINTEL> AllVkPerformanceParameterTypeINTELEnums = {VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL, };
194*b7893ccfSSadaf Ebrahimi const std::vector<VkPerformanceValueTypeINTEL> AllVkPerformanceValueTypeINTELEnums = {VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL, VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL, VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL, VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL, VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL, };
195*b7893ccfSSadaf Ebrahimi const std::vector<VkValidationFeatureEnableEXT> AllVkValidationFeatureEnableEXTEnums = {VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, };
196*b7893ccfSSadaf Ebrahimi const std::vector<VkValidationFeatureDisableEXT> AllVkValidationFeatureDisableEXTEnums = {VK_VALIDATION_FEATURE_DISABLE_ALL_EXT, VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT, VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT, VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT, VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT, VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, };
197*b7893ccfSSadaf Ebrahimi const std::vector<VkComponentTypeNV> AllVkComponentTypeNVEnums = {VK_COMPONENT_TYPE_FLOAT16_NV, VK_COMPONENT_TYPE_FLOAT32_NV, VK_COMPONENT_TYPE_FLOAT64_NV, VK_COMPONENT_TYPE_SINT8_NV, VK_COMPONENT_TYPE_SINT16_NV, VK_COMPONENT_TYPE_SINT32_NV, VK_COMPONENT_TYPE_SINT64_NV, VK_COMPONENT_TYPE_UINT8_NV, VK_COMPONENT_TYPE_UINT16_NV, VK_COMPONENT_TYPE_UINT32_NV, VK_COMPONENT_TYPE_UINT64_NV, };
198*b7893ccfSSadaf Ebrahimi const std::vector<VkScopeNV> AllVkScopeNVEnums = {VK_SCOPE_DEVICE_NV, VK_SCOPE_WORKGROUP_NV, VK_SCOPE_SUBGROUP_NV, VK_SCOPE_QUEUE_FAMILY_NV, };
199*b7893ccfSSadaf Ebrahimi const std::vector<VkCoverageReductionModeNV> AllVkCoverageReductionModeNVEnums = {VK_COVERAGE_REDUCTION_MODE_MERGE_NV, VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV, };
200*b7893ccfSSadaf Ebrahimi
201*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
202*b7893ccfSSadaf Ebrahimi const std::vector<VkFullScreenExclusiveEXT> AllVkFullScreenExclusiveEXTEnums = {VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT, VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT, VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT, VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, };
203*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
204*b7893ccfSSadaf Ebrahimi const std::vector<VkLineRasterizationModeEXT> AllVkLineRasterizationModeEXTEnums = {VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, };
205*b7893ccfSSadaf Ebrahimi
206*b7893ccfSSadaf Ebrahimi
ValidatePnextStructContents(const char * api_name,const ParameterName & parameter_name,const VkBaseOutStructure * header)207*b7893ccfSSadaf Ebrahimi bool StatelessValidation::ValidatePnextStructContents(const char *api_name, const ParameterName ¶meter_name, const VkBaseOutStructure* header) {
208*b7893ccfSSadaf Ebrahimi bool skip = false;
209*b7893ccfSSadaf Ebrahimi switch(header->sType) {
210*b7893ccfSSadaf Ebrahimi
211*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDevice16BitStorageFeatures structure members
212*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
213*b7893ccfSSadaf Ebrahimi VkPhysicalDevice16BitStorageFeatures *structure = (VkPhysicalDevice16BitStorageFeatures *) header;
214*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice16BitStorageFeatures", "storageBuffer16BitAccess", structure->storageBuffer16BitAccess);
215*b7893ccfSSadaf Ebrahimi
216*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice16BitStorageFeatures", "uniformAndStorageBuffer16BitAccess", structure->uniformAndStorageBuffer16BitAccess);
217*b7893ccfSSadaf Ebrahimi
218*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice16BitStorageFeatures", "storagePushConstant16", structure->storagePushConstant16);
219*b7893ccfSSadaf Ebrahimi
220*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice16BitStorageFeatures", "storageInputOutput16", structure->storageInputOutput16);
221*b7893ccfSSadaf Ebrahimi } break;
222*b7893ccfSSadaf Ebrahimi
223*b7893ccfSSadaf Ebrahimi // Validation code for VkMemoryAllocateFlagsInfo structure members
224*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
225*b7893ccfSSadaf Ebrahimi VkMemoryAllocateFlagsInfo *structure = (VkMemoryAllocateFlagsInfo *) header;
226*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkMemoryAllocateFlagsInfo", "flags", "VkMemoryAllocateFlagBits", AllVkMemoryAllocateFlagBits, structure->flags, kOptionalFlags, "VUID-VkMemoryAllocateFlagsInfo-flags-parameter");
227*b7893ccfSSadaf Ebrahimi } break;
228*b7893ccfSSadaf Ebrahimi
229*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceGroupRenderPassBeginInfo structure members
230*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
231*b7893ccfSSadaf Ebrahimi VkDeviceGroupRenderPassBeginInfo *structure = (VkDeviceGroupRenderPassBeginInfo *) header;
232*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupRenderPassBeginInfo", "deviceRenderAreaCount", "pDeviceRenderAreas", structure->deviceRenderAreaCount, &structure->pDeviceRenderAreas, false, true, kVUIDUndefined, "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter");
233*b7893ccfSSadaf Ebrahimi
234*b7893ccfSSadaf Ebrahimi if (structure->pDeviceRenderAreas != NULL)
235*b7893ccfSSadaf Ebrahimi {
236*b7893ccfSSadaf Ebrahimi for (uint32_t deviceRenderAreaIndex = 0; deviceRenderAreaIndex < structure->deviceRenderAreaCount; ++deviceRenderAreaIndex)
237*b7893ccfSSadaf Ebrahimi {
238*b7893ccfSSadaf Ebrahimi }
239*b7893ccfSSadaf Ebrahimi }
240*b7893ccfSSadaf Ebrahimi } break;
241*b7893ccfSSadaf Ebrahimi
242*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceGroupSubmitInfo structure members
243*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
244*b7893ccfSSadaf Ebrahimi VkDeviceGroupSubmitInfo *structure = (VkDeviceGroupSubmitInfo *) header;
245*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupSubmitInfo", "waitSemaphoreCount", "pWaitSemaphoreDeviceIndices", structure->waitSemaphoreCount, &structure->pWaitSemaphoreDeviceIndices, false, true, kVUIDUndefined, "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter");
246*b7893ccfSSadaf Ebrahimi
247*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupSubmitInfo", "commandBufferCount", "pCommandBufferDeviceMasks", structure->commandBufferCount, &structure->pCommandBufferDeviceMasks, false, true, kVUIDUndefined, "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter");
248*b7893ccfSSadaf Ebrahimi
249*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupSubmitInfo", "signalSemaphoreCount", "pSignalSemaphoreDeviceIndices", structure->signalSemaphoreCount, &structure->pSignalSemaphoreDeviceIndices, false, true, kVUIDUndefined, "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter");
250*b7893ccfSSadaf Ebrahimi } break;
251*b7893ccfSSadaf Ebrahimi
252*b7893ccfSSadaf Ebrahimi // Validation code for VkBindBufferMemoryDeviceGroupInfo structure members
253*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
254*b7893ccfSSadaf Ebrahimi VkBindBufferMemoryDeviceGroupInfo *structure = (VkBindBufferMemoryDeviceGroupInfo *) header;
255*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkBindBufferMemoryDeviceGroupInfo", "deviceIndexCount", "pDeviceIndices", structure->deviceIndexCount, &structure->pDeviceIndices, false, true, kVUIDUndefined, "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter");
256*b7893ccfSSadaf Ebrahimi } break;
257*b7893ccfSSadaf Ebrahimi
258*b7893ccfSSadaf Ebrahimi // Validation code for VkBindImageMemoryDeviceGroupInfo structure members
259*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
260*b7893ccfSSadaf Ebrahimi VkBindImageMemoryDeviceGroupInfo *structure = (VkBindImageMemoryDeviceGroupInfo *) header;
261*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkBindImageMemoryDeviceGroupInfo", "deviceIndexCount", "pDeviceIndices", structure->deviceIndexCount, &structure->pDeviceIndices, false, true, kVUIDUndefined, "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter");
262*b7893ccfSSadaf Ebrahimi
263*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkBindImageMemoryDeviceGroupInfo", "splitInstanceBindRegionCount", "pSplitInstanceBindRegions", structure->splitInstanceBindRegionCount, &structure->pSplitInstanceBindRegions, false, true, kVUIDUndefined, "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter");
264*b7893ccfSSadaf Ebrahimi
265*b7893ccfSSadaf Ebrahimi if (structure->pSplitInstanceBindRegions != NULL)
266*b7893ccfSSadaf Ebrahimi {
267*b7893ccfSSadaf Ebrahimi for (uint32_t splitInstanceBindRegionIndex = 0; splitInstanceBindRegionIndex < structure->splitInstanceBindRegionCount; ++splitInstanceBindRegionIndex)
268*b7893ccfSSadaf Ebrahimi {
269*b7893ccfSSadaf Ebrahimi }
270*b7893ccfSSadaf Ebrahimi }
271*b7893ccfSSadaf Ebrahimi } break;
272*b7893ccfSSadaf Ebrahimi
273*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceGroupDeviceCreateInfo structure members
274*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
275*b7893ccfSSadaf Ebrahimi VkDeviceGroupDeviceCreateInfo *structure = (VkDeviceGroupDeviceCreateInfo *) header;
276*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupDeviceCreateInfo", "physicalDeviceCount", "pPhysicalDevices", structure->physicalDeviceCount, &structure->pPhysicalDevices, false, true, kVUIDUndefined, "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter");
277*b7893ccfSSadaf Ebrahimi } break;
278*b7893ccfSSadaf Ebrahimi
279*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceFeatures2 structure members
280*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
281*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures2 *structure = (VkPhysicalDeviceFeatures2 *) header;
282*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.robustBufferAccess", structure->features.robustBufferAccess);
283*b7893ccfSSadaf Ebrahimi
284*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.fullDrawIndexUint32", structure->features.fullDrawIndexUint32);
285*b7893ccfSSadaf Ebrahimi
286*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.imageCubeArray", structure->features.imageCubeArray);
287*b7893ccfSSadaf Ebrahimi
288*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.independentBlend", structure->features.independentBlend);
289*b7893ccfSSadaf Ebrahimi
290*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.geometryShader", structure->features.geometryShader);
291*b7893ccfSSadaf Ebrahimi
292*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.tessellationShader", structure->features.tessellationShader);
293*b7893ccfSSadaf Ebrahimi
294*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sampleRateShading", structure->features.sampleRateShading);
295*b7893ccfSSadaf Ebrahimi
296*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.dualSrcBlend", structure->features.dualSrcBlend);
297*b7893ccfSSadaf Ebrahimi
298*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.logicOp", structure->features.logicOp);
299*b7893ccfSSadaf Ebrahimi
300*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.multiDrawIndirect", structure->features.multiDrawIndirect);
301*b7893ccfSSadaf Ebrahimi
302*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.drawIndirectFirstInstance", structure->features.drawIndirectFirstInstance);
303*b7893ccfSSadaf Ebrahimi
304*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.depthClamp", structure->features.depthClamp);
305*b7893ccfSSadaf Ebrahimi
306*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.depthBiasClamp", structure->features.depthBiasClamp);
307*b7893ccfSSadaf Ebrahimi
308*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.fillModeNonSolid", structure->features.fillModeNonSolid);
309*b7893ccfSSadaf Ebrahimi
310*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.depthBounds", structure->features.depthBounds);
311*b7893ccfSSadaf Ebrahimi
312*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.wideLines", structure->features.wideLines);
313*b7893ccfSSadaf Ebrahimi
314*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.largePoints", structure->features.largePoints);
315*b7893ccfSSadaf Ebrahimi
316*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.alphaToOne", structure->features.alphaToOne);
317*b7893ccfSSadaf Ebrahimi
318*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.multiViewport", structure->features.multiViewport);
319*b7893ccfSSadaf Ebrahimi
320*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.samplerAnisotropy", structure->features.samplerAnisotropy);
321*b7893ccfSSadaf Ebrahimi
322*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.textureCompressionETC2", structure->features.textureCompressionETC2);
323*b7893ccfSSadaf Ebrahimi
324*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.textureCompressionASTC_LDR", structure->features.textureCompressionASTC_LDR);
325*b7893ccfSSadaf Ebrahimi
326*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.textureCompressionBC", structure->features.textureCompressionBC);
327*b7893ccfSSadaf Ebrahimi
328*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.occlusionQueryPrecise", structure->features.occlusionQueryPrecise);
329*b7893ccfSSadaf Ebrahimi
330*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.pipelineStatisticsQuery", structure->features.pipelineStatisticsQuery);
331*b7893ccfSSadaf Ebrahimi
332*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.vertexPipelineStoresAndAtomics", structure->features.vertexPipelineStoresAndAtomics);
333*b7893ccfSSadaf Ebrahimi
334*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.fragmentStoresAndAtomics", structure->features.fragmentStoresAndAtomics);
335*b7893ccfSSadaf Ebrahimi
336*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderTessellationAndGeometryPointSize", structure->features.shaderTessellationAndGeometryPointSize);
337*b7893ccfSSadaf Ebrahimi
338*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderImageGatherExtended", structure->features.shaderImageGatherExtended);
339*b7893ccfSSadaf Ebrahimi
340*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageImageExtendedFormats", structure->features.shaderStorageImageExtendedFormats);
341*b7893ccfSSadaf Ebrahimi
342*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageImageMultisample", structure->features.shaderStorageImageMultisample);
343*b7893ccfSSadaf Ebrahimi
344*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageImageReadWithoutFormat", structure->features.shaderStorageImageReadWithoutFormat);
345*b7893ccfSSadaf Ebrahimi
346*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageImageWriteWithoutFormat", structure->features.shaderStorageImageWriteWithoutFormat);
347*b7893ccfSSadaf Ebrahimi
348*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderUniformBufferArrayDynamicIndexing", structure->features.shaderUniformBufferArrayDynamicIndexing);
349*b7893ccfSSadaf Ebrahimi
350*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderSampledImageArrayDynamicIndexing", structure->features.shaderSampledImageArrayDynamicIndexing);
351*b7893ccfSSadaf Ebrahimi
352*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageBufferArrayDynamicIndexing", structure->features.shaderStorageBufferArrayDynamicIndexing);
353*b7893ccfSSadaf Ebrahimi
354*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderStorageImageArrayDynamicIndexing", structure->features.shaderStorageImageArrayDynamicIndexing);
355*b7893ccfSSadaf Ebrahimi
356*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderClipDistance", structure->features.shaderClipDistance);
357*b7893ccfSSadaf Ebrahimi
358*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderCullDistance", structure->features.shaderCullDistance);
359*b7893ccfSSadaf Ebrahimi
360*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderFloat64", structure->features.shaderFloat64);
361*b7893ccfSSadaf Ebrahimi
362*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderInt64", structure->features.shaderInt64);
363*b7893ccfSSadaf Ebrahimi
364*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderInt16", structure->features.shaderInt16);
365*b7893ccfSSadaf Ebrahimi
366*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderResourceResidency", structure->features.shaderResourceResidency);
367*b7893ccfSSadaf Ebrahimi
368*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.shaderResourceMinLod", structure->features.shaderResourceMinLod);
369*b7893ccfSSadaf Ebrahimi
370*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseBinding", structure->features.sparseBinding);
371*b7893ccfSSadaf Ebrahimi
372*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidencyBuffer", structure->features.sparseResidencyBuffer);
373*b7893ccfSSadaf Ebrahimi
374*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidencyImage2D", structure->features.sparseResidencyImage2D);
375*b7893ccfSSadaf Ebrahimi
376*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidencyImage3D", structure->features.sparseResidencyImage3D);
377*b7893ccfSSadaf Ebrahimi
378*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidency2Samples", structure->features.sparseResidency2Samples);
379*b7893ccfSSadaf Ebrahimi
380*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidency4Samples", structure->features.sparseResidency4Samples);
381*b7893ccfSSadaf Ebrahimi
382*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidency8Samples", structure->features.sparseResidency8Samples);
383*b7893ccfSSadaf Ebrahimi
384*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidency16Samples", structure->features.sparseResidency16Samples);
385*b7893ccfSSadaf Ebrahimi
386*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.sparseResidencyAliased", structure->features.sparseResidencyAliased);
387*b7893ccfSSadaf Ebrahimi
388*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.variableMultisampleRate", structure->features.variableMultisampleRate);
389*b7893ccfSSadaf Ebrahimi
390*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFeatures2", "features.inheritedQueries", structure->features.inheritedQueries);
391*b7893ccfSSadaf Ebrahimi } break;
392*b7893ccfSSadaf Ebrahimi
393*b7893ccfSSadaf Ebrahimi // Validation code for VkRenderPassInputAttachmentAspectCreateInfo structure members
394*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
395*b7893ccfSSadaf Ebrahimi VkRenderPassInputAttachmentAspectCreateInfo *structure = (VkRenderPassInputAttachmentAspectCreateInfo *) header;
396*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassInputAttachmentAspectCreateInfo", "aspectReferenceCount", "pAspectReferences", structure->aspectReferenceCount, &structure->pAspectReferences, true, true, "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength", "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter");
397*b7893ccfSSadaf Ebrahimi
398*b7893ccfSSadaf Ebrahimi if (structure->pAspectReferences != NULL)
399*b7893ccfSSadaf Ebrahimi {
400*b7893ccfSSadaf Ebrahimi for (uint32_t aspectReferenceIndex = 0; aspectReferenceIndex < structure->aspectReferenceCount; ++aspectReferenceIndex)
401*b7893ccfSSadaf Ebrahimi {
402*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkRenderPassInputAttachmentAspectCreateInfo", ParameterName("pAspectReferences[%i].aspectMask", ParameterName::IndexVector{ aspectReferenceIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, structure->pAspectReferences[aspectReferenceIndex].aspectMask, kRequiredFlags, "VUID-VkInputAttachmentAspectReference-aspectMask-parameter", "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask");
403*b7893ccfSSadaf Ebrahimi }
404*b7893ccfSSadaf Ebrahimi }
405*b7893ccfSSadaf Ebrahimi } break;
406*b7893ccfSSadaf Ebrahimi
407*b7893ccfSSadaf Ebrahimi // Validation code for VkImageViewUsageCreateInfo structure members
408*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
409*b7893ccfSSadaf Ebrahimi VkImageViewUsageCreateInfo *structure = (VkImageViewUsageCreateInfo *) header;
410*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImageViewUsageCreateInfo", "usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, structure->usage, kRequiredFlags, "VUID-VkImageViewUsageCreateInfo-usage-parameter", "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask");
411*b7893ccfSSadaf Ebrahimi } break;
412*b7893ccfSSadaf Ebrahimi
413*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineTessellationDomainOriginStateCreateInfo structure members
414*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
415*b7893ccfSSadaf Ebrahimi VkPipelineTessellationDomainOriginStateCreateInfo *structure = (VkPipelineTessellationDomainOriginStateCreateInfo *) header;
416*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineTessellationDomainOriginStateCreateInfo", "domainOrigin", "VkTessellationDomainOrigin", AllVkTessellationDomainOriginEnums, structure->domainOrigin, "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter");
417*b7893ccfSSadaf Ebrahimi } break;
418*b7893ccfSSadaf Ebrahimi
419*b7893ccfSSadaf Ebrahimi // Validation code for VkRenderPassMultiviewCreateInfo structure members
420*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
421*b7893ccfSSadaf Ebrahimi VkRenderPassMultiviewCreateInfo *structure = (VkRenderPassMultiviewCreateInfo *) header;
422*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassMultiviewCreateInfo", "subpassCount", "pViewMasks", structure->subpassCount, &structure->pViewMasks, false, true, kVUIDUndefined, "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter");
423*b7893ccfSSadaf Ebrahimi
424*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassMultiviewCreateInfo", "dependencyCount", "pViewOffsets", structure->dependencyCount, &structure->pViewOffsets, false, true, kVUIDUndefined, "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter");
425*b7893ccfSSadaf Ebrahimi
426*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassMultiviewCreateInfo", "correlationMaskCount", "pCorrelationMasks", structure->correlationMaskCount, &structure->pCorrelationMasks, false, true, kVUIDUndefined, "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter");
427*b7893ccfSSadaf Ebrahimi } break;
428*b7893ccfSSadaf Ebrahimi
429*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceMultiviewFeatures structure members
430*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
431*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMultiviewFeatures *structure = (VkPhysicalDeviceMultiviewFeatures *) header;
432*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMultiviewFeatures", "multiview", structure->multiview);
433*b7893ccfSSadaf Ebrahimi
434*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMultiviewFeatures", "multiviewGeometryShader", structure->multiviewGeometryShader);
435*b7893ccfSSadaf Ebrahimi
436*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMultiviewFeatures", "multiviewTessellationShader", structure->multiviewTessellationShader);
437*b7893ccfSSadaf Ebrahimi } break;
438*b7893ccfSSadaf Ebrahimi
439*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceVariablePointersFeatures structure members
440*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
441*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceVariablePointersFeatures *structure = (VkPhysicalDeviceVariablePointersFeatures *) header;
442*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVariablePointersFeatures", "variablePointersStorageBuffer", structure->variablePointersStorageBuffer);
443*b7893ccfSSadaf Ebrahimi
444*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVariablePointersFeatures", "variablePointers", structure->variablePointers);
445*b7893ccfSSadaf Ebrahimi } break;
446*b7893ccfSSadaf Ebrahimi
447*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceProtectedMemoryFeatures structure members
448*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
449*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProtectedMemoryFeatures *structure = (VkPhysicalDeviceProtectedMemoryFeatures *) header;
450*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceProtectedMemoryFeatures", "protectedMemory", structure->protectedMemory);
451*b7893ccfSSadaf Ebrahimi } break;
452*b7893ccfSSadaf Ebrahimi
453*b7893ccfSSadaf Ebrahimi // Validation code for VkProtectedSubmitInfo structure members
454*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
455*b7893ccfSSadaf Ebrahimi VkProtectedSubmitInfo *structure = (VkProtectedSubmitInfo *) header;
456*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkProtectedSubmitInfo", "protectedSubmit", structure->protectedSubmit);
457*b7893ccfSSadaf Ebrahimi } break;
458*b7893ccfSSadaf Ebrahimi
459*b7893ccfSSadaf Ebrahimi // Validation code for VkSamplerYcbcrConversionInfo structure members
460*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
461*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversionInfo *structure = (VkSamplerYcbcrConversionInfo *) header;
462*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("VkSamplerYcbcrConversionInfo", "conversion", structure->conversion);
463*b7893ccfSSadaf Ebrahimi } break;
464*b7893ccfSSadaf Ebrahimi
465*b7893ccfSSadaf Ebrahimi // Validation code for VkBindImagePlaneMemoryInfo structure members
466*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
467*b7893ccfSSadaf Ebrahimi VkBindImagePlaneMemoryInfo *structure = (VkBindImagePlaneMemoryInfo *) header;
468*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkBindImagePlaneMemoryInfo", "planeAspect", "VkImageAspectFlagBits", AllVkImageAspectFlagBits, structure->planeAspect, kRequiredSingleBit, "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter", "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter");
469*b7893ccfSSadaf Ebrahimi } break;
470*b7893ccfSSadaf Ebrahimi
471*b7893ccfSSadaf Ebrahimi // Validation code for VkImagePlaneMemoryRequirementsInfo structure members
472*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
473*b7893ccfSSadaf Ebrahimi VkImagePlaneMemoryRequirementsInfo *structure = (VkImagePlaneMemoryRequirementsInfo *) header;
474*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImagePlaneMemoryRequirementsInfo", "planeAspect", "VkImageAspectFlagBits", AllVkImageAspectFlagBits, structure->planeAspect, kRequiredSingleBit, "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter", "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter");
475*b7893ccfSSadaf Ebrahimi } break;
476*b7893ccfSSadaf Ebrahimi
477*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceSamplerYcbcrConversionFeatures structure members
478*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
479*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceSamplerYcbcrConversionFeatures *structure = (VkPhysicalDeviceSamplerYcbcrConversionFeatures *) header;
480*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceSamplerYcbcrConversionFeatures", "samplerYcbcrConversion", structure->samplerYcbcrConversion);
481*b7893ccfSSadaf Ebrahimi } break;
482*b7893ccfSSadaf Ebrahimi
483*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceExternalImageFormatInfo structure members
484*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
485*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceExternalImageFormatInfo *structure = (VkPhysicalDeviceExternalImageFormatInfo *) header;
486*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkPhysicalDeviceExternalImageFormatInfo", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleType, kOptionalSingleBit, "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter");
487*b7893ccfSSadaf Ebrahimi } break;
488*b7893ccfSSadaf Ebrahimi
489*b7893ccfSSadaf Ebrahimi // Validation code for VkExternalMemoryImageCreateInfo structure members
490*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
491*b7893ccfSSadaf Ebrahimi VkExternalMemoryImageCreateInfo *structure = (VkExternalMemoryImageCreateInfo *) header;
492*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExternalMemoryImageCreateInfo", "handleTypes", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleTypes, kRequiredFlags, "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter", "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask");
493*b7893ccfSSadaf Ebrahimi } break;
494*b7893ccfSSadaf Ebrahimi
495*b7893ccfSSadaf Ebrahimi // Validation code for VkExternalMemoryBufferCreateInfo structure members
496*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
497*b7893ccfSSadaf Ebrahimi VkExternalMemoryBufferCreateInfo *structure = (VkExternalMemoryBufferCreateInfo *) header;
498*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExternalMemoryBufferCreateInfo", "handleTypes", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleTypes, kOptionalFlags, "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter");
499*b7893ccfSSadaf Ebrahimi } break;
500*b7893ccfSSadaf Ebrahimi
501*b7893ccfSSadaf Ebrahimi // Validation code for VkExportMemoryAllocateInfo structure members
502*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
503*b7893ccfSSadaf Ebrahimi VkExportMemoryAllocateInfo *structure = (VkExportMemoryAllocateInfo *) header;
504*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExportMemoryAllocateInfo", "handleTypes", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleTypes, kOptionalFlags, "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter");
505*b7893ccfSSadaf Ebrahimi } break;
506*b7893ccfSSadaf Ebrahimi
507*b7893ccfSSadaf Ebrahimi // Validation code for VkExportFenceCreateInfo structure members
508*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
509*b7893ccfSSadaf Ebrahimi VkExportFenceCreateInfo *structure = (VkExportFenceCreateInfo *) header;
510*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExportFenceCreateInfo", "handleTypes", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, structure->handleTypes, kOptionalFlags, "VUID-VkExportFenceCreateInfo-handleTypes-parameter");
511*b7893ccfSSadaf Ebrahimi } break;
512*b7893ccfSSadaf Ebrahimi
513*b7893ccfSSadaf Ebrahimi // Validation code for VkExportSemaphoreCreateInfo structure members
514*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
515*b7893ccfSSadaf Ebrahimi VkExportSemaphoreCreateInfo *structure = (VkExportSemaphoreCreateInfo *) header;
516*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExportSemaphoreCreateInfo", "handleTypes", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, structure->handleTypes, kOptionalFlags, "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter");
517*b7893ccfSSadaf Ebrahimi } break;
518*b7893ccfSSadaf Ebrahimi
519*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderDrawParametersFeatures structure members
520*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
521*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderDrawParametersFeatures *structure = (VkPhysicalDeviceShaderDrawParametersFeatures *) header;
522*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderDrawParametersFeatures", "shaderDrawParameters", structure->shaderDrawParameters);
523*b7893ccfSSadaf Ebrahimi } break;
524*b7893ccfSSadaf Ebrahimi
525*b7893ccfSSadaf Ebrahimi // Validation code for VkBindImageMemorySwapchainInfoKHR structure members
526*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
527*b7893ccfSSadaf Ebrahimi VkBindImageMemorySwapchainInfoKHR *structure = (VkBindImageMemorySwapchainInfoKHR *) header;
528*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("VkBindImageMemorySwapchainInfoKHR", "swapchain", structure->swapchain);
529*b7893ccfSSadaf Ebrahimi } break;
530*b7893ccfSSadaf Ebrahimi
531*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceGroupPresentInfoKHR structure members
532*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
533*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentInfoKHR *structure = (VkDeviceGroupPresentInfoKHR *) header;
534*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDeviceGroupPresentInfoKHR", "swapchainCount", "pDeviceMasks", structure->swapchainCount, &structure->pDeviceMasks, false, true, kVUIDUndefined, "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter");
535*b7893ccfSSadaf Ebrahimi
536*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkDeviceGroupPresentInfoKHR", "mode", "VkDeviceGroupPresentModeFlagBitsKHR", AllVkDeviceGroupPresentModeFlagBitsKHR, structure->mode, kRequiredSingleBit, "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter", "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter");
537*b7893ccfSSadaf Ebrahimi } break;
538*b7893ccfSSadaf Ebrahimi
539*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceGroupSwapchainCreateInfoKHR structure members
540*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
541*b7893ccfSSadaf Ebrahimi VkDeviceGroupSwapchainCreateInfoKHR *structure = (VkDeviceGroupSwapchainCreateInfoKHR *) header;
542*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkDeviceGroupSwapchainCreateInfoKHR", "modes", "VkDeviceGroupPresentModeFlagBitsKHR", AllVkDeviceGroupPresentModeFlagBitsKHR, structure->modes, kRequiredFlags, "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter", "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask");
543*b7893ccfSSadaf Ebrahimi } break;
544*b7893ccfSSadaf Ebrahimi
545*b7893ccfSSadaf Ebrahimi // Validation code for VkDisplayPresentInfoKHR structure members
546*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: {
547*b7893ccfSSadaf Ebrahimi VkDisplayPresentInfoKHR *structure = (VkDisplayPresentInfoKHR *) header;
548*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkDisplayPresentInfoKHR", "persistent", structure->persistent);
549*b7893ccfSSadaf Ebrahimi } break;
550*b7893ccfSSadaf Ebrahimi
551*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
552*b7893ccfSSadaf Ebrahimi // Validation code for VkImportMemoryWin32HandleInfoKHR structure members
553*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: {
554*b7893ccfSSadaf Ebrahimi VkImportMemoryWin32HandleInfoKHR *structure = (VkImportMemoryWin32HandleInfoKHR *) header;
555*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImportMemoryWin32HandleInfoKHR", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleType, kOptionalSingleBit, "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter");
556*b7893ccfSSadaf Ebrahimi } break;
557*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
558*b7893ccfSSadaf Ebrahimi
559*b7893ccfSSadaf Ebrahimi // Validation code for VkImportMemoryFdInfoKHR structure members
560*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: {
561*b7893ccfSSadaf Ebrahimi VkImportMemoryFdInfoKHR *structure = (VkImportMemoryFdInfoKHR *) header;
562*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImportMemoryFdInfoKHR", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleType, kOptionalSingleBit, "VUID-VkImportMemoryFdInfoKHR-handleType-parameter");
563*b7893ccfSSadaf Ebrahimi } break;
564*b7893ccfSSadaf Ebrahimi
565*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
566*b7893ccfSSadaf Ebrahimi // Validation code for VkWin32KeyedMutexAcquireReleaseInfoKHR structure members
567*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: {
568*b7893ccfSSadaf Ebrahimi VkWin32KeyedMutexAcquireReleaseInfoKHR *structure = (VkWin32KeyedMutexAcquireReleaseInfoKHR *) header;
569*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoKHR", "acquireCount", "pAcquireSyncs", structure->acquireCount, &structure->pAcquireSyncs, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter");
570*b7893ccfSSadaf Ebrahimi
571*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoKHR", "acquireCount", "pAcquireKeys", structure->acquireCount, &structure->pAcquireKeys, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter");
572*b7893ccfSSadaf Ebrahimi
573*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoKHR", "acquireCount", "pAcquireTimeouts", structure->acquireCount, &structure->pAcquireTimeouts, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter");
574*b7893ccfSSadaf Ebrahimi
575*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoKHR", "releaseCount", "pReleaseSyncs", structure->releaseCount, &structure->pReleaseSyncs, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter");
576*b7893ccfSSadaf Ebrahimi
577*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoKHR", "releaseCount", "pReleaseKeys", structure->releaseCount, &structure->pReleaseKeys, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter");
578*b7893ccfSSadaf Ebrahimi } break;
579*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
580*b7893ccfSSadaf Ebrahimi
581*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderFloat16Int8FeaturesKHR structure members
582*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR: {
583*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderFloat16Int8FeaturesKHR *structure = (VkPhysicalDeviceShaderFloat16Int8FeaturesKHR *) header;
584*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "shaderFloat16", structure->shaderFloat16);
585*b7893ccfSSadaf Ebrahimi
586*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "shaderInt8", structure->shaderInt8);
587*b7893ccfSSadaf Ebrahimi } break;
588*b7893ccfSSadaf Ebrahimi
589*b7893ccfSSadaf Ebrahimi // Validation code for VkPresentRegionsKHR structure members
590*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
591*b7893ccfSSadaf Ebrahimi VkPresentRegionsKHR *structure = (VkPresentRegionsKHR *) header;
592*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPresentRegionsKHR", "swapchainCount", "pRegions", structure->swapchainCount, &structure->pRegions, true, false, "VUID-VkPresentRegionsKHR-swapchainCount-arraylength", "VUID-VkPresentRegionsKHR-pRegions-parameter");
593*b7893ccfSSadaf Ebrahimi
594*b7893ccfSSadaf Ebrahimi if (structure->pRegions != NULL)
595*b7893ccfSSadaf Ebrahimi {
596*b7893ccfSSadaf Ebrahimi for (uint32_t swapchainIndex = 0; swapchainIndex < structure->swapchainCount; ++swapchainIndex)
597*b7893ccfSSadaf Ebrahimi {
598*b7893ccfSSadaf Ebrahimi if (structure->pRegions[swapchainIndex].pRectangles != NULL)
599*b7893ccfSSadaf Ebrahimi {
600*b7893ccfSSadaf Ebrahimi for (uint32_t rectangleIndex = 0; rectangleIndex < structure->pRegions[swapchainIndex].rectangleCount; ++rectangleIndex)
601*b7893ccfSSadaf Ebrahimi {
602*b7893ccfSSadaf Ebrahimi }
603*b7893ccfSSadaf Ebrahimi }
604*b7893ccfSSadaf Ebrahimi }
605*b7893ccfSSadaf Ebrahimi }
606*b7893ccfSSadaf Ebrahimi } break;
607*b7893ccfSSadaf Ebrahimi
608*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceImagelessFramebufferFeaturesKHR structure members
609*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR: {
610*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceImagelessFramebufferFeaturesKHR *structure = (VkPhysicalDeviceImagelessFramebufferFeaturesKHR *) header;
611*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceImagelessFramebufferFeaturesKHR", "imagelessFramebuffer", structure->imagelessFramebuffer);
612*b7893ccfSSadaf Ebrahimi } break;
613*b7893ccfSSadaf Ebrahimi
614*b7893ccfSSadaf Ebrahimi // Validation code for VkFramebufferAttachmentsCreateInfoKHR structure members
615*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR: {
616*b7893ccfSSadaf Ebrahimi VkFramebufferAttachmentsCreateInfoKHR *structure = (VkFramebufferAttachmentsCreateInfoKHR *) header;
617*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("VkFramebufferAttachmentsCreateInfoKHR", "attachmentImageInfoCount", "pAttachmentImageInfos", "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR", structure->attachmentImageInfoCount, structure->pAttachmentImageInfos, VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, false, true, "VUID-VkFramebufferAttachmentImageInfoKHR-sType-sType", "VUID-VkFramebufferAttachmentsCreateInfoKHR-pAttachmentImageInfos-parameter", kVUIDUndefined);
618*b7893ccfSSadaf Ebrahimi
619*b7893ccfSSadaf Ebrahimi if (structure->pAttachmentImageInfos != NULL)
620*b7893ccfSSadaf Ebrahimi {
621*b7893ccfSSadaf Ebrahimi for (uint32_t attachmentImageInfoIndex = 0; attachmentImageInfoIndex < structure->attachmentImageInfoCount; ++attachmentImageInfoIndex)
622*b7893ccfSSadaf Ebrahimi {
623*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkFramebufferAttachmentsCreateInfoKHR", ParameterName("pAttachmentImageInfos[%i].flags", ParameterName::IndexVector{ attachmentImageInfoIndex }), "VkImageCreateFlagBits", AllVkImageCreateFlagBits, structure->pAttachmentImageInfos[attachmentImageInfoIndex].flags, kOptionalFlags, "VUID-VkFramebufferAttachmentImageInfoKHR-flags-parameter");
624*b7893ccfSSadaf Ebrahimi
625*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkFramebufferAttachmentsCreateInfoKHR", ParameterName("pAttachmentImageInfos[%i].usage", ParameterName::IndexVector{ attachmentImageInfoIndex }), "VkImageUsageFlagBits", AllVkImageUsageFlagBits, structure->pAttachmentImageInfos[attachmentImageInfoIndex].usage, kRequiredFlags, "VUID-VkFramebufferAttachmentImageInfoKHR-usage-parameter", "VUID-VkFramebufferAttachmentImageInfoKHR-usage-requiredbitmask");
626*b7893ccfSSadaf Ebrahimi
627*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkFramebufferAttachmentsCreateInfoKHR", ParameterName("pAttachmentImageInfos[%i].viewFormatCount", ParameterName::IndexVector{ attachmentImageInfoIndex }), ParameterName("pAttachmentImageInfos[%i].pViewFormats", ParameterName::IndexVector{ attachmentImageInfoIndex }), "VkFormat", AllVkFormatEnums, structure->pAttachmentImageInfos[attachmentImageInfoIndex].viewFormatCount, structure->pAttachmentImageInfos[attachmentImageInfoIndex].pViewFormats, false, true);
628*b7893ccfSSadaf Ebrahimi }
629*b7893ccfSSadaf Ebrahimi }
630*b7893ccfSSadaf Ebrahimi } break;
631*b7893ccfSSadaf Ebrahimi
632*b7893ccfSSadaf Ebrahimi // Validation code for VkRenderPassAttachmentBeginInfoKHR structure members
633*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: {
634*b7893ccfSSadaf Ebrahimi VkRenderPassAttachmentBeginInfoKHR *structure = (VkRenderPassAttachmentBeginInfoKHR *) header;
635*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassAttachmentBeginInfoKHR", "attachmentCount", "pAttachments", structure->attachmentCount, &structure->pAttachments, false, true, kVUIDUndefined, "VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-parameter");
636*b7893ccfSSadaf Ebrahimi } break;
637*b7893ccfSSadaf Ebrahimi
638*b7893ccfSSadaf Ebrahimi // Validation code for VkImageFormatListCreateInfoKHR structure members
639*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR: {
640*b7893ccfSSadaf Ebrahimi VkImageFormatListCreateInfoKHR *structure = (VkImageFormatListCreateInfoKHR *) header;
641*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkImageFormatListCreateInfoKHR", "viewFormatCount", "pViewFormats", "VkFormat", AllVkFormatEnums, structure->viewFormatCount, structure->pViewFormats, false, true);
642*b7893ccfSSadaf Ebrahimi } break;
643*b7893ccfSSadaf Ebrahimi
644*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDevice8BitStorageFeaturesKHR structure members
645*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: {
646*b7893ccfSSadaf Ebrahimi VkPhysicalDevice8BitStorageFeaturesKHR *structure = (VkPhysicalDevice8BitStorageFeaturesKHR *) header;
647*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice8BitStorageFeaturesKHR", "storageBuffer8BitAccess", structure->storageBuffer8BitAccess);
648*b7893ccfSSadaf Ebrahimi
649*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice8BitStorageFeaturesKHR", "uniformAndStorageBuffer8BitAccess", structure->uniformAndStorageBuffer8BitAccess);
650*b7893ccfSSadaf Ebrahimi
651*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevice8BitStorageFeaturesKHR", "storagePushConstant8", structure->storagePushConstant8);
652*b7893ccfSSadaf Ebrahimi } break;
653*b7893ccfSSadaf Ebrahimi
654*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderAtomicInt64FeaturesKHR structure members
655*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: {
656*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *structure = (VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *) header;
657*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "shaderBufferInt64Atomics", structure->shaderBufferInt64Atomics);
658*b7893ccfSSadaf Ebrahimi
659*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "shaderSharedInt64Atomics", structure->shaderSharedInt64Atomics);
660*b7893ccfSSadaf Ebrahimi } break;
661*b7893ccfSSadaf Ebrahimi
662*b7893ccfSSadaf Ebrahimi // Validation code for VkSubpassDescriptionDepthStencilResolveKHR structure members
663*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR: {
664*b7893ccfSSadaf Ebrahimi VkSubpassDescriptionDepthStencilResolveKHR *structure = (VkSubpassDescriptionDepthStencilResolveKHR *) header;
665*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkSubpassDescriptionDepthStencilResolveKHR", "depthResolveMode", "VkResolveModeFlagBitsKHR", AllVkResolveModeFlagBitsKHR, structure->depthResolveMode, kRequiredSingleBit, "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter", "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter");
666*b7893ccfSSadaf Ebrahimi
667*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkSubpassDescriptionDepthStencilResolveKHR", "stencilResolveMode", "VkResolveModeFlagBitsKHR", AllVkResolveModeFlagBitsKHR, structure->stencilResolveMode, kRequiredSingleBit, "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter", "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter");
668*b7893ccfSSadaf Ebrahimi
669*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("VkSubpassDescriptionDepthStencilResolveKHR", "pDepthStencilResolveAttachment", "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR", structure->pDepthStencilResolveAttachment, VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, false, "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter", "VUID-VkAttachmentReference2KHR-sType-sType");
670*b7893ccfSSadaf Ebrahimi
671*b7893ccfSSadaf Ebrahimi if (structure->pDepthStencilResolveAttachment != NULL)
672*b7893ccfSSadaf Ebrahimi {
673*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkSubpassDescriptionDepthStencilResolveKHR", "pDepthStencilResolveAttachment->layout", "VkImageLayout", AllVkImageLayoutEnums, structure->pDepthStencilResolveAttachment->layout, "VUID-VkAttachmentReference2KHR-layout-parameter");
674*b7893ccfSSadaf Ebrahimi }
675*b7893ccfSSadaf Ebrahimi } break;
676*b7893ccfSSadaf Ebrahimi
677*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceVulkanMemoryModelFeaturesKHR structure members
678*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: {
679*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *structure = (VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *) header;
680*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "vulkanMemoryModel", structure->vulkanMemoryModel);
681*b7893ccfSSadaf Ebrahimi
682*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "vulkanMemoryModelDeviceScope", structure->vulkanMemoryModelDeviceScope);
683*b7893ccfSSadaf Ebrahimi
684*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "vulkanMemoryModelAvailabilityVisibilityChains", structure->vulkanMemoryModelAvailabilityVisibilityChains);
685*b7893ccfSSadaf Ebrahimi } break;
686*b7893ccfSSadaf Ebrahimi
687*b7893ccfSSadaf Ebrahimi // Validation code for VkSurfaceProtectedCapabilitiesKHR structure members
688*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: {
689*b7893ccfSSadaf Ebrahimi VkSurfaceProtectedCapabilitiesKHR *structure = (VkSurfaceProtectedCapabilitiesKHR *) header;
690*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkSurfaceProtectedCapabilitiesKHR", "supportsProtected", structure->supportsProtected);
691*b7893ccfSSadaf Ebrahimi } break;
692*b7893ccfSSadaf Ebrahimi
693*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR structure members
694*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: {
695*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *structure = (VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *) header;
696*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", "uniformBufferStandardLayout", structure->uniformBufferStandardLayout);
697*b7893ccfSSadaf Ebrahimi } break;
698*b7893ccfSSadaf Ebrahimi
699*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure members
700*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
701*b7893ccfSSadaf Ebrahimi VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *structure = (VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *) header;
702*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", "pipelineExecutableInfo", structure->pipelineExecutableInfo);
703*b7893ccfSSadaf Ebrahimi } break;
704*b7893ccfSSadaf Ebrahimi
705*b7893ccfSSadaf Ebrahimi // Validation code for VkDebugReportCallbackCreateInfoEXT structure members
706*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
707*b7893ccfSSadaf Ebrahimi VkDebugReportCallbackCreateInfoEXT *structure = (VkDebugReportCallbackCreateInfoEXT *) header;
708*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkDebugReportCallbackCreateInfoEXT", "flags", "VkDebugReportFlagBitsEXT", AllVkDebugReportFlagBitsEXT, structure->flags, kOptionalFlags, "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter");
709*b7893ccfSSadaf Ebrahimi
710*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("VkDebugReportCallbackCreateInfoEXT", "pfnCallback", reinterpret_cast<const void*>(structure->pfnCallback), "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter");
711*b7893ccfSSadaf Ebrahimi } break;
712*b7893ccfSSadaf Ebrahimi
713*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRasterizationStateRasterizationOrderAMD structure members
714*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: {
715*b7893ccfSSadaf Ebrahimi VkPipelineRasterizationStateRasterizationOrderAMD *structure = (VkPipelineRasterizationStateRasterizationOrderAMD *) header;
716*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineRasterizationStateRasterizationOrderAMD", "rasterizationOrder", "VkRasterizationOrderAMD", AllVkRasterizationOrderAMDEnums, structure->rasterizationOrder, "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter");
717*b7893ccfSSadaf Ebrahimi } break;
718*b7893ccfSSadaf Ebrahimi
719*b7893ccfSSadaf Ebrahimi // Validation code for VkDedicatedAllocationImageCreateInfoNV structure members
720*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: {
721*b7893ccfSSadaf Ebrahimi VkDedicatedAllocationImageCreateInfoNV *structure = (VkDedicatedAllocationImageCreateInfoNV *) header;
722*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkDedicatedAllocationImageCreateInfoNV", "dedicatedAllocation", structure->dedicatedAllocation);
723*b7893ccfSSadaf Ebrahimi } break;
724*b7893ccfSSadaf Ebrahimi
725*b7893ccfSSadaf Ebrahimi // Validation code for VkDedicatedAllocationBufferCreateInfoNV structure members
726*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: {
727*b7893ccfSSadaf Ebrahimi VkDedicatedAllocationBufferCreateInfoNV *structure = (VkDedicatedAllocationBufferCreateInfoNV *) header;
728*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkDedicatedAllocationBufferCreateInfoNV", "dedicatedAllocation", structure->dedicatedAllocation);
729*b7893ccfSSadaf Ebrahimi } break;
730*b7893ccfSSadaf Ebrahimi
731*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceTransformFeedbackFeaturesEXT structure members
732*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
733*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceTransformFeedbackFeaturesEXT *structure = (VkPhysicalDeviceTransformFeedbackFeaturesEXT *) header;
734*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceTransformFeedbackFeaturesEXT", "transformFeedback", structure->transformFeedback);
735*b7893ccfSSadaf Ebrahimi
736*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceTransformFeedbackFeaturesEXT", "geometryStreams", structure->geometryStreams);
737*b7893ccfSSadaf Ebrahimi } break;
738*b7893ccfSSadaf Ebrahimi
739*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRasterizationStateStreamCreateInfoEXT structure members
740*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
741*b7893ccfSSadaf Ebrahimi VkPipelineRasterizationStateStreamCreateInfoEXT *structure = (VkPipelineRasterizationStateStreamCreateInfoEXT *) header;
742*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineRasterizationStateStreamCreateInfoEXT", "flags", structure->flags, "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask");
743*b7893ccfSSadaf Ebrahimi } break;
744*b7893ccfSSadaf Ebrahimi
745*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceCornerSampledImageFeaturesNV structure members
746*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: {
747*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceCornerSampledImageFeaturesNV *structure = (VkPhysicalDeviceCornerSampledImageFeaturesNV *) header;
748*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceCornerSampledImageFeaturesNV", "cornerSampledImage", structure->cornerSampledImage);
749*b7893ccfSSadaf Ebrahimi } break;
750*b7893ccfSSadaf Ebrahimi
751*b7893ccfSSadaf Ebrahimi // Validation code for VkExternalMemoryImageCreateInfoNV structure members
752*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: {
753*b7893ccfSSadaf Ebrahimi VkExternalMemoryImageCreateInfoNV *structure = (VkExternalMemoryImageCreateInfoNV *) header;
754*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExternalMemoryImageCreateInfoNV", "handleTypes", "VkExternalMemoryHandleTypeFlagBitsNV", AllVkExternalMemoryHandleTypeFlagBitsNV, structure->handleTypes, kOptionalFlags, "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter");
755*b7893ccfSSadaf Ebrahimi } break;
756*b7893ccfSSadaf Ebrahimi
757*b7893ccfSSadaf Ebrahimi // Validation code for VkExportMemoryAllocateInfoNV structure members
758*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: {
759*b7893ccfSSadaf Ebrahimi VkExportMemoryAllocateInfoNV *structure = (VkExportMemoryAllocateInfoNV *) header;
760*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkExportMemoryAllocateInfoNV", "handleTypes", "VkExternalMemoryHandleTypeFlagBitsNV", AllVkExternalMemoryHandleTypeFlagBitsNV, structure->handleTypes, kOptionalFlags, "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter");
761*b7893ccfSSadaf Ebrahimi } break;
762*b7893ccfSSadaf Ebrahimi
763*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
764*b7893ccfSSadaf Ebrahimi // Validation code for VkImportMemoryWin32HandleInfoNV structure members
765*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: {
766*b7893ccfSSadaf Ebrahimi VkImportMemoryWin32HandleInfoNV *structure = (VkImportMemoryWin32HandleInfoNV *) header;
767*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImportMemoryWin32HandleInfoNV", "handleType", "VkExternalMemoryHandleTypeFlagBitsNV", AllVkExternalMemoryHandleTypeFlagBitsNV, structure->handleType, kOptionalFlags, "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter");
768*b7893ccfSSadaf Ebrahimi } break;
769*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
770*b7893ccfSSadaf Ebrahimi
771*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
772*b7893ccfSSadaf Ebrahimi // Validation code for VkWin32KeyedMutexAcquireReleaseInfoNV structure members
773*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: {
774*b7893ccfSSadaf Ebrahimi VkWin32KeyedMutexAcquireReleaseInfoNV *structure = (VkWin32KeyedMutexAcquireReleaseInfoNV *) header;
775*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoNV", "acquireCount", "pAcquireSyncs", structure->acquireCount, &structure->pAcquireSyncs, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter");
776*b7893ccfSSadaf Ebrahimi
777*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoNV", "acquireCount", "pAcquireKeys", structure->acquireCount, &structure->pAcquireKeys, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter");
778*b7893ccfSSadaf Ebrahimi
779*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoNV", "acquireCount", "pAcquireTimeoutMilliseconds", structure->acquireCount, &structure->pAcquireTimeoutMilliseconds, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter");
780*b7893ccfSSadaf Ebrahimi
781*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoNV", "releaseCount", "pReleaseSyncs", structure->releaseCount, &structure->pReleaseSyncs, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter");
782*b7893ccfSSadaf Ebrahimi
783*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWin32KeyedMutexAcquireReleaseInfoNV", "releaseCount", "pReleaseKeys", structure->releaseCount, &structure->pReleaseKeys, false, true, kVUIDUndefined, "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter");
784*b7893ccfSSadaf Ebrahimi } break;
785*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
786*b7893ccfSSadaf Ebrahimi
787*b7893ccfSSadaf Ebrahimi // Validation code for VkValidationFlagsEXT structure members
788*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: {
789*b7893ccfSSadaf Ebrahimi VkValidationFlagsEXT *structure = (VkValidationFlagsEXT *) header;
790*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkValidationFlagsEXT", "disabledValidationCheckCount", "pDisabledValidationChecks", "VkValidationCheckEXT", AllVkValidationCheckEXTEnums, structure->disabledValidationCheckCount, structure->pDisabledValidationChecks, true, true);
791*b7893ccfSSadaf Ebrahimi } break;
792*b7893ccfSSadaf Ebrahimi
793*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT structure members
794*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT: {
795*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *structure = (VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *) header;
796*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", "textureCompressionASTC_HDR", structure->textureCompressionASTC_HDR);
797*b7893ccfSSadaf Ebrahimi } break;
798*b7893ccfSSadaf Ebrahimi
799*b7893ccfSSadaf Ebrahimi // Validation code for VkImageViewASTCDecodeModeEXT structure members
800*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: {
801*b7893ccfSSadaf Ebrahimi VkImageViewASTCDecodeModeEXT *structure = (VkImageViewASTCDecodeModeEXT *) header;
802*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkImageViewASTCDecodeModeEXT", "decodeMode", "VkFormat", AllVkFormatEnums, structure->decodeMode, "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter");
803*b7893ccfSSadaf Ebrahimi } break;
804*b7893ccfSSadaf Ebrahimi
805*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceASTCDecodeFeaturesEXT structure members
806*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: {
807*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceASTCDecodeFeaturesEXT *structure = (VkPhysicalDeviceASTCDecodeFeaturesEXT *) header;
808*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceASTCDecodeFeaturesEXT", "decodeModeSharedExponent", structure->decodeModeSharedExponent);
809*b7893ccfSSadaf Ebrahimi } break;
810*b7893ccfSSadaf Ebrahimi
811*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceConditionalRenderingFeaturesEXT structure members
812*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
813*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceConditionalRenderingFeaturesEXT *structure = (VkPhysicalDeviceConditionalRenderingFeaturesEXT *) header;
814*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceConditionalRenderingFeaturesEXT", "conditionalRendering", structure->conditionalRendering);
815*b7893ccfSSadaf Ebrahimi
816*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceConditionalRenderingFeaturesEXT", "inheritedConditionalRendering", structure->inheritedConditionalRendering);
817*b7893ccfSSadaf Ebrahimi } break;
818*b7893ccfSSadaf Ebrahimi
819*b7893ccfSSadaf Ebrahimi // Validation code for VkCommandBufferInheritanceConditionalRenderingInfoEXT structure members
820*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: {
821*b7893ccfSSadaf Ebrahimi VkCommandBufferInheritanceConditionalRenderingInfoEXT *structure = (VkCommandBufferInheritanceConditionalRenderingInfoEXT *) header;
822*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkCommandBufferInheritanceConditionalRenderingInfoEXT", "conditionalRenderingEnable", structure->conditionalRenderingEnable);
823*b7893ccfSSadaf Ebrahimi } break;
824*b7893ccfSSadaf Ebrahimi
825*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineViewportWScalingStateCreateInfoNV structure members
826*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: {
827*b7893ccfSSadaf Ebrahimi VkPipelineViewportWScalingStateCreateInfoNV *structure = (VkPipelineViewportWScalingStateCreateInfoNV *) header;
828*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineViewportWScalingStateCreateInfoNV", "viewportWScalingEnable", structure->viewportWScalingEnable);
829*b7893ccfSSadaf Ebrahimi } break;
830*b7893ccfSSadaf Ebrahimi
831*b7893ccfSSadaf Ebrahimi // Validation code for VkSwapchainCounterCreateInfoEXT structure members
832*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: {
833*b7893ccfSSadaf Ebrahimi VkSwapchainCounterCreateInfoEXT *structure = (VkSwapchainCounterCreateInfoEXT *) header;
834*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkSwapchainCounterCreateInfoEXT", "surfaceCounters", "VkSurfaceCounterFlagBitsEXT", AllVkSurfaceCounterFlagBitsEXT, structure->surfaceCounters, kOptionalFlags, "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter");
835*b7893ccfSSadaf Ebrahimi } break;
836*b7893ccfSSadaf Ebrahimi
837*b7893ccfSSadaf Ebrahimi // Validation code for VkPresentTimesInfoGOOGLE structure members
838*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: {
839*b7893ccfSSadaf Ebrahimi VkPresentTimesInfoGOOGLE *structure = (VkPresentTimesInfoGOOGLE *) header;
840*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPresentTimesInfoGOOGLE", "swapchainCount", "pTimes", structure->swapchainCount, &structure->pTimes, true, false, "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength", "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter");
841*b7893ccfSSadaf Ebrahimi
842*b7893ccfSSadaf Ebrahimi if (structure->pTimes != NULL)
843*b7893ccfSSadaf Ebrahimi {
844*b7893ccfSSadaf Ebrahimi for (uint32_t swapchainIndex = 0; swapchainIndex < structure->swapchainCount; ++swapchainIndex)
845*b7893ccfSSadaf Ebrahimi {
846*b7893ccfSSadaf Ebrahimi }
847*b7893ccfSSadaf Ebrahimi }
848*b7893ccfSSadaf Ebrahimi } break;
849*b7893ccfSSadaf Ebrahimi
850*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineViewportSwizzleStateCreateInfoNV structure members
851*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: {
852*b7893ccfSSadaf Ebrahimi VkPipelineViewportSwizzleStateCreateInfoNV *structure = (VkPipelineViewportSwizzleStateCreateInfoNV *) header;
853*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineViewportSwizzleStateCreateInfoNV", "flags", structure->flags, "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask");
854*b7893ccfSSadaf Ebrahimi
855*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineViewportSwizzleStateCreateInfoNV", "viewportCount", "pViewportSwizzles", structure->viewportCount, &structure->pViewportSwizzles, true, true, "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength", "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter");
856*b7893ccfSSadaf Ebrahimi
857*b7893ccfSSadaf Ebrahimi if (structure->pViewportSwizzles != NULL)
858*b7893ccfSSadaf Ebrahimi {
859*b7893ccfSSadaf Ebrahimi for (uint32_t viewportIndex = 0; viewportIndex < structure->viewportCount; ++viewportIndex)
860*b7893ccfSSadaf Ebrahimi {
861*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportSwizzleStateCreateInfoNV", ParameterName("pViewportSwizzles[%i].x", ParameterName::IndexVector{ viewportIndex }), "VkViewportCoordinateSwizzleNV", AllVkViewportCoordinateSwizzleNVEnums, structure->pViewportSwizzles[viewportIndex].x, "VUID-VkViewportSwizzleNV-x-parameter");
862*b7893ccfSSadaf Ebrahimi
863*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportSwizzleStateCreateInfoNV", ParameterName("pViewportSwizzles[%i].y", ParameterName::IndexVector{ viewportIndex }), "VkViewportCoordinateSwizzleNV", AllVkViewportCoordinateSwizzleNVEnums, structure->pViewportSwizzles[viewportIndex].y, "VUID-VkViewportSwizzleNV-y-parameter");
864*b7893ccfSSadaf Ebrahimi
865*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportSwizzleStateCreateInfoNV", ParameterName("pViewportSwizzles[%i].z", ParameterName::IndexVector{ viewportIndex }), "VkViewportCoordinateSwizzleNV", AllVkViewportCoordinateSwizzleNVEnums, structure->pViewportSwizzles[viewportIndex].z, "VUID-VkViewportSwizzleNV-z-parameter");
866*b7893ccfSSadaf Ebrahimi
867*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportSwizzleStateCreateInfoNV", ParameterName("pViewportSwizzles[%i].w", ParameterName::IndexVector{ viewportIndex }), "VkViewportCoordinateSwizzleNV", AllVkViewportCoordinateSwizzleNVEnums, structure->pViewportSwizzles[viewportIndex].w, "VUID-VkViewportSwizzleNV-w-parameter");
868*b7893ccfSSadaf Ebrahimi }
869*b7893ccfSSadaf Ebrahimi }
870*b7893ccfSSadaf Ebrahimi } break;
871*b7893ccfSSadaf Ebrahimi
872*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineDiscardRectangleStateCreateInfoEXT structure members
873*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: {
874*b7893ccfSSadaf Ebrahimi VkPipelineDiscardRectangleStateCreateInfoEXT *structure = (VkPipelineDiscardRectangleStateCreateInfoEXT *) header;
875*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineDiscardRectangleStateCreateInfoEXT", "flags", structure->flags, "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask");
876*b7893ccfSSadaf Ebrahimi
877*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineDiscardRectangleStateCreateInfoEXT", "discardRectangleMode", "VkDiscardRectangleModeEXT", AllVkDiscardRectangleModeEXTEnums, structure->discardRectangleMode, "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter");
878*b7893ccfSSadaf Ebrahimi } break;
879*b7893ccfSSadaf Ebrahimi
880*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRasterizationConservativeStateCreateInfoEXT structure members
881*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: {
882*b7893ccfSSadaf Ebrahimi VkPipelineRasterizationConservativeStateCreateInfoEXT *structure = (VkPipelineRasterizationConservativeStateCreateInfoEXT *) header;
883*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineRasterizationConservativeStateCreateInfoEXT", "flags", structure->flags, "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask");
884*b7893ccfSSadaf Ebrahimi
885*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineRasterizationConservativeStateCreateInfoEXT", "conservativeRasterizationMode", "VkConservativeRasterizationModeEXT", AllVkConservativeRasterizationModeEXTEnums, structure->conservativeRasterizationMode, "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter");
886*b7893ccfSSadaf Ebrahimi } break;
887*b7893ccfSSadaf Ebrahimi
888*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceDepthClipEnableFeaturesEXT structure members
889*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
890*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceDepthClipEnableFeaturesEXT *structure = (VkPhysicalDeviceDepthClipEnableFeaturesEXT *) header;
891*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDepthClipEnableFeaturesEXT", "depthClipEnable", structure->depthClipEnable);
892*b7893ccfSSadaf Ebrahimi } break;
893*b7893ccfSSadaf Ebrahimi
894*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRasterizationDepthClipStateCreateInfoEXT structure members
895*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
896*b7893ccfSSadaf Ebrahimi VkPipelineRasterizationDepthClipStateCreateInfoEXT *structure = (VkPipelineRasterizationDepthClipStateCreateInfoEXT *) header;
897*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineRasterizationDepthClipStateCreateInfoEXT", "flags", structure->flags, "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask");
898*b7893ccfSSadaf Ebrahimi
899*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineRasterizationDepthClipStateCreateInfoEXT", "depthClipEnable", structure->depthClipEnable);
900*b7893ccfSSadaf Ebrahimi } break;
901*b7893ccfSSadaf Ebrahimi
902*b7893ccfSSadaf Ebrahimi // Validation code for VkDebugUtilsMessengerCreateInfoEXT structure members
903*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
904*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessengerCreateInfoEXT *structure = (VkDebugUtilsMessengerCreateInfoEXT *) header;
905*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkDebugUtilsMessengerCreateInfoEXT", "flags", structure->flags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask");
906*b7893ccfSSadaf Ebrahimi
907*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkDebugUtilsMessengerCreateInfoEXT", "messageSeverity", "VkDebugUtilsMessageSeverityFlagBitsEXT", AllVkDebugUtilsMessageSeverityFlagBitsEXT, structure->messageSeverity, kRequiredFlags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter", "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask");
908*b7893ccfSSadaf Ebrahimi
909*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkDebugUtilsMessengerCreateInfoEXT", "messageType", "VkDebugUtilsMessageTypeFlagBitsEXT", AllVkDebugUtilsMessageTypeFlagBitsEXT, structure->messageType, kRequiredFlags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter", "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask");
910*b7893ccfSSadaf Ebrahimi
911*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("VkDebugUtilsMessengerCreateInfoEXT", "pfnUserCallback", reinterpret_cast<const void*>(structure->pfnUserCallback), "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter");
912*b7893ccfSSadaf Ebrahimi } break;
913*b7893ccfSSadaf Ebrahimi
914*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
915*b7893ccfSSadaf Ebrahimi // Validation code for VkImportAndroidHardwareBufferInfoANDROID structure members
916*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: {
917*b7893ccfSSadaf Ebrahimi VkImportAndroidHardwareBufferInfoANDROID *structure = (VkImportAndroidHardwareBufferInfoANDROID *) header;
918*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("VkImportAndroidHardwareBufferInfoANDROID", "buffer", structure->buffer, "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter");
919*b7893ccfSSadaf Ebrahimi } break;
920*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
921*b7893ccfSSadaf Ebrahimi
922*b7893ccfSSadaf Ebrahimi // Validation code for VkSamplerReductionModeCreateInfoEXT structure members
923*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT: {
924*b7893ccfSSadaf Ebrahimi VkSamplerReductionModeCreateInfoEXT *structure = (VkSamplerReductionModeCreateInfoEXT *) header;
925*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkSamplerReductionModeCreateInfoEXT", "reductionMode", "VkSamplerReductionModeEXT", AllVkSamplerReductionModeEXTEnums, structure->reductionMode, "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter");
926*b7893ccfSSadaf Ebrahimi } break;
927*b7893ccfSSadaf Ebrahimi
928*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceInlineUniformBlockFeaturesEXT structure members
929*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: {
930*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceInlineUniformBlockFeaturesEXT *structure = (VkPhysicalDeviceInlineUniformBlockFeaturesEXT *) header;
931*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "inlineUniformBlock", structure->inlineUniformBlock);
932*b7893ccfSSadaf Ebrahimi
933*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "descriptorBindingInlineUniformBlockUpdateAfterBind", structure->descriptorBindingInlineUniformBlockUpdateAfterBind);
934*b7893ccfSSadaf Ebrahimi } break;
935*b7893ccfSSadaf Ebrahimi
936*b7893ccfSSadaf Ebrahimi // Validation code for VkWriteDescriptorSetInlineUniformBlockEXT structure members
937*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: {
938*b7893ccfSSadaf Ebrahimi VkWriteDescriptorSetInlineUniformBlockEXT *structure = (VkWriteDescriptorSetInlineUniformBlockEXT *) header;
939*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkWriteDescriptorSetInlineUniformBlockEXT", "dataSize", "pData", structure->dataSize, &structure->pData, true, true, "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength", "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter");
940*b7893ccfSSadaf Ebrahimi } break;
941*b7893ccfSSadaf Ebrahimi
942*b7893ccfSSadaf Ebrahimi // Validation code for VkSampleLocationsInfoEXT structure members
943*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: {
944*b7893ccfSSadaf Ebrahimi VkSampleLocationsInfoEXT *structure = (VkSampleLocationsInfoEXT *) header;
945*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkSampleLocationsInfoEXT", "sampleLocationsPerPixel", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, structure->sampleLocationsPerPixel, kOptionalSingleBit, "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter");
946*b7893ccfSSadaf Ebrahimi
947*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkSampleLocationsInfoEXT", "sampleLocationsCount", "pSampleLocations", structure->sampleLocationsCount, &structure->pSampleLocations, false, true, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter");
948*b7893ccfSSadaf Ebrahimi
949*b7893ccfSSadaf Ebrahimi if (structure->pSampleLocations != NULL)
950*b7893ccfSSadaf Ebrahimi {
951*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationsIndex = 0; sampleLocationsIndex < structure->sampleLocationsCount; ++sampleLocationsIndex)
952*b7893ccfSSadaf Ebrahimi {
953*b7893ccfSSadaf Ebrahimi }
954*b7893ccfSSadaf Ebrahimi }
955*b7893ccfSSadaf Ebrahimi } break;
956*b7893ccfSSadaf Ebrahimi
957*b7893ccfSSadaf Ebrahimi // Validation code for VkRenderPassSampleLocationsBeginInfoEXT structure members
958*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: {
959*b7893ccfSSadaf Ebrahimi VkRenderPassSampleLocationsBeginInfoEXT *structure = (VkRenderPassSampleLocationsBeginInfoEXT *) header;
960*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassSampleLocationsBeginInfoEXT", "attachmentInitialSampleLocationsCount", "pAttachmentInitialSampleLocations", structure->attachmentInitialSampleLocationsCount, &structure->pAttachmentInitialSampleLocations, false, true, kVUIDUndefined, "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter");
961*b7893ccfSSadaf Ebrahimi
962*b7893ccfSSadaf Ebrahimi if (structure->pAttachmentInitialSampleLocations != NULL)
963*b7893ccfSSadaf Ebrahimi {
964*b7893ccfSSadaf Ebrahimi for (uint32_t attachmentInitialSampleLocationsIndex = 0; attachmentInitialSampleLocationsIndex < structure->attachmentInitialSampleLocationsCount; ++attachmentInitialSampleLocationsIndex)
965*b7893ccfSSadaf Ebrahimi {
966*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pAttachmentInitialSampleLocations[%i].sampleLocationsInfo", ParameterName::IndexVector{ attachmentInitialSampleLocationsIndex }), "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", &(structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo), VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, false, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-sType-sType");
967*b7893ccfSSadaf Ebrahimi
968*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pAttachmentInitialSampleLocations[%i].sampleLocationsInfo.sampleLocationsPerPixel", ParameterName::IndexVector{ attachmentInitialSampleLocationsIndex }), "VkSampleCountFlagBits", AllVkSampleCountFlagBits, structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo.sampleLocationsPerPixel, kOptionalSingleBit, "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter");
969*b7893ccfSSadaf Ebrahimi
970*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pAttachmentInitialSampleLocations[%i].sampleLocationsInfo.sampleLocationsCount", ParameterName::IndexVector{ attachmentInitialSampleLocationsIndex }), ParameterName("pAttachmentInitialSampleLocations[%i].sampleLocationsInfo.pSampleLocations", ParameterName::IndexVector{ attachmentInitialSampleLocationsIndex }), structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo.sampleLocationsCount, &structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo.pSampleLocations, false, true, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter");
971*b7893ccfSSadaf Ebrahimi
972*b7893ccfSSadaf Ebrahimi if (structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo.pSampleLocations != NULL)
973*b7893ccfSSadaf Ebrahimi {
974*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationsIndex = 0; sampleLocationsIndex < structure->pAttachmentInitialSampleLocations[attachmentInitialSampleLocationsIndex].sampleLocationsInfo.sampleLocationsCount; ++sampleLocationsIndex)
975*b7893ccfSSadaf Ebrahimi {
976*b7893ccfSSadaf Ebrahimi }
977*b7893ccfSSadaf Ebrahimi }
978*b7893ccfSSadaf Ebrahimi }
979*b7893ccfSSadaf Ebrahimi }
980*b7893ccfSSadaf Ebrahimi
981*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassSampleLocationsBeginInfoEXT", "postSubpassSampleLocationsCount", "pPostSubpassSampleLocations", structure->postSubpassSampleLocationsCount, &structure->pPostSubpassSampleLocations, false, true, kVUIDUndefined, "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter");
982*b7893ccfSSadaf Ebrahimi
983*b7893ccfSSadaf Ebrahimi if (structure->pPostSubpassSampleLocations != NULL)
984*b7893ccfSSadaf Ebrahimi {
985*b7893ccfSSadaf Ebrahimi for (uint32_t postSubpassSampleLocationsIndex = 0; postSubpassSampleLocationsIndex < structure->postSubpassSampleLocationsCount; ++postSubpassSampleLocationsIndex)
986*b7893ccfSSadaf Ebrahimi {
987*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pPostSubpassSampleLocations[%i].sampleLocationsInfo", ParameterName::IndexVector{ postSubpassSampleLocationsIndex }), "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", &(structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo), VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, false, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-sType-sType");
988*b7893ccfSSadaf Ebrahimi
989*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pPostSubpassSampleLocations[%i].sampleLocationsInfo.sampleLocationsPerPixel", ParameterName::IndexVector{ postSubpassSampleLocationsIndex }), "VkSampleCountFlagBits", AllVkSampleCountFlagBits, structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo.sampleLocationsPerPixel, kOptionalSingleBit, "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter");
990*b7893ccfSSadaf Ebrahimi
991*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkRenderPassSampleLocationsBeginInfoEXT", ParameterName("pPostSubpassSampleLocations[%i].sampleLocationsInfo.sampleLocationsCount", ParameterName::IndexVector{ postSubpassSampleLocationsIndex }), ParameterName("pPostSubpassSampleLocations[%i].sampleLocationsInfo.pSampleLocations", ParameterName::IndexVector{ postSubpassSampleLocationsIndex }), structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo.sampleLocationsCount, &structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo.pSampleLocations, false, true, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter");
992*b7893ccfSSadaf Ebrahimi
993*b7893ccfSSadaf Ebrahimi if (structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo.pSampleLocations != NULL)
994*b7893ccfSSadaf Ebrahimi {
995*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationsIndex = 0; sampleLocationsIndex < structure->pPostSubpassSampleLocations[postSubpassSampleLocationsIndex].sampleLocationsInfo.sampleLocationsCount; ++sampleLocationsIndex)
996*b7893ccfSSadaf Ebrahimi {
997*b7893ccfSSadaf Ebrahimi }
998*b7893ccfSSadaf Ebrahimi }
999*b7893ccfSSadaf Ebrahimi }
1000*b7893ccfSSadaf Ebrahimi }
1001*b7893ccfSSadaf Ebrahimi } break;
1002*b7893ccfSSadaf Ebrahimi
1003*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineSampleLocationsStateCreateInfoEXT structure members
1004*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: {
1005*b7893ccfSSadaf Ebrahimi VkPipelineSampleLocationsStateCreateInfoEXT *structure = (VkPipelineSampleLocationsStateCreateInfoEXT *) header;
1006*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineSampleLocationsStateCreateInfoEXT", "sampleLocationsEnable", structure->sampleLocationsEnable);
1007*b7893ccfSSadaf Ebrahimi
1008*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("VkPipelineSampleLocationsStateCreateInfoEXT", "sampleLocationsInfo", "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", &(structure->sampleLocationsInfo), VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, false, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-sType-sType");
1009*b7893ccfSSadaf Ebrahimi
1010*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkPipelineSampleLocationsStateCreateInfoEXT", "sampleLocationsInfo.sampleLocationsPerPixel", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, structure->sampleLocationsInfo.sampleLocationsPerPixel, kOptionalSingleBit, "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter");
1011*b7893ccfSSadaf Ebrahimi
1012*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineSampleLocationsStateCreateInfoEXT", "sampleLocationsInfo.sampleLocationsCount", "sampleLocationsInfo.pSampleLocations", structure->sampleLocationsInfo.sampleLocationsCount, &structure->sampleLocationsInfo.pSampleLocations, false, true, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter");
1013*b7893ccfSSadaf Ebrahimi
1014*b7893ccfSSadaf Ebrahimi if (structure->sampleLocationsInfo.pSampleLocations != NULL)
1015*b7893ccfSSadaf Ebrahimi {
1016*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationsIndex = 0; sampleLocationsIndex < structure->sampleLocationsInfo.sampleLocationsCount; ++sampleLocationsIndex)
1017*b7893ccfSSadaf Ebrahimi {
1018*b7893ccfSSadaf Ebrahimi }
1019*b7893ccfSSadaf Ebrahimi }
1020*b7893ccfSSadaf Ebrahimi } break;
1021*b7893ccfSSadaf Ebrahimi
1022*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure members
1023*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: {
1024*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *structure = (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *) header;
1025*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", "advancedBlendCoherentOperations", structure->advancedBlendCoherentOperations);
1026*b7893ccfSSadaf Ebrahimi } break;
1027*b7893ccfSSadaf Ebrahimi
1028*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineColorBlendAdvancedStateCreateInfoEXT structure members
1029*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: {
1030*b7893ccfSSadaf Ebrahimi VkPipelineColorBlendAdvancedStateCreateInfoEXT *structure = (VkPipelineColorBlendAdvancedStateCreateInfoEXT *) header;
1031*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineColorBlendAdvancedStateCreateInfoEXT", "srcPremultiplied", structure->srcPremultiplied);
1032*b7893ccfSSadaf Ebrahimi
1033*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineColorBlendAdvancedStateCreateInfoEXT", "dstPremultiplied", structure->dstPremultiplied);
1034*b7893ccfSSadaf Ebrahimi
1035*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineColorBlendAdvancedStateCreateInfoEXT", "blendOverlap", "VkBlendOverlapEXT", AllVkBlendOverlapEXTEnums, structure->blendOverlap, "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter");
1036*b7893ccfSSadaf Ebrahimi } break;
1037*b7893ccfSSadaf Ebrahimi
1038*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineCoverageToColorStateCreateInfoNV structure members
1039*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: {
1040*b7893ccfSSadaf Ebrahimi VkPipelineCoverageToColorStateCreateInfoNV *structure = (VkPipelineCoverageToColorStateCreateInfoNV *) header;
1041*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineCoverageToColorStateCreateInfoNV", "flags", structure->flags, "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask");
1042*b7893ccfSSadaf Ebrahimi
1043*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineCoverageToColorStateCreateInfoNV", "coverageToColorEnable", structure->coverageToColorEnable);
1044*b7893ccfSSadaf Ebrahimi } break;
1045*b7893ccfSSadaf Ebrahimi
1046*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineCoverageModulationStateCreateInfoNV structure members
1047*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: {
1048*b7893ccfSSadaf Ebrahimi VkPipelineCoverageModulationStateCreateInfoNV *structure = (VkPipelineCoverageModulationStateCreateInfoNV *) header;
1049*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineCoverageModulationStateCreateInfoNV", "flags", structure->flags, "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask");
1050*b7893ccfSSadaf Ebrahimi
1051*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineCoverageModulationStateCreateInfoNV", "coverageModulationMode", "VkCoverageModulationModeNV", AllVkCoverageModulationModeNVEnums, structure->coverageModulationMode, "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter");
1052*b7893ccfSSadaf Ebrahimi
1053*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineCoverageModulationStateCreateInfoNV", "coverageModulationTableEnable", structure->coverageModulationTableEnable);
1054*b7893ccfSSadaf Ebrahimi } break;
1055*b7893ccfSSadaf Ebrahimi
1056*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure members
1057*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: {
1058*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *structure = (VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *) header;
1059*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderSMBuiltinsFeaturesNV", "shaderSMBuiltins", structure->shaderSMBuiltins);
1060*b7893ccfSSadaf Ebrahimi } break;
1061*b7893ccfSSadaf Ebrahimi
1062*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure members
1063*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
1064*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceImageDrmFormatModifierInfoEXT *structure = (VkPhysicalDeviceImageDrmFormatModifierInfoEXT *) header;
1065*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPhysicalDeviceImageDrmFormatModifierInfoEXT", "sharingMode", "VkSharingMode", AllVkSharingModeEnums, structure->sharingMode, "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter");
1066*b7893ccfSSadaf Ebrahimi } break;
1067*b7893ccfSSadaf Ebrahimi
1068*b7893ccfSSadaf Ebrahimi // Validation code for VkImageDrmFormatModifierListCreateInfoEXT structure members
1069*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
1070*b7893ccfSSadaf Ebrahimi VkImageDrmFormatModifierListCreateInfoEXT *structure = (VkImageDrmFormatModifierListCreateInfoEXT *) header;
1071*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkImageDrmFormatModifierListCreateInfoEXT", "drmFormatModifierCount", "pDrmFormatModifiers", structure->drmFormatModifierCount, &structure->pDrmFormatModifiers, true, true, "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength", "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter");
1072*b7893ccfSSadaf Ebrahimi } break;
1073*b7893ccfSSadaf Ebrahimi
1074*b7893ccfSSadaf Ebrahimi // Validation code for VkImageDrmFormatModifierExplicitCreateInfoEXT structure members
1075*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
1076*b7893ccfSSadaf Ebrahimi VkImageDrmFormatModifierExplicitCreateInfoEXT *structure = (VkImageDrmFormatModifierExplicitCreateInfoEXT *) header;
1077*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkImageDrmFormatModifierExplicitCreateInfoEXT", "drmFormatModifierPlaneCount", "pPlaneLayouts", structure->drmFormatModifierPlaneCount, &structure->pPlaneLayouts, true, true, kVUIDUndefined, "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter");
1078*b7893ccfSSadaf Ebrahimi
1079*b7893ccfSSadaf Ebrahimi if (structure->pPlaneLayouts != NULL)
1080*b7893ccfSSadaf Ebrahimi {
1081*b7893ccfSSadaf Ebrahimi for (uint32_t drmFormatModifierPlaneIndex = 0; drmFormatModifierPlaneIndex < structure->drmFormatModifierPlaneCount; ++drmFormatModifierPlaneIndex)
1082*b7893ccfSSadaf Ebrahimi {
1083*b7893ccfSSadaf Ebrahimi }
1084*b7893ccfSSadaf Ebrahimi }
1085*b7893ccfSSadaf Ebrahimi } break;
1086*b7893ccfSSadaf Ebrahimi
1087*b7893ccfSSadaf Ebrahimi // Validation code for VkShaderModuleValidationCacheCreateInfoEXT structure members
1088*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: {
1089*b7893ccfSSadaf Ebrahimi VkShaderModuleValidationCacheCreateInfoEXT *structure = (VkShaderModuleValidationCacheCreateInfoEXT *) header;
1090*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("VkShaderModuleValidationCacheCreateInfoEXT", "validationCache", structure->validationCache);
1091*b7893ccfSSadaf Ebrahimi } break;
1092*b7893ccfSSadaf Ebrahimi
1093*b7893ccfSSadaf Ebrahimi // Validation code for VkDescriptorSetLayoutBindingFlagsCreateInfoEXT structure members
1094*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: {
1095*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *structure = (VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *) header;
1096*b7893ccfSSadaf Ebrahimi skip |= validate_flags_array("VkDescriptorSetLayoutBindingFlagsCreateInfoEXT", "bindingCount", "pBindingFlags", "VkDescriptorBindingFlagBitsEXT", AllVkDescriptorBindingFlagBitsEXT, structure->bindingCount, structure->pBindingFlags, false, false);
1097*b7893ccfSSadaf Ebrahimi } break;
1098*b7893ccfSSadaf Ebrahimi
1099*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceDescriptorIndexingFeaturesEXT structure members
1100*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: {
1101*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceDescriptorIndexingFeaturesEXT *structure = (VkPhysicalDeviceDescriptorIndexingFeaturesEXT *) header;
1102*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderInputAttachmentArrayDynamicIndexing", structure->shaderInputAttachmentArrayDynamicIndexing);
1103*b7893ccfSSadaf Ebrahimi
1104*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderUniformTexelBufferArrayDynamicIndexing", structure->shaderUniformTexelBufferArrayDynamicIndexing);
1105*b7893ccfSSadaf Ebrahimi
1106*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderStorageTexelBufferArrayDynamicIndexing", structure->shaderStorageTexelBufferArrayDynamicIndexing);
1107*b7893ccfSSadaf Ebrahimi
1108*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderUniformBufferArrayNonUniformIndexing", structure->shaderUniformBufferArrayNonUniformIndexing);
1109*b7893ccfSSadaf Ebrahimi
1110*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderSampledImageArrayNonUniformIndexing", structure->shaderSampledImageArrayNonUniformIndexing);
1111*b7893ccfSSadaf Ebrahimi
1112*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderStorageBufferArrayNonUniformIndexing", structure->shaderStorageBufferArrayNonUniformIndexing);
1113*b7893ccfSSadaf Ebrahimi
1114*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderStorageImageArrayNonUniformIndexing", structure->shaderStorageImageArrayNonUniformIndexing);
1115*b7893ccfSSadaf Ebrahimi
1116*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderInputAttachmentArrayNonUniformIndexing", structure->shaderInputAttachmentArrayNonUniformIndexing);
1117*b7893ccfSSadaf Ebrahimi
1118*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderUniformTexelBufferArrayNonUniformIndexing", structure->shaderUniformTexelBufferArrayNonUniformIndexing);
1119*b7893ccfSSadaf Ebrahimi
1120*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "shaderStorageTexelBufferArrayNonUniformIndexing", structure->shaderStorageTexelBufferArrayNonUniformIndexing);
1121*b7893ccfSSadaf Ebrahimi
1122*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingUniformBufferUpdateAfterBind", structure->descriptorBindingUniformBufferUpdateAfterBind);
1123*b7893ccfSSadaf Ebrahimi
1124*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingSampledImageUpdateAfterBind", structure->descriptorBindingSampledImageUpdateAfterBind);
1125*b7893ccfSSadaf Ebrahimi
1126*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingStorageImageUpdateAfterBind", structure->descriptorBindingStorageImageUpdateAfterBind);
1127*b7893ccfSSadaf Ebrahimi
1128*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingStorageBufferUpdateAfterBind", structure->descriptorBindingStorageBufferUpdateAfterBind);
1129*b7893ccfSSadaf Ebrahimi
1130*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingUniformTexelBufferUpdateAfterBind", structure->descriptorBindingUniformTexelBufferUpdateAfterBind);
1131*b7893ccfSSadaf Ebrahimi
1132*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingStorageTexelBufferUpdateAfterBind", structure->descriptorBindingStorageTexelBufferUpdateAfterBind);
1133*b7893ccfSSadaf Ebrahimi
1134*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingUpdateUnusedWhilePending", structure->descriptorBindingUpdateUnusedWhilePending);
1135*b7893ccfSSadaf Ebrahimi
1136*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingPartiallyBound", structure->descriptorBindingPartiallyBound);
1137*b7893ccfSSadaf Ebrahimi
1138*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "descriptorBindingVariableDescriptorCount", structure->descriptorBindingVariableDescriptorCount);
1139*b7893ccfSSadaf Ebrahimi
1140*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "runtimeDescriptorArray", structure->runtimeDescriptorArray);
1141*b7893ccfSSadaf Ebrahimi } break;
1142*b7893ccfSSadaf Ebrahimi
1143*b7893ccfSSadaf Ebrahimi // Validation code for VkDescriptorSetVariableDescriptorCountAllocateInfoEXT structure members
1144*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: {
1145*b7893ccfSSadaf Ebrahimi VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *structure = (VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *) header;
1146*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkDescriptorSetVariableDescriptorCountAllocateInfoEXT", "descriptorSetCount", "pDescriptorCounts", structure->descriptorSetCount, &structure->pDescriptorCounts, false, true, kVUIDUndefined, "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter");
1147*b7893ccfSSadaf Ebrahimi } break;
1148*b7893ccfSSadaf Ebrahimi
1149*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineViewportShadingRateImageStateCreateInfoNV structure members
1150*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: {
1151*b7893ccfSSadaf Ebrahimi VkPipelineViewportShadingRateImageStateCreateInfoNV *structure = (VkPipelineViewportShadingRateImageStateCreateInfoNV *) header;
1152*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineViewportShadingRateImageStateCreateInfoNV", "shadingRateImageEnable", structure->shadingRateImageEnable);
1153*b7893ccfSSadaf Ebrahimi
1154*b7893ccfSSadaf Ebrahimi if (structure->pShadingRatePalettes != NULL)
1155*b7893ccfSSadaf Ebrahimi {
1156*b7893ccfSSadaf Ebrahimi for (uint32_t viewportIndex = 0; viewportIndex < structure->viewportCount; ++viewportIndex)
1157*b7893ccfSSadaf Ebrahimi {
1158*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkPipelineViewportShadingRateImageStateCreateInfoNV", ParameterName("pShadingRatePalettes[%i].shadingRatePaletteEntryCount", ParameterName::IndexVector{ viewportIndex }), ParameterName("pShadingRatePalettes[%i].pShadingRatePaletteEntries", ParameterName::IndexVector{ viewportIndex }), "VkShadingRatePaletteEntryNV", AllVkShadingRatePaletteEntryNVEnums, structure->pShadingRatePalettes[viewportIndex].shadingRatePaletteEntryCount, structure->pShadingRatePalettes[viewportIndex].pShadingRatePaletteEntries, true, true);
1159*b7893ccfSSadaf Ebrahimi }
1160*b7893ccfSSadaf Ebrahimi }
1161*b7893ccfSSadaf Ebrahimi } break;
1162*b7893ccfSSadaf Ebrahimi
1163*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShadingRateImageFeaturesNV structure members
1164*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: {
1165*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShadingRateImageFeaturesNV *structure = (VkPhysicalDeviceShadingRateImageFeaturesNV *) header;
1166*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShadingRateImageFeaturesNV", "shadingRateImage", structure->shadingRateImage);
1167*b7893ccfSSadaf Ebrahimi
1168*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShadingRateImageFeaturesNV", "shadingRateCoarseSampleOrder", structure->shadingRateCoarseSampleOrder);
1169*b7893ccfSSadaf Ebrahimi } break;
1170*b7893ccfSSadaf Ebrahimi
1171*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineViewportCoarseSampleOrderStateCreateInfoNV structure members
1172*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: {
1173*b7893ccfSSadaf Ebrahimi VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *structure = (VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *) header;
1174*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportCoarseSampleOrderStateCreateInfoNV", "sampleOrderType", "VkCoarseSampleOrderTypeNV", AllVkCoarseSampleOrderTypeNVEnums, structure->sampleOrderType, "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter");
1175*b7893ccfSSadaf Ebrahimi
1176*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineViewportCoarseSampleOrderStateCreateInfoNV", "customSampleOrderCount", "pCustomSampleOrders", structure->customSampleOrderCount, &structure->pCustomSampleOrders, false, true, kVUIDUndefined, "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter");
1177*b7893ccfSSadaf Ebrahimi
1178*b7893ccfSSadaf Ebrahimi if (structure->pCustomSampleOrders != NULL)
1179*b7893ccfSSadaf Ebrahimi {
1180*b7893ccfSSadaf Ebrahimi for (uint32_t customSampleOrderIndex = 0; customSampleOrderIndex < structure->customSampleOrderCount; ++customSampleOrderIndex)
1181*b7893ccfSSadaf Ebrahimi {
1182*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineViewportCoarseSampleOrderStateCreateInfoNV", ParameterName("pCustomSampleOrders[%i].shadingRate", ParameterName::IndexVector{ customSampleOrderIndex }), "VkShadingRatePaletteEntryNV", AllVkShadingRatePaletteEntryNVEnums, structure->pCustomSampleOrders[customSampleOrderIndex].shadingRate, "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter");
1183*b7893ccfSSadaf Ebrahimi
1184*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineViewportCoarseSampleOrderStateCreateInfoNV", ParameterName("pCustomSampleOrders[%i].sampleLocationCount", ParameterName::IndexVector{ customSampleOrderIndex }), ParameterName("pCustomSampleOrders[%i].pSampleLocations", ParameterName::IndexVector{ customSampleOrderIndex }), structure->pCustomSampleOrders[customSampleOrderIndex].sampleLocationCount, &structure->pCustomSampleOrders[customSampleOrderIndex].pSampleLocations, true, true, "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength", "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter");
1185*b7893ccfSSadaf Ebrahimi
1186*b7893ccfSSadaf Ebrahimi if (structure->pCustomSampleOrders[customSampleOrderIndex].pSampleLocations != NULL)
1187*b7893ccfSSadaf Ebrahimi {
1188*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationIndex = 0; sampleLocationIndex < structure->pCustomSampleOrders[customSampleOrderIndex].sampleLocationCount; ++sampleLocationIndex)
1189*b7893ccfSSadaf Ebrahimi {
1190*b7893ccfSSadaf Ebrahimi }
1191*b7893ccfSSadaf Ebrahimi }
1192*b7893ccfSSadaf Ebrahimi }
1193*b7893ccfSSadaf Ebrahimi }
1194*b7893ccfSSadaf Ebrahimi } break;
1195*b7893ccfSSadaf Ebrahimi
1196*b7893ccfSSadaf Ebrahimi // Validation code for VkWriteDescriptorSetAccelerationStructureNV structure members
1197*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: {
1198*b7893ccfSSadaf Ebrahimi VkWriteDescriptorSetAccelerationStructureNV *structure = (VkWriteDescriptorSetAccelerationStructureNV *) header;
1199*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("VkWriteDescriptorSetAccelerationStructureNV", "accelerationStructureCount", "pAccelerationStructures", structure->accelerationStructureCount, structure->pAccelerationStructures, true, true);
1200*b7893ccfSSadaf Ebrahimi } break;
1201*b7893ccfSSadaf Ebrahimi
1202*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure members
1203*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: {
1204*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *structure = (VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *) header;
1205*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", "representativeFragmentTest", structure->representativeFragmentTest);
1206*b7893ccfSSadaf Ebrahimi } break;
1207*b7893ccfSSadaf Ebrahimi
1208*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRepresentativeFragmentTestStateCreateInfoNV structure members
1209*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: {
1210*b7893ccfSSadaf Ebrahimi VkPipelineRepresentativeFragmentTestStateCreateInfoNV *structure = (VkPipelineRepresentativeFragmentTestStateCreateInfoNV *) header;
1211*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineRepresentativeFragmentTestStateCreateInfoNV", "representativeFragmentTestEnable", structure->representativeFragmentTestEnable);
1212*b7893ccfSSadaf Ebrahimi } break;
1213*b7893ccfSSadaf Ebrahimi
1214*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceImageViewImageFormatInfoEXT structure members
1215*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: {
1216*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceImageViewImageFormatInfoEXT *structure = (VkPhysicalDeviceImageViewImageFormatInfoEXT *) header;
1217*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPhysicalDeviceImageViewImageFormatInfoEXT", "imageViewType", "VkImageViewType", AllVkImageViewTypeEnums, structure->imageViewType, "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter");
1218*b7893ccfSSadaf Ebrahimi } break;
1219*b7893ccfSSadaf Ebrahimi
1220*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceQueueGlobalPriorityCreateInfoEXT structure members
1221*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: {
1222*b7893ccfSSadaf Ebrahimi VkDeviceQueueGlobalPriorityCreateInfoEXT *structure = (VkDeviceQueueGlobalPriorityCreateInfoEXT *) header;
1223*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkDeviceQueueGlobalPriorityCreateInfoEXT", "globalPriority", "VkQueueGlobalPriorityEXT", AllVkQueueGlobalPriorityEXTEnums, structure->globalPriority, "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter");
1224*b7893ccfSSadaf Ebrahimi } break;
1225*b7893ccfSSadaf Ebrahimi
1226*b7893ccfSSadaf Ebrahimi // Validation code for VkImportMemoryHostPointerInfoEXT structure members
1227*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
1228*b7893ccfSSadaf Ebrahimi VkImportMemoryHostPointerInfoEXT *structure = (VkImportMemoryHostPointerInfoEXT *) header;
1229*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImportMemoryHostPointerInfoEXT", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, structure->handleType, kRequiredSingleBit, "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter", "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter");
1230*b7893ccfSSadaf Ebrahimi
1231*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("VkImportMemoryHostPointerInfoEXT", "pHostPointer", structure->pHostPointer, kVUIDUndefined);
1232*b7893ccfSSadaf Ebrahimi } break;
1233*b7893ccfSSadaf Ebrahimi
1234*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineCompilerControlCreateInfoAMD structure members
1235*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: {
1236*b7893ccfSSadaf Ebrahimi VkPipelineCompilerControlCreateInfoAMD *structure = (VkPipelineCompilerControlCreateInfoAMD *) header;
1237*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineCompilerControlCreateInfoAMD", "compilerControlFlags", structure->compilerControlFlags, "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask");
1238*b7893ccfSSadaf Ebrahimi } break;
1239*b7893ccfSSadaf Ebrahimi
1240*b7893ccfSSadaf Ebrahimi // Validation code for VkDeviceMemoryOverallocationCreateInfoAMD structure members
1241*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: {
1242*b7893ccfSSadaf Ebrahimi VkDeviceMemoryOverallocationCreateInfoAMD *structure = (VkDeviceMemoryOverallocationCreateInfoAMD *) header;
1243*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkDeviceMemoryOverallocationCreateInfoAMD", "overallocationBehavior", "VkMemoryOverallocationBehaviorAMD", AllVkMemoryOverallocationBehaviorAMDEnums, structure->overallocationBehavior, "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter");
1244*b7893ccfSSadaf Ebrahimi } break;
1245*b7893ccfSSadaf Ebrahimi
1246*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineVertexInputDivisorStateCreateInfoEXT structure members
1247*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
1248*b7893ccfSSadaf Ebrahimi VkPipelineVertexInputDivisorStateCreateInfoEXT *structure = (VkPipelineVertexInputDivisorStateCreateInfoEXT *) header;
1249*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineVertexInputDivisorStateCreateInfoEXT", "vertexBindingDivisorCount", "pVertexBindingDivisors", structure->vertexBindingDivisorCount, &structure->pVertexBindingDivisors, true, true, "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength", "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter");
1250*b7893ccfSSadaf Ebrahimi
1251*b7893ccfSSadaf Ebrahimi if (structure->pVertexBindingDivisors != NULL)
1252*b7893ccfSSadaf Ebrahimi {
1253*b7893ccfSSadaf Ebrahimi for (uint32_t vertexBindingDivisorIndex = 0; vertexBindingDivisorIndex < structure->vertexBindingDivisorCount; ++vertexBindingDivisorIndex)
1254*b7893ccfSSadaf Ebrahimi {
1255*b7893ccfSSadaf Ebrahimi }
1256*b7893ccfSSadaf Ebrahimi }
1257*b7893ccfSSadaf Ebrahimi } break;
1258*b7893ccfSSadaf Ebrahimi
1259*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT structure members
1260*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
1261*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *structure = (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *) header;
1262*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "vertexAttributeInstanceRateDivisor", structure->vertexAttributeInstanceRateDivisor);
1263*b7893ccfSSadaf Ebrahimi
1264*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "vertexAttributeInstanceRateZeroDivisor", structure->vertexAttributeInstanceRateZeroDivisor);
1265*b7893ccfSSadaf Ebrahimi } break;
1266*b7893ccfSSadaf Ebrahimi
1267*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineCreationFeedbackCreateInfoEXT structure members
1268*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: {
1269*b7893ccfSSadaf Ebrahimi VkPipelineCreationFeedbackCreateInfoEXT *structure = (VkPipelineCreationFeedbackCreateInfoEXT *) header;
1270*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("VkPipelineCreationFeedbackCreateInfoEXT", "pPipelineCreationFeedback", structure->pPipelineCreationFeedback, "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter");
1271*b7893ccfSSadaf Ebrahimi
1272*b7893ccfSSadaf Ebrahimi if (structure->pPipelineCreationFeedback != NULL)
1273*b7893ccfSSadaf Ebrahimi {
1274*b7893ccfSSadaf Ebrahimi }
1275*b7893ccfSSadaf Ebrahimi
1276*b7893ccfSSadaf Ebrahimi skip |= validate_array("VkPipelineCreationFeedbackCreateInfoEXT", "pipelineStageCreationFeedbackCount", "pPipelineStageCreationFeedbacks", structure->pipelineStageCreationFeedbackCount, &structure->pPipelineStageCreationFeedbacks, true, true, "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength", "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter");
1277*b7893ccfSSadaf Ebrahimi
1278*b7893ccfSSadaf Ebrahimi if (structure->pPipelineStageCreationFeedbacks != NULL)
1279*b7893ccfSSadaf Ebrahimi {
1280*b7893ccfSSadaf Ebrahimi for (uint32_t pipelineStageCreationFeedbackIndex = 0; pipelineStageCreationFeedbackIndex < structure->pipelineStageCreationFeedbackCount; ++pipelineStageCreationFeedbackIndex)
1281*b7893ccfSSadaf Ebrahimi {
1282*b7893ccfSSadaf Ebrahimi }
1283*b7893ccfSSadaf Ebrahimi }
1284*b7893ccfSSadaf Ebrahimi } break;
1285*b7893ccfSSadaf Ebrahimi
1286*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure members
1287*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: {
1288*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *structure = (VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *) header;
1289*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "computeDerivativeGroupQuads", structure->computeDerivativeGroupQuads);
1290*b7893ccfSSadaf Ebrahimi
1291*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "computeDerivativeGroupLinear", structure->computeDerivativeGroupLinear);
1292*b7893ccfSSadaf Ebrahimi } break;
1293*b7893ccfSSadaf Ebrahimi
1294*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceMeshShaderFeaturesNV structure members
1295*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: {
1296*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMeshShaderFeaturesNV *structure = (VkPhysicalDeviceMeshShaderFeaturesNV *) header;
1297*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMeshShaderFeaturesNV", "taskShader", structure->taskShader);
1298*b7893ccfSSadaf Ebrahimi
1299*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMeshShaderFeaturesNV", "meshShader", structure->meshShader);
1300*b7893ccfSSadaf Ebrahimi } break;
1301*b7893ccfSSadaf Ebrahimi
1302*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV structure members
1303*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: {
1304*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *structure = (VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *) header;
1305*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", "fragmentShaderBarycentric", structure->fragmentShaderBarycentric);
1306*b7893ccfSSadaf Ebrahimi } break;
1307*b7893ccfSSadaf Ebrahimi
1308*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderImageFootprintFeaturesNV structure members
1309*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: {
1310*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderImageFootprintFeaturesNV *structure = (VkPhysicalDeviceShaderImageFootprintFeaturesNV *) header;
1311*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderImageFootprintFeaturesNV", "imageFootprint", structure->imageFootprint);
1312*b7893ccfSSadaf Ebrahimi } break;
1313*b7893ccfSSadaf Ebrahimi
1314*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineViewportExclusiveScissorStateCreateInfoNV structure members
1315*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: {
1316*b7893ccfSSadaf Ebrahimi VkPipelineViewportExclusiveScissorStateCreateInfoNV *structure = (VkPipelineViewportExclusiveScissorStateCreateInfoNV *) header;
1317*b7893ccfSSadaf Ebrahimi if (structure->pExclusiveScissors != NULL)
1318*b7893ccfSSadaf Ebrahimi {
1319*b7893ccfSSadaf Ebrahimi for (uint32_t exclusiveScissorIndex = 0; exclusiveScissorIndex < structure->exclusiveScissorCount; ++exclusiveScissorIndex)
1320*b7893ccfSSadaf Ebrahimi {
1321*b7893ccfSSadaf Ebrahimi }
1322*b7893ccfSSadaf Ebrahimi }
1323*b7893ccfSSadaf Ebrahimi } break;
1324*b7893ccfSSadaf Ebrahimi
1325*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceExclusiveScissorFeaturesNV structure members
1326*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: {
1327*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceExclusiveScissorFeaturesNV *structure = (VkPhysicalDeviceExclusiveScissorFeaturesNV *) header;
1328*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceExclusiveScissorFeaturesNV", "exclusiveScissor", structure->exclusiveScissor);
1329*b7893ccfSSadaf Ebrahimi } break;
1330*b7893ccfSSadaf Ebrahimi
1331*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure members
1332*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: {
1333*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *structure = (VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *) header;
1334*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL", "shaderIntegerFunctions2", structure->shaderIntegerFunctions2);
1335*b7893ccfSSadaf Ebrahimi } break;
1336*b7893ccfSSadaf Ebrahimi
1337*b7893ccfSSadaf Ebrahimi // Validation code for VkSwapchainDisplayNativeHdrCreateInfoAMD structure members
1338*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: {
1339*b7893ccfSSadaf Ebrahimi VkSwapchainDisplayNativeHdrCreateInfoAMD *structure = (VkSwapchainDisplayNativeHdrCreateInfoAMD *) header;
1340*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkSwapchainDisplayNativeHdrCreateInfoAMD", "localDimmingEnable", structure->localDimmingEnable);
1341*b7893ccfSSadaf Ebrahimi } break;
1342*b7893ccfSSadaf Ebrahimi
1343*b7893ccfSSadaf Ebrahimi // Validation code for VkRenderPassFragmentDensityMapCreateInfoEXT structure members
1344*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
1345*b7893ccfSSadaf Ebrahimi VkRenderPassFragmentDensityMapCreateInfoEXT *structure = (VkRenderPassFragmentDensityMapCreateInfoEXT *) header;
1346*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkRenderPassFragmentDensityMapCreateInfoEXT", "fragmentDensityMapAttachment.layout", "VkImageLayout", AllVkImageLayoutEnums, structure->fragmentDensityMapAttachment.layout, "VUID-VkAttachmentReference-layout-parameter");
1347*b7893ccfSSadaf Ebrahimi } break;
1348*b7893ccfSSadaf Ebrahimi
1349*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceScalarBlockLayoutFeaturesEXT structure members
1350*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: {
1351*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *structure = (VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *) header;
1352*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", "scalarBlockLayout", structure->scalarBlockLayout);
1353*b7893ccfSSadaf Ebrahimi } break;
1354*b7893ccfSSadaf Ebrahimi
1355*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure members
1356*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT: {
1357*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *structure = (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *) header;
1358*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "subgroupSizeControl", structure->subgroupSizeControl);
1359*b7893ccfSSadaf Ebrahimi
1360*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "computeFullSubgroups", structure->computeFullSubgroups);
1361*b7893ccfSSadaf Ebrahimi } break;
1362*b7893ccfSSadaf Ebrahimi
1363*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceCoherentMemoryFeaturesAMD structure members
1364*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: {
1365*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceCoherentMemoryFeaturesAMD *structure = (VkPhysicalDeviceCoherentMemoryFeaturesAMD *) header;
1366*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceCoherentMemoryFeaturesAMD", "deviceCoherentMemory", structure->deviceCoherentMemory);
1367*b7893ccfSSadaf Ebrahimi } break;
1368*b7893ccfSSadaf Ebrahimi
1369*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceMemoryPriorityFeaturesEXT structure members
1370*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: {
1371*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryPriorityFeaturesEXT *structure = (VkPhysicalDeviceMemoryPriorityFeaturesEXT *) header;
1372*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceMemoryPriorityFeaturesEXT", "memoryPriority", structure->memoryPriority);
1373*b7893ccfSSadaf Ebrahimi } break;
1374*b7893ccfSSadaf Ebrahimi
1375*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV structure members
1376*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: {
1377*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *structure = (VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *) header;
1378*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", "dedicatedAllocationImageAliasing", structure->dedicatedAllocationImageAliasing);
1379*b7893ccfSSadaf Ebrahimi } break;
1380*b7893ccfSSadaf Ebrahimi
1381*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure members
1382*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: {
1383*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *structure = (VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *) header;
1384*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "bufferDeviceAddress", structure->bufferDeviceAddress);
1385*b7893ccfSSadaf Ebrahimi
1386*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "bufferDeviceAddressCaptureReplay", structure->bufferDeviceAddressCaptureReplay);
1387*b7893ccfSSadaf Ebrahimi
1388*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "bufferDeviceAddressMultiDevice", structure->bufferDeviceAddressMultiDevice);
1389*b7893ccfSSadaf Ebrahimi } break;
1390*b7893ccfSSadaf Ebrahimi
1391*b7893ccfSSadaf Ebrahimi // Validation code for VkImageStencilUsageCreateInfoEXT structure members
1392*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT: {
1393*b7893ccfSSadaf Ebrahimi VkImageStencilUsageCreateInfoEXT *structure = (VkImageStencilUsageCreateInfoEXT *) header;
1394*b7893ccfSSadaf Ebrahimi skip |= validate_flags("VkImageStencilUsageCreateInfoEXT", "stencilUsage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, structure->stencilUsage, kRequiredFlags, "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter", "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask");
1395*b7893ccfSSadaf Ebrahimi } break;
1396*b7893ccfSSadaf Ebrahimi
1397*b7893ccfSSadaf Ebrahimi // Validation code for VkValidationFeaturesEXT structure members
1398*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
1399*b7893ccfSSadaf Ebrahimi VkValidationFeaturesEXT *structure = (VkValidationFeaturesEXT *) header;
1400*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkValidationFeaturesEXT", "enabledValidationFeatureCount", "pEnabledValidationFeatures", "VkValidationFeatureEnableEXT", AllVkValidationFeatureEnableEXTEnums, structure->enabledValidationFeatureCount, structure->pEnabledValidationFeatures, false, true);
1401*b7893ccfSSadaf Ebrahimi
1402*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("VkValidationFeaturesEXT", "disabledValidationFeatureCount", "pDisabledValidationFeatures", "VkValidationFeatureDisableEXT", AllVkValidationFeatureDisableEXTEnums, structure->disabledValidationFeatureCount, structure->pDisabledValidationFeatures, false, true);
1403*b7893ccfSSadaf Ebrahimi } break;
1404*b7893ccfSSadaf Ebrahimi
1405*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceCooperativeMatrixFeaturesNV structure members
1406*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: {
1407*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceCooperativeMatrixFeaturesNV *structure = (VkPhysicalDeviceCooperativeMatrixFeaturesNV *) header;
1408*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceCooperativeMatrixFeaturesNV", "cooperativeMatrix", structure->cooperativeMatrix);
1409*b7893ccfSSadaf Ebrahimi
1410*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceCooperativeMatrixFeaturesNV", "cooperativeMatrixRobustBufferAccess", structure->cooperativeMatrixRobustBufferAccess);
1411*b7893ccfSSadaf Ebrahimi } break;
1412*b7893ccfSSadaf Ebrahimi
1413*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceCoverageReductionModeFeaturesNV structure members
1414*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: {
1415*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceCoverageReductionModeFeaturesNV *structure = (VkPhysicalDeviceCoverageReductionModeFeaturesNV *) header;
1416*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceCoverageReductionModeFeaturesNV", "coverageReductionMode", structure->coverageReductionMode);
1417*b7893ccfSSadaf Ebrahimi } break;
1418*b7893ccfSSadaf Ebrahimi
1419*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineCoverageReductionStateCreateInfoNV structure members
1420*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: {
1421*b7893ccfSSadaf Ebrahimi VkPipelineCoverageReductionStateCreateInfoNV *structure = (VkPipelineCoverageReductionStateCreateInfoNV *) header;
1422*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("VkPipelineCoverageReductionStateCreateInfoNV", "flags", structure->flags, "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask");
1423*b7893ccfSSadaf Ebrahimi
1424*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineCoverageReductionStateCreateInfoNV", "coverageReductionMode", "VkCoverageReductionModeNV", AllVkCoverageReductionModeNVEnums, structure->coverageReductionMode, "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter");
1425*b7893ccfSSadaf Ebrahimi } break;
1426*b7893ccfSSadaf Ebrahimi
1427*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure members
1428*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: {
1429*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *structure = (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *) header;
1430*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "fragmentShaderSampleInterlock", structure->fragmentShaderSampleInterlock);
1431*b7893ccfSSadaf Ebrahimi
1432*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "fragmentShaderPixelInterlock", structure->fragmentShaderPixelInterlock);
1433*b7893ccfSSadaf Ebrahimi
1434*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "fragmentShaderShadingRateInterlock", structure->fragmentShaderShadingRateInterlock);
1435*b7893ccfSSadaf Ebrahimi } break;
1436*b7893ccfSSadaf Ebrahimi
1437*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure members
1438*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: {
1439*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *structure = (VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *) header;
1440*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "ycbcrImageArrays", structure->ycbcrImageArrays);
1441*b7893ccfSSadaf Ebrahimi } break;
1442*b7893ccfSSadaf Ebrahimi
1443*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
1444*b7893ccfSSadaf Ebrahimi // Validation code for VkSurfaceFullScreenExclusiveInfoEXT structure members
1445*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: {
1446*b7893ccfSSadaf Ebrahimi VkSurfaceFullScreenExclusiveInfoEXT *structure = (VkSurfaceFullScreenExclusiveInfoEXT *) header;
1447*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkSurfaceFullScreenExclusiveInfoEXT", "fullScreenExclusive", "VkFullScreenExclusiveEXT", AllVkFullScreenExclusiveEXTEnums, structure->fullScreenExclusive, "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter");
1448*b7893ccfSSadaf Ebrahimi } break;
1449*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
1450*b7893ccfSSadaf Ebrahimi
1451*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
1452*b7893ccfSSadaf Ebrahimi // Validation code for VkSurfaceCapabilitiesFullScreenExclusiveEXT structure members
1453*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: {
1454*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilitiesFullScreenExclusiveEXT *structure = (VkSurfaceCapabilitiesFullScreenExclusiveEXT *) header;
1455*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkSurfaceCapabilitiesFullScreenExclusiveEXT", "fullScreenExclusiveSupported", structure->fullScreenExclusiveSupported);
1456*b7893ccfSSadaf Ebrahimi } break;
1457*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
1458*b7893ccfSSadaf Ebrahimi
1459*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceLineRasterizationFeaturesEXT structure members
1460*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: {
1461*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceLineRasterizationFeaturesEXT *structure = (VkPhysicalDeviceLineRasterizationFeaturesEXT *) header;
1462*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "rectangularLines", structure->rectangularLines);
1463*b7893ccfSSadaf Ebrahimi
1464*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "bresenhamLines", structure->bresenhamLines);
1465*b7893ccfSSadaf Ebrahimi
1466*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "smoothLines", structure->smoothLines);
1467*b7893ccfSSadaf Ebrahimi
1468*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "stippledRectangularLines", structure->stippledRectangularLines);
1469*b7893ccfSSadaf Ebrahimi
1470*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "stippledBresenhamLines", structure->stippledBresenhamLines);
1471*b7893ccfSSadaf Ebrahimi
1472*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceLineRasterizationFeaturesEXT", "stippledSmoothLines", structure->stippledSmoothLines);
1473*b7893ccfSSadaf Ebrahimi } break;
1474*b7893ccfSSadaf Ebrahimi
1475*b7893ccfSSadaf Ebrahimi // Validation code for VkPipelineRasterizationLineStateCreateInfoEXT structure members
1476*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: {
1477*b7893ccfSSadaf Ebrahimi VkPipelineRasterizationLineStateCreateInfoEXT *structure = (VkPipelineRasterizationLineStateCreateInfoEXT *) header;
1478*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("VkPipelineRasterizationLineStateCreateInfoEXT", "lineRasterizationMode", "VkLineRasterizationModeEXT", AllVkLineRasterizationModeEXTEnums, structure->lineRasterizationMode, "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter");
1479*b7893ccfSSadaf Ebrahimi
1480*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPipelineRasterizationLineStateCreateInfoEXT", "stippledLineEnable", structure->stippledLineEnable);
1481*b7893ccfSSadaf Ebrahimi } break;
1482*b7893ccfSSadaf Ebrahimi
1483*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceHostQueryResetFeaturesEXT structure members
1484*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
1485*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceHostQueryResetFeaturesEXT *structure = (VkPhysicalDeviceHostQueryResetFeaturesEXT *) header;
1486*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceHostQueryResetFeaturesEXT", "hostQueryReset", structure->hostQueryReset);
1487*b7893ccfSSadaf Ebrahimi } break;
1488*b7893ccfSSadaf Ebrahimi
1489*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceIndexTypeUint8FeaturesEXT structure members
1490*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
1491*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceIndexTypeUint8FeaturesEXT *structure = (VkPhysicalDeviceIndexTypeUint8FeaturesEXT *) header;
1492*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceIndexTypeUint8FeaturesEXT", "indexTypeUint8", structure->indexTypeUint8);
1493*b7893ccfSSadaf Ebrahimi } break;
1494*b7893ccfSSadaf Ebrahimi
1495*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT structure members
1496*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: {
1497*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *structure = (VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *) header;
1498*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", "shaderDemoteToHelperInvocation", structure->shaderDemoteToHelperInvocation);
1499*b7893ccfSSadaf Ebrahimi } break;
1500*b7893ccfSSadaf Ebrahimi
1501*b7893ccfSSadaf Ebrahimi // Validation code for VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure members
1502*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
1503*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *structure = (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *) header;
1504*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", "texelBufferAlignment", structure->texelBufferAlignment);
1505*b7893ccfSSadaf Ebrahimi } break;
1506*b7893ccfSSadaf Ebrahimi default:
1507*b7893ccfSSadaf Ebrahimi skip = false;
1508*b7893ccfSSadaf Ebrahimi }
1509*b7893ccfSSadaf Ebrahimi return skip;
1510*b7893ccfSSadaf Ebrahimi }
1511*b7893ccfSSadaf Ebrahimi
1512*b7893ccfSSadaf Ebrahimi
OutputExtensionError(const std::string & api_name,const std::string & extension_name)1513*b7893ccfSSadaf Ebrahimi bool StatelessValidation::OutputExtensionError(const std::string &api_name, const std::string &extension_name) {
1514*b7893ccfSSadaf Ebrahimi return log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
1515*b7893ccfSSadaf Ebrahimi kVUID_PVError_ExtensionNotEnabled, "Attemped to call %s() but its required extension %s has not been enabled\n",
1516*b7893ccfSSadaf Ebrahimi api_name.c_str(), extension_name.c_str());
1517*b7893ccfSSadaf Ebrahimi }
1518*b7893ccfSSadaf Ebrahimi
1519*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateInstance(const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)1520*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateInstance(
1521*b7893ccfSSadaf Ebrahimi const VkInstanceCreateInfo* pCreateInfo,
1522*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1523*b7893ccfSSadaf Ebrahimi VkInstance* pInstance) {
1524*b7893ccfSSadaf Ebrahimi bool skip = false;
1525*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateInstance", "pCreateInfo", "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, true, "VUID-vkCreateInstance-pCreateInfo-parameter", "VUID-VkInstanceCreateInfo-sType-sType");
1526*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
1527*b7893ccfSSadaf Ebrahimi {
1528*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkInstanceCreateInfo[] = { VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT };
1529*b7893ccfSSadaf Ebrahimi
1530*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateInstance", "pCreateInfo->pNext", "VkDebugReportCallbackCreateInfoEXT, VkDebugUtilsMessengerCreateInfoEXT, VkValidationFeaturesEXT, VkValidationFlagsEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkInstanceCreateInfo), allowed_structs_VkInstanceCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkInstanceCreateInfo-pNext-pNext");
1531*b7893ccfSSadaf Ebrahimi
1532*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateInstance", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkInstanceCreateInfo-flags-zerobitmask");
1533*b7893ccfSSadaf Ebrahimi
1534*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateInstance", "pCreateInfo->pApplicationInfo", "VK_STRUCTURE_TYPE_APPLICATION_INFO", pCreateInfo->pApplicationInfo, VK_STRUCTURE_TYPE_APPLICATION_INFO, false, "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter", "VUID-VkApplicationInfo-sType-sType");
1535*b7893ccfSSadaf Ebrahimi
1536*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pApplicationInfo != NULL)
1537*b7893ccfSSadaf Ebrahimi {
1538*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateInstance", "pCreateInfo->pApplicationInfo->pNext", NULL, pCreateInfo->pApplicationInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkApplicationInfo-pNext-pNext");
1539*b7893ccfSSadaf Ebrahimi }
1540*b7893ccfSSadaf Ebrahimi
1541*b7893ccfSSadaf Ebrahimi skip |= validate_string_array("vkCreateInstance", "pCreateInfo->enabledLayerCount", "pCreateInfo->ppEnabledLayerNames", pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, false, true, kVUIDUndefined, "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter");
1542*b7893ccfSSadaf Ebrahimi
1543*b7893ccfSSadaf Ebrahimi skip |= validate_string_array("vkCreateInstance", "pCreateInfo->enabledExtensionCount", "pCreateInfo->ppEnabledExtensionNames", pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames, false, true, kVUIDUndefined, "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter");
1544*b7893ccfSSadaf Ebrahimi }
1545*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1546*b7893ccfSSadaf Ebrahimi {
1547*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1548*b7893ccfSSadaf Ebrahimi
1549*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1550*b7893ccfSSadaf Ebrahimi
1551*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1552*b7893ccfSSadaf Ebrahimi
1553*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1554*b7893ccfSSadaf Ebrahimi {
1555*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1556*b7893ccfSSadaf Ebrahimi
1557*b7893ccfSSadaf Ebrahimi }
1558*b7893ccfSSadaf Ebrahimi
1559*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1560*b7893ccfSSadaf Ebrahimi {
1561*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1562*b7893ccfSSadaf Ebrahimi
1563*b7893ccfSSadaf Ebrahimi }
1564*b7893ccfSSadaf Ebrahimi }
1565*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateInstance", "pInstance", pInstance, "VUID-vkCreateInstance-pInstance-parameter");
1566*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateInstance(pCreateInfo, pAllocator, pInstance);
1567*b7893ccfSSadaf Ebrahimi return skip;
1568*b7893ccfSSadaf Ebrahimi }
1569*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyInstance(VkInstance instance,const VkAllocationCallbacks * pAllocator)1570*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyInstance(
1571*b7893ccfSSadaf Ebrahimi VkInstance instance,
1572*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
1573*b7893ccfSSadaf Ebrahimi bool skip = false;
1574*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1575*b7893ccfSSadaf Ebrahimi {
1576*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyInstance", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1577*b7893ccfSSadaf Ebrahimi
1578*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyInstance", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1579*b7893ccfSSadaf Ebrahimi
1580*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyInstance", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1581*b7893ccfSSadaf Ebrahimi
1582*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1583*b7893ccfSSadaf Ebrahimi {
1584*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyInstance", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1585*b7893ccfSSadaf Ebrahimi
1586*b7893ccfSSadaf Ebrahimi }
1587*b7893ccfSSadaf Ebrahimi
1588*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1589*b7893ccfSSadaf Ebrahimi {
1590*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyInstance", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1591*b7893ccfSSadaf Ebrahimi
1592*b7893ccfSSadaf Ebrahimi }
1593*b7893ccfSSadaf Ebrahimi }
1594*b7893ccfSSadaf Ebrahimi return skip;
1595*b7893ccfSSadaf Ebrahimi }
1596*b7893ccfSSadaf Ebrahimi
PreCallValidateEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)1597*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateEnumeratePhysicalDevices(
1598*b7893ccfSSadaf Ebrahimi VkInstance instance,
1599*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceCount,
1600*b7893ccfSSadaf Ebrahimi VkPhysicalDevice* pPhysicalDevices) {
1601*b7893ccfSSadaf Ebrahimi bool skip = false;
1602*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkEnumeratePhysicalDevices", "pPhysicalDeviceCount", "pPhysicalDevices", pPhysicalDeviceCount, &pPhysicalDevices, true, false, false, kVUIDUndefined, "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter");
1603*b7893ccfSSadaf Ebrahimi return skip;
1604*b7893ccfSSadaf Ebrahimi }
1605*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)1606*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFeatures(
1607*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1608*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures* pFeatures) {
1609*b7893ccfSSadaf Ebrahimi bool skip = false;
1610*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceFeatures", "pFeatures", pFeatures, "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter");
1611*b7893ccfSSadaf Ebrahimi return skip;
1612*b7893ccfSSadaf Ebrahimi }
1613*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)1614*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFormatProperties(
1615*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1616*b7893ccfSSadaf Ebrahimi VkFormat format,
1617*b7893ccfSSadaf Ebrahimi VkFormatProperties* pFormatProperties) {
1618*b7893ccfSSadaf Ebrahimi bool skip = false;
1619*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceFormatProperties", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter");
1620*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceFormatProperties", "pFormatProperties", pFormatProperties, "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter");
1621*b7893ccfSSadaf Ebrahimi if (pFormatProperties != NULL)
1622*b7893ccfSSadaf Ebrahimi {
1623*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1624*b7893ccfSSadaf Ebrahimi }
1625*b7893ccfSSadaf Ebrahimi return skip;
1626*b7893ccfSSadaf Ebrahimi }
1627*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)1628*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceImageFormatProperties(
1629*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1630*b7893ccfSSadaf Ebrahimi VkFormat format,
1631*b7893ccfSSadaf Ebrahimi VkImageType type,
1632*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
1633*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
1634*b7893ccfSSadaf Ebrahimi VkImageCreateFlags flags,
1635*b7893ccfSSadaf Ebrahimi VkImageFormatProperties* pImageFormatProperties) {
1636*b7893ccfSSadaf Ebrahimi bool skip = false;
1637*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter");
1638*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties", "type", "VkImageType", AllVkImageTypeEnums, type, "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter");
1639*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties", "tiling", "VkImageTiling", AllVkImageTilingEnums, tiling, "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter");
1640*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties", "usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, usage, kRequiredFlags, "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter", "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask");
1641*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties", "flags", "VkImageCreateFlagBits", AllVkImageCreateFlagBits, flags, kOptionalFlags, "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter");
1642*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceImageFormatProperties", "pImageFormatProperties", pImageFormatProperties, "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter");
1643*b7893ccfSSadaf Ebrahimi if (pImageFormatProperties != NULL)
1644*b7893ccfSSadaf Ebrahimi {
1645*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1646*b7893ccfSSadaf Ebrahimi }
1647*b7893ccfSSadaf Ebrahimi return skip;
1648*b7893ccfSSadaf Ebrahimi }
1649*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)1650*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceProperties(
1651*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1652*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties* pProperties) {
1653*b7893ccfSSadaf Ebrahimi bool skip = false;
1654*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceProperties", "pProperties", pProperties, "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter");
1655*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
1656*b7893ccfSSadaf Ebrahimi {
1657*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1658*b7893ccfSSadaf Ebrahimi }
1659*b7893ccfSSadaf Ebrahimi return skip;
1660*b7893ccfSSadaf Ebrahimi }
1661*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)1662*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceQueueFamilyProperties(
1663*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1664*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
1665*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties* pQueueFamilyProperties) {
1666*b7893ccfSSadaf Ebrahimi bool skip = false;
1667*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceQueueFamilyProperties", "pQueueFamilyPropertyCount", "pQueueFamilyProperties", pQueueFamilyPropertyCount, &pQueueFamilyProperties, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter");
1668*b7893ccfSSadaf Ebrahimi if (pQueueFamilyProperties != NULL)
1669*b7893ccfSSadaf Ebrahimi {
1670*b7893ccfSSadaf Ebrahimi for (uint32_t pQueueFamilyPropertyIndex = 0; pQueueFamilyPropertyIndex < *pQueueFamilyPropertyCount; ++pQueueFamilyPropertyIndex)
1671*b7893ccfSSadaf Ebrahimi {
1672*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1673*b7893ccfSSadaf Ebrahimi }
1674*b7893ccfSSadaf Ebrahimi }
1675*b7893ccfSSadaf Ebrahimi return skip;
1676*b7893ccfSSadaf Ebrahimi }
1677*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)1678*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceMemoryProperties(
1679*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1680*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
1681*b7893ccfSSadaf Ebrahimi bool skip = false;
1682*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceMemoryProperties", "pMemoryProperties", pMemoryProperties, "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter");
1683*b7893ccfSSadaf Ebrahimi if (pMemoryProperties != NULL)
1684*b7893ccfSSadaf Ebrahimi {
1685*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1686*b7893ccfSSadaf Ebrahimi }
1687*b7893ccfSSadaf Ebrahimi return skip;
1688*b7893ccfSSadaf Ebrahimi }
1689*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDevice(VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)1690*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDevice(
1691*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1692*b7893ccfSSadaf Ebrahimi const VkDeviceCreateInfo* pCreateInfo,
1693*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1694*b7893ccfSSadaf Ebrahimi VkDevice* pDevice) {
1695*b7893ccfSSadaf Ebrahimi bool skip = false;
1696*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDevice", "pCreateInfo", "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, true, "VUID-vkCreateDevice-pCreateInfo-parameter", "VUID-VkDeviceCreateInfo-sType-sType");
1697*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
1698*b7893ccfSSadaf Ebrahimi {
1699*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDeviceCreateInfo[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT };
1700*b7893ccfSSadaf Ebrahimi
1701*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDevice", "pCreateInfo->pNext", "VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeaturesKHR, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeaturesKHR, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64FeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderFloat16Int8FeaturesKHR, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkanMemoryModelFeaturesKHR, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDeviceCreateInfo), allowed_structs_VkDeviceCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDeviceCreateInfo-pNext-pNext");
1702*b7893ccfSSadaf Ebrahimi
1703*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDevice", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDeviceCreateInfo-flags-zerobitmask");
1704*b7893ccfSSadaf Ebrahimi
1705*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateDevice", "pCreateInfo->queueCreateInfoCount", "pCreateInfo->pQueueCreateInfos", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", pCreateInfo->queueCreateInfoCount, pCreateInfo->pQueueCreateInfos, VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, true, true, "VUID-VkDeviceQueueCreateInfo-sType-sType", "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter", "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength");
1706*b7893ccfSSadaf Ebrahimi
1707*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pQueueCreateInfos != NULL)
1708*b7893ccfSSadaf Ebrahimi {
1709*b7893ccfSSadaf Ebrahimi for (uint32_t queueCreateInfoIndex = 0; queueCreateInfoIndex < pCreateInfo->queueCreateInfoCount; ++queueCreateInfoIndex)
1710*b7893ccfSSadaf Ebrahimi {
1711*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDeviceQueueCreateInfo[] = { VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT };
1712*b7893ccfSSadaf Ebrahimi
1713*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDevice", ParameterName("pCreateInfo->pQueueCreateInfos[%i].pNext", ParameterName::IndexVector{ queueCreateInfoIndex }), "VkDeviceQueueGlobalPriorityCreateInfoEXT", pCreateInfo->pQueueCreateInfos[queueCreateInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkDeviceQueueCreateInfo), allowed_structs_VkDeviceQueueCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDeviceQueueCreateInfo-pNext-pNext");
1714*b7893ccfSSadaf Ebrahimi
1715*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDevice", ParameterName("pCreateInfo->pQueueCreateInfos[%i].flags", ParameterName::IndexVector{ queueCreateInfoIndex }), "VkDeviceQueueCreateFlagBits", AllVkDeviceQueueCreateFlagBits, pCreateInfo->pQueueCreateInfos[queueCreateInfoIndex].flags, kOptionalFlags, "VUID-VkDeviceQueueCreateInfo-flags-parameter");
1716*b7893ccfSSadaf Ebrahimi
1717*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateDevice", ParameterName("pCreateInfo->pQueueCreateInfos[%i].queueCount", ParameterName::IndexVector{ queueCreateInfoIndex }), ParameterName("pCreateInfo->pQueueCreateInfos[%i].pQueuePriorities", ParameterName::IndexVector{ queueCreateInfoIndex }), pCreateInfo->pQueueCreateInfos[queueCreateInfoIndex].queueCount, &pCreateInfo->pQueueCreateInfos[queueCreateInfoIndex].pQueuePriorities, true, true, "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength", "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter");
1718*b7893ccfSSadaf Ebrahimi }
1719*b7893ccfSSadaf Ebrahimi }
1720*b7893ccfSSadaf Ebrahimi
1721*b7893ccfSSadaf Ebrahimi skip |= validate_string_array("vkCreateDevice", "pCreateInfo->enabledLayerCount", "pCreateInfo->ppEnabledLayerNames", pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, false, true, kVUIDUndefined, "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter");
1722*b7893ccfSSadaf Ebrahimi
1723*b7893ccfSSadaf Ebrahimi skip |= validate_string_array("vkCreateDevice", "pCreateInfo->enabledExtensionCount", "pCreateInfo->ppEnabledExtensionNames", pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames, false, true, kVUIDUndefined, "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter");
1724*b7893ccfSSadaf Ebrahimi
1725*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pEnabledFeatures != NULL)
1726*b7893ccfSSadaf Ebrahimi {
1727*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->robustBufferAccess", pCreateInfo->pEnabledFeatures->robustBufferAccess);
1728*b7893ccfSSadaf Ebrahimi
1729*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->fullDrawIndexUint32", pCreateInfo->pEnabledFeatures->fullDrawIndexUint32);
1730*b7893ccfSSadaf Ebrahimi
1731*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->imageCubeArray", pCreateInfo->pEnabledFeatures->imageCubeArray);
1732*b7893ccfSSadaf Ebrahimi
1733*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->independentBlend", pCreateInfo->pEnabledFeatures->independentBlend);
1734*b7893ccfSSadaf Ebrahimi
1735*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->geometryShader", pCreateInfo->pEnabledFeatures->geometryShader);
1736*b7893ccfSSadaf Ebrahimi
1737*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->tessellationShader", pCreateInfo->pEnabledFeatures->tessellationShader);
1738*b7893ccfSSadaf Ebrahimi
1739*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sampleRateShading", pCreateInfo->pEnabledFeatures->sampleRateShading);
1740*b7893ccfSSadaf Ebrahimi
1741*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->dualSrcBlend", pCreateInfo->pEnabledFeatures->dualSrcBlend);
1742*b7893ccfSSadaf Ebrahimi
1743*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->logicOp", pCreateInfo->pEnabledFeatures->logicOp);
1744*b7893ccfSSadaf Ebrahimi
1745*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->multiDrawIndirect", pCreateInfo->pEnabledFeatures->multiDrawIndirect);
1746*b7893ccfSSadaf Ebrahimi
1747*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->drawIndirectFirstInstance", pCreateInfo->pEnabledFeatures->drawIndirectFirstInstance);
1748*b7893ccfSSadaf Ebrahimi
1749*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->depthClamp", pCreateInfo->pEnabledFeatures->depthClamp);
1750*b7893ccfSSadaf Ebrahimi
1751*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->depthBiasClamp", pCreateInfo->pEnabledFeatures->depthBiasClamp);
1752*b7893ccfSSadaf Ebrahimi
1753*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->fillModeNonSolid", pCreateInfo->pEnabledFeatures->fillModeNonSolid);
1754*b7893ccfSSadaf Ebrahimi
1755*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->depthBounds", pCreateInfo->pEnabledFeatures->depthBounds);
1756*b7893ccfSSadaf Ebrahimi
1757*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->wideLines", pCreateInfo->pEnabledFeatures->wideLines);
1758*b7893ccfSSadaf Ebrahimi
1759*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->largePoints", pCreateInfo->pEnabledFeatures->largePoints);
1760*b7893ccfSSadaf Ebrahimi
1761*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->alphaToOne", pCreateInfo->pEnabledFeatures->alphaToOne);
1762*b7893ccfSSadaf Ebrahimi
1763*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->multiViewport", pCreateInfo->pEnabledFeatures->multiViewport);
1764*b7893ccfSSadaf Ebrahimi
1765*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->samplerAnisotropy", pCreateInfo->pEnabledFeatures->samplerAnisotropy);
1766*b7893ccfSSadaf Ebrahimi
1767*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->textureCompressionETC2", pCreateInfo->pEnabledFeatures->textureCompressionETC2);
1768*b7893ccfSSadaf Ebrahimi
1769*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->textureCompressionASTC_LDR", pCreateInfo->pEnabledFeatures->textureCompressionASTC_LDR);
1770*b7893ccfSSadaf Ebrahimi
1771*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->textureCompressionBC", pCreateInfo->pEnabledFeatures->textureCompressionBC);
1772*b7893ccfSSadaf Ebrahimi
1773*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->occlusionQueryPrecise", pCreateInfo->pEnabledFeatures->occlusionQueryPrecise);
1774*b7893ccfSSadaf Ebrahimi
1775*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->pipelineStatisticsQuery", pCreateInfo->pEnabledFeatures->pipelineStatisticsQuery);
1776*b7893ccfSSadaf Ebrahimi
1777*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->vertexPipelineStoresAndAtomics", pCreateInfo->pEnabledFeatures->vertexPipelineStoresAndAtomics);
1778*b7893ccfSSadaf Ebrahimi
1779*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->fragmentStoresAndAtomics", pCreateInfo->pEnabledFeatures->fragmentStoresAndAtomics);
1780*b7893ccfSSadaf Ebrahimi
1781*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderTessellationAndGeometryPointSize", pCreateInfo->pEnabledFeatures->shaderTessellationAndGeometryPointSize);
1782*b7893ccfSSadaf Ebrahimi
1783*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderImageGatherExtended", pCreateInfo->pEnabledFeatures->shaderImageGatherExtended);
1784*b7893ccfSSadaf Ebrahimi
1785*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageImageExtendedFormats", pCreateInfo->pEnabledFeatures->shaderStorageImageExtendedFormats);
1786*b7893ccfSSadaf Ebrahimi
1787*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageImageMultisample", pCreateInfo->pEnabledFeatures->shaderStorageImageMultisample);
1788*b7893ccfSSadaf Ebrahimi
1789*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageImageReadWithoutFormat", pCreateInfo->pEnabledFeatures->shaderStorageImageReadWithoutFormat);
1790*b7893ccfSSadaf Ebrahimi
1791*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageImageWriteWithoutFormat", pCreateInfo->pEnabledFeatures->shaderStorageImageWriteWithoutFormat);
1792*b7893ccfSSadaf Ebrahimi
1793*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderUniformBufferArrayDynamicIndexing", pCreateInfo->pEnabledFeatures->shaderUniformBufferArrayDynamicIndexing);
1794*b7893ccfSSadaf Ebrahimi
1795*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderSampledImageArrayDynamicIndexing", pCreateInfo->pEnabledFeatures->shaderSampledImageArrayDynamicIndexing);
1796*b7893ccfSSadaf Ebrahimi
1797*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageBufferArrayDynamicIndexing", pCreateInfo->pEnabledFeatures->shaderStorageBufferArrayDynamicIndexing);
1798*b7893ccfSSadaf Ebrahimi
1799*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderStorageImageArrayDynamicIndexing", pCreateInfo->pEnabledFeatures->shaderStorageImageArrayDynamicIndexing);
1800*b7893ccfSSadaf Ebrahimi
1801*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderClipDistance", pCreateInfo->pEnabledFeatures->shaderClipDistance);
1802*b7893ccfSSadaf Ebrahimi
1803*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderCullDistance", pCreateInfo->pEnabledFeatures->shaderCullDistance);
1804*b7893ccfSSadaf Ebrahimi
1805*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderFloat64", pCreateInfo->pEnabledFeatures->shaderFloat64);
1806*b7893ccfSSadaf Ebrahimi
1807*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderInt64", pCreateInfo->pEnabledFeatures->shaderInt64);
1808*b7893ccfSSadaf Ebrahimi
1809*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderInt16", pCreateInfo->pEnabledFeatures->shaderInt16);
1810*b7893ccfSSadaf Ebrahimi
1811*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderResourceResidency", pCreateInfo->pEnabledFeatures->shaderResourceResidency);
1812*b7893ccfSSadaf Ebrahimi
1813*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->shaderResourceMinLod", pCreateInfo->pEnabledFeatures->shaderResourceMinLod);
1814*b7893ccfSSadaf Ebrahimi
1815*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseBinding", pCreateInfo->pEnabledFeatures->sparseBinding);
1816*b7893ccfSSadaf Ebrahimi
1817*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidencyBuffer", pCreateInfo->pEnabledFeatures->sparseResidencyBuffer);
1818*b7893ccfSSadaf Ebrahimi
1819*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidencyImage2D", pCreateInfo->pEnabledFeatures->sparseResidencyImage2D);
1820*b7893ccfSSadaf Ebrahimi
1821*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidencyImage3D", pCreateInfo->pEnabledFeatures->sparseResidencyImage3D);
1822*b7893ccfSSadaf Ebrahimi
1823*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidency2Samples", pCreateInfo->pEnabledFeatures->sparseResidency2Samples);
1824*b7893ccfSSadaf Ebrahimi
1825*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidency4Samples", pCreateInfo->pEnabledFeatures->sparseResidency4Samples);
1826*b7893ccfSSadaf Ebrahimi
1827*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidency8Samples", pCreateInfo->pEnabledFeatures->sparseResidency8Samples);
1828*b7893ccfSSadaf Ebrahimi
1829*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidency16Samples", pCreateInfo->pEnabledFeatures->sparseResidency16Samples);
1830*b7893ccfSSadaf Ebrahimi
1831*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->sparseResidencyAliased", pCreateInfo->pEnabledFeatures->sparseResidencyAliased);
1832*b7893ccfSSadaf Ebrahimi
1833*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->variableMultisampleRate", pCreateInfo->pEnabledFeatures->variableMultisampleRate);
1834*b7893ccfSSadaf Ebrahimi
1835*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateDevice", "pCreateInfo->pEnabledFeatures->inheritedQueries", pCreateInfo->pEnabledFeatures->inheritedQueries);
1836*b7893ccfSSadaf Ebrahimi }
1837*b7893ccfSSadaf Ebrahimi }
1838*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1839*b7893ccfSSadaf Ebrahimi {
1840*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1841*b7893ccfSSadaf Ebrahimi
1842*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1843*b7893ccfSSadaf Ebrahimi
1844*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1845*b7893ccfSSadaf Ebrahimi
1846*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1847*b7893ccfSSadaf Ebrahimi {
1848*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1849*b7893ccfSSadaf Ebrahimi
1850*b7893ccfSSadaf Ebrahimi }
1851*b7893ccfSSadaf Ebrahimi
1852*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1853*b7893ccfSSadaf Ebrahimi {
1854*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1855*b7893ccfSSadaf Ebrahimi
1856*b7893ccfSSadaf Ebrahimi }
1857*b7893ccfSSadaf Ebrahimi }
1858*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDevice", "pDevice", pDevice, "VUID-vkCreateDevice-pDevice-parameter");
1859*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
1860*b7893ccfSSadaf Ebrahimi return skip;
1861*b7893ccfSSadaf Ebrahimi }
1862*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDevice(VkDevice device,const VkAllocationCallbacks * pAllocator)1863*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDevice(
1864*b7893ccfSSadaf Ebrahimi VkDevice device,
1865*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
1866*b7893ccfSSadaf Ebrahimi bool skip = false;
1867*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1868*b7893ccfSSadaf Ebrahimi {
1869*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDevice", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1870*b7893ccfSSadaf Ebrahimi
1871*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDevice", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1872*b7893ccfSSadaf Ebrahimi
1873*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDevice", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1874*b7893ccfSSadaf Ebrahimi
1875*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1876*b7893ccfSSadaf Ebrahimi {
1877*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDevice", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1878*b7893ccfSSadaf Ebrahimi
1879*b7893ccfSSadaf Ebrahimi }
1880*b7893ccfSSadaf Ebrahimi
1881*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1882*b7893ccfSSadaf Ebrahimi {
1883*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDevice", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1884*b7893ccfSSadaf Ebrahimi
1885*b7893ccfSSadaf Ebrahimi }
1886*b7893ccfSSadaf Ebrahimi }
1887*b7893ccfSSadaf Ebrahimi return skip;
1888*b7893ccfSSadaf Ebrahimi }
1889*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)1890*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceQueue(
1891*b7893ccfSSadaf Ebrahimi VkDevice device,
1892*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
1893*b7893ccfSSadaf Ebrahimi uint32_t queueIndex,
1894*b7893ccfSSadaf Ebrahimi VkQueue* pQueue) {
1895*b7893ccfSSadaf Ebrahimi bool skip = false;
1896*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDeviceQueue", "pQueue", pQueue, "VUID-vkGetDeviceQueue-pQueue-parameter");
1897*b7893ccfSSadaf Ebrahimi return skip;
1898*b7893ccfSSadaf Ebrahimi }
1899*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)1900*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueSubmit(
1901*b7893ccfSSadaf Ebrahimi VkQueue queue,
1902*b7893ccfSSadaf Ebrahimi uint32_t submitCount,
1903*b7893ccfSSadaf Ebrahimi const VkSubmitInfo* pSubmits,
1904*b7893ccfSSadaf Ebrahimi VkFence fence) {
1905*b7893ccfSSadaf Ebrahimi bool skip = false;
1906*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkQueueSubmit", "submitCount", "pSubmits", "VK_STRUCTURE_TYPE_SUBMIT_INFO", submitCount, pSubmits, VK_STRUCTURE_TYPE_SUBMIT_INFO, false, true, "VUID-VkSubmitInfo-sType-sType", "VUID-vkQueueSubmit-pSubmits-parameter", kVUIDUndefined);
1907*b7893ccfSSadaf Ebrahimi if (pSubmits != NULL)
1908*b7893ccfSSadaf Ebrahimi {
1909*b7893ccfSSadaf Ebrahimi for (uint32_t submitIndex = 0; submitIndex < submitCount; ++submitIndex)
1910*b7893ccfSSadaf Ebrahimi {
1911*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSubmitInfo[] = { VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV };
1912*b7893ccfSSadaf Ebrahimi
1913*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkQueueSubmit", ParameterName("pSubmits[%i].pNext", ParameterName::IndexVector{ submitIndex }), "VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkProtectedSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, VkWin32KeyedMutexAcquireReleaseInfoNV", pSubmits[submitIndex].pNext, ARRAY_SIZE(allowed_structs_VkSubmitInfo), allowed_structs_VkSubmitInfo, GeneratedVulkanHeaderVersion, "VUID-VkSubmitInfo-pNext-pNext");
1914*b7893ccfSSadaf Ebrahimi
1915*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueSubmit", ParameterName("pSubmits[%i].waitSemaphoreCount", ParameterName::IndexVector{ submitIndex }), ParameterName("pSubmits[%i].pWaitSemaphores", ParameterName::IndexVector{ submitIndex }), pSubmits[submitIndex].waitSemaphoreCount, &pSubmits[submitIndex].pWaitSemaphores, false, true, kVUIDUndefined, "VUID-VkSubmitInfo-pWaitSemaphores-parameter");
1916*b7893ccfSSadaf Ebrahimi
1917*b7893ccfSSadaf Ebrahimi skip |= validate_flags_array("vkQueueSubmit", ParameterName("pSubmits[%i].waitSemaphoreCount", ParameterName::IndexVector{ submitIndex }), ParameterName("pSubmits[%i].pWaitDstStageMask", ParameterName::IndexVector{ submitIndex }), "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pSubmits[submitIndex].waitSemaphoreCount, pSubmits[submitIndex].pWaitDstStageMask, false, true);
1918*b7893ccfSSadaf Ebrahimi
1919*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueSubmit", ParameterName("pSubmits[%i].commandBufferCount", ParameterName::IndexVector{ submitIndex }), ParameterName("pSubmits[%i].pCommandBuffers", ParameterName::IndexVector{ submitIndex }), pSubmits[submitIndex].commandBufferCount, &pSubmits[submitIndex].pCommandBuffers, false, true, kVUIDUndefined, "VUID-VkSubmitInfo-pCommandBuffers-parameter");
1920*b7893ccfSSadaf Ebrahimi
1921*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueSubmit", ParameterName("pSubmits[%i].signalSemaphoreCount", ParameterName::IndexVector{ submitIndex }), ParameterName("pSubmits[%i].pSignalSemaphores", ParameterName::IndexVector{ submitIndex }), pSubmits[submitIndex].signalSemaphoreCount, &pSubmits[submitIndex].pSignalSemaphores, false, true, kVUIDUndefined, "VUID-VkSubmitInfo-pSignalSemaphores-parameter");
1922*b7893ccfSSadaf Ebrahimi }
1923*b7893ccfSSadaf Ebrahimi }
1924*b7893ccfSSadaf Ebrahimi return skip;
1925*b7893ccfSSadaf Ebrahimi }
1926*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueWaitIdle(VkQueue queue)1927*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueWaitIdle(
1928*b7893ccfSSadaf Ebrahimi VkQueue queue) {
1929*b7893ccfSSadaf Ebrahimi bool skip = false;
1930*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1931*b7893ccfSSadaf Ebrahimi return skip;
1932*b7893ccfSSadaf Ebrahimi }
1933*b7893ccfSSadaf Ebrahimi
PreCallValidateDeviceWaitIdle(VkDevice device)1934*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDeviceWaitIdle(
1935*b7893ccfSSadaf Ebrahimi VkDevice device) {
1936*b7893ccfSSadaf Ebrahimi bool skip = false;
1937*b7893ccfSSadaf Ebrahimi // No xml-driven validation
1938*b7893ccfSSadaf Ebrahimi return skip;
1939*b7893ccfSSadaf Ebrahimi }
1940*b7893ccfSSadaf Ebrahimi
PreCallValidateAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)1941*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAllocateMemory(
1942*b7893ccfSSadaf Ebrahimi VkDevice device,
1943*b7893ccfSSadaf Ebrahimi const VkMemoryAllocateInfo* pAllocateInfo,
1944*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1945*b7893ccfSSadaf Ebrahimi VkDeviceMemory* pMemory) {
1946*b7893ccfSSadaf Ebrahimi bool skip = false;
1947*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkAllocateMemory", "pAllocateInfo", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", pAllocateInfo, VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, true, "VUID-vkAllocateMemory-pAllocateInfo-parameter", "VUID-VkMemoryAllocateInfo-sType-sType");
1948*b7893ccfSSadaf Ebrahimi if (pAllocateInfo != NULL)
1949*b7893ccfSSadaf Ebrahimi {
1950*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkMemoryAllocateInfo[] = { VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR, VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV, VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT };
1951*b7893ccfSSadaf Ebrahimi
1952*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkAllocateMemory", "pAllocateInfo->pNext", "VkDedicatedAllocationMemoryAllocateInfoNV, VkExportMemoryAllocateInfo, VkExportMemoryAllocateInfoNV, VkExportMemoryWin32HandleInfoKHR, VkExportMemoryWin32HandleInfoNV, VkImportAndroidHardwareBufferInfoANDROID, VkImportMemoryFdInfoKHR, VkImportMemoryHostPointerInfoEXT, VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV, VkMemoryAllocateFlagsInfo, VkMemoryDedicatedAllocateInfo, VkMemoryPriorityAllocateInfoEXT", pAllocateInfo->pNext, ARRAY_SIZE(allowed_structs_VkMemoryAllocateInfo), allowed_structs_VkMemoryAllocateInfo, GeneratedVulkanHeaderVersion, "VUID-VkMemoryAllocateInfo-pNext-pNext");
1953*b7893ccfSSadaf Ebrahimi }
1954*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1955*b7893ccfSSadaf Ebrahimi {
1956*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1957*b7893ccfSSadaf Ebrahimi
1958*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1959*b7893ccfSSadaf Ebrahimi
1960*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1961*b7893ccfSSadaf Ebrahimi
1962*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1963*b7893ccfSSadaf Ebrahimi {
1964*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1965*b7893ccfSSadaf Ebrahimi
1966*b7893ccfSSadaf Ebrahimi }
1967*b7893ccfSSadaf Ebrahimi
1968*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1969*b7893ccfSSadaf Ebrahimi {
1970*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1971*b7893ccfSSadaf Ebrahimi
1972*b7893ccfSSadaf Ebrahimi }
1973*b7893ccfSSadaf Ebrahimi }
1974*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAllocateMemory", "pMemory", pMemory, "VUID-vkAllocateMemory-pMemory-parameter");
1975*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateAllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
1976*b7893ccfSSadaf Ebrahimi return skip;
1977*b7893ccfSSadaf Ebrahimi }
1978*b7893ccfSSadaf Ebrahimi
PreCallValidateFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)1979*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateFreeMemory(
1980*b7893ccfSSadaf Ebrahimi VkDevice device,
1981*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1982*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
1983*b7893ccfSSadaf Ebrahimi bool skip = false;
1984*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
1985*b7893ccfSSadaf Ebrahimi {
1986*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkFreeMemory", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
1987*b7893ccfSSadaf Ebrahimi
1988*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkFreeMemory", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
1989*b7893ccfSSadaf Ebrahimi
1990*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkFreeMemory", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
1991*b7893ccfSSadaf Ebrahimi
1992*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
1993*b7893ccfSSadaf Ebrahimi {
1994*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkFreeMemory", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
1995*b7893ccfSSadaf Ebrahimi
1996*b7893ccfSSadaf Ebrahimi }
1997*b7893ccfSSadaf Ebrahimi
1998*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
1999*b7893ccfSSadaf Ebrahimi {
2000*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkFreeMemory", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2001*b7893ccfSSadaf Ebrahimi
2002*b7893ccfSSadaf Ebrahimi }
2003*b7893ccfSSadaf Ebrahimi }
2004*b7893ccfSSadaf Ebrahimi return skip;
2005*b7893ccfSSadaf Ebrahimi }
2006*b7893ccfSSadaf Ebrahimi
PreCallValidateMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)2007*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateMapMemory(
2008*b7893ccfSSadaf Ebrahimi VkDevice device,
2009*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
2010*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
2011*b7893ccfSSadaf Ebrahimi VkDeviceSize size,
2012*b7893ccfSSadaf Ebrahimi VkMemoryMapFlags flags,
2013*b7893ccfSSadaf Ebrahimi void** ppData) {
2014*b7893ccfSSadaf Ebrahimi bool skip = false;
2015*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkMapMemory", "memory", memory);
2016*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkMapMemory", "flags", flags, "VUID-vkMapMemory-flags-zerobitmask");
2017*b7893ccfSSadaf Ebrahimi return skip;
2018*b7893ccfSSadaf Ebrahimi }
2019*b7893ccfSSadaf Ebrahimi
PreCallValidateUnmapMemory(VkDevice device,VkDeviceMemory memory)2020*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUnmapMemory(
2021*b7893ccfSSadaf Ebrahimi VkDevice device,
2022*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory) {
2023*b7893ccfSSadaf Ebrahimi bool skip = false;
2024*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUnmapMemory", "memory", memory);
2025*b7893ccfSSadaf Ebrahimi return skip;
2026*b7893ccfSSadaf Ebrahimi }
2027*b7893ccfSSadaf Ebrahimi
PreCallValidateFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)2028*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateFlushMappedMemoryRanges(
2029*b7893ccfSSadaf Ebrahimi VkDevice device,
2030*b7893ccfSSadaf Ebrahimi uint32_t memoryRangeCount,
2031*b7893ccfSSadaf Ebrahimi const VkMappedMemoryRange* pMemoryRanges) {
2032*b7893ccfSSadaf Ebrahimi bool skip = false;
2033*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkFlushMappedMemoryRanges", "memoryRangeCount", "pMemoryRanges", "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", memoryRangeCount, pMemoryRanges, VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, true, true, "VUID-VkMappedMemoryRange-sType-sType", "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter", "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength");
2034*b7893ccfSSadaf Ebrahimi if (pMemoryRanges != NULL)
2035*b7893ccfSSadaf Ebrahimi {
2036*b7893ccfSSadaf Ebrahimi for (uint32_t memoryRangeIndex = 0; memoryRangeIndex < memoryRangeCount; ++memoryRangeIndex)
2037*b7893ccfSSadaf Ebrahimi {
2038*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkFlushMappedMemoryRanges", ParameterName("pMemoryRanges[%i].pNext", ParameterName::IndexVector{ memoryRangeIndex }), NULL, pMemoryRanges[memoryRangeIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMappedMemoryRange-pNext-pNext");
2039*b7893ccfSSadaf Ebrahimi
2040*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkFlushMappedMemoryRanges", ParameterName("pMemoryRanges[%i].memory", ParameterName::IndexVector{ memoryRangeIndex }), pMemoryRanges[memoryRangeIndex].memory);
2041*b7893ccfSSadaf Ebrahimi }
2042*b7893ccfSSadaf Ebrahimi }
2043*b7893ccfSSadaf Ebrahimi return skip;
2044*b7893ccfSSadaf Ebrahimi }
2045*b7893ccfSSadaf Ebrahimi
PreCallValidateInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)2046*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateInvalidateMappedMemoryRanges(
2047*b7893ccfSSadaf Ebrahimi VkDevice device,
2048*b7893ccfSSadaf Ebrahimi uint32_t memoryRangeCount,
2049*b7893ccfSSadaf Ebrahimi const VkMappedMemoryRange* pMemoryRanges) {
2050*b7893ccfSSadaf Ebrahimi bool skip = false;
2051*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkInvalidateMappedMemoryRanges", "memoryRangeCount", "pMemoryRanges", "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", memoryRangeCount, pMemoryRanges, VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, true, true, "VUID-VkMappedMemoryRange-sType-sType", "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter", "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength");
2052*b7893ccfSSadaf Ebrahimi if (pMemoryRanges != NULL)
2053*b7893ccfSSadaf Ebrahimi {
2054*b7893ccfSSadaf Ebrahimi for (uint32_t memoryRangeIndex = 0; memoryRangeIndex < memoryRangeCount; ++memoryRangeIndex)
2055*b7893ccfSSadaf Ebrahimi {
2056*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkInvalidateMappedMemoryRanges", ParameterName("pMemoryRanges[%i].pNext", ParameterName::IndexVector{ memoryRangeIndex }), NULL, pMemoryRanges[memoryRangeIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMappedMemoryRange-pNext-pNext");
2057*b7893ccfSSadaf Ebrahimi
2058*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkInvalidateMappedMemoryRanges", ParameterName("pMemoryRanges[%i].memory", ParameterName::IndexVector{ memoryRangeIndex }), pMemoryRanges[memoryRangeIndex].memory);
2059*b7893ccfSSadaf Ebrahimi }
2060*b7893ccfSSadaf Ebrahimi }
2061*b7893ccfSSadaf Ebrahimi return skip;
2062*b7893ccfSSadaf Ebrahimi }
2063*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)2064*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceMemoryCommitment(
2065*b7893ccfSSadaf Ebrahimi VkDevice device,
2066*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
2067*b7893ccfSSadaf Ebrahimi VkDeviceSize* pCommittedMemoryInBytes) {
2068*b7893ccfSSadaf Ebrahimi bool skip = false;
2069*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDeviceMemoryCommitment", "memory", memory);
2070*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDeviceMemoryCommitment", "pCommittedMemoryInBytes", pCommittedMemoryInBytes, "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter");
2071*b7893ccfSSadaf Ebrahimi return skip;
2072*b7893ccfSSadaf Ebrahimi }
2073*b7893ccfSSadaf Ebrahimi
PreCallValidateBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)2074*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindBufferMemory(
2075*b7893ccfSSadaf Ebrahimi VkDevice device,
2076*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2077*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
2078*b7893ccfSSadaf Ebrahimi VkDeviceSize memoryOffset) {
2079*b7893ccfSSadaf Ebrahimi bool skip = false;
2080*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory", "buffer", buffer);
2081*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory", "memory", memory);
2082*b7893ccfSSadaf Ebrahimi return skip;
2083*b7893ccfSSadaf Ebrahimi }
2084*b7893ccfSSadaf Ebrahimi
PreCallValidateBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)2085*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindImageMemory(
2086*b7893ccfSSadaf Ebrahimi VkDevice device,
2087*b7893ccfSSadaf Ebrahimi VkImage image,
2088*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
2089*b7893ccfSSadaf Ebrahimi VkDeviceSize memoryOffset) {
2090*b7893ccfSSadaf Ebrahimi bool skip = false;
2091*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindImageMemory", "image", image);
2092*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindImageMemory", "memory", memory);
2093*b7893ccfSSadaf Ebrahimi return skip;
2094*b7893ccfSSadaf Ebrahimi }
2095*b7893ccfSSadaf Ebrahimi
PreCallValidateGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)2096*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetBufferMemoryRequirements(
2097*b7893ccfSSadaf Ebrahimi VkDevice device,
2098*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2099*b7893ccfSSadaf Ebrahimi VkMemoryRequirements* pMemoryRequirements) {
2100*b7893ccfSSadaf Ebrahimi bool skip = false;
2101*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetBufferMemoryRequirements", "buffer", buffer);
2102*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetBufferMemoryRequirements", "pMemoryRequirements", pMemoryRequirements, "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter");
2103*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
2104*b7893ccfSSadaf Ebrahimi {
2105*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2106*b7893ccfSSadaf Ebrahimi }
2107*b7893ccfSSadaf Ebrahimi return skip;
2108*b7893ccfSSadaf Ebrahimi }
2109*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)2110*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageMemoryRequirements(
2111*b7893ccfSSadaf Ebrahimi VkDevice device,
2112*b7893ccfSSadaf Ebrahimi VkImage image,
2113*b7893ccfSSadaf Ebrahimi VkMemoryRequirements* pMemoryRequirements) {
2114*b7893ccfSSadaf Ebrahimi bool skip = false;
2115*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageMemoryRequirements", "image", image);
2116*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetImageMemoryRequirements", "pMemoryRequirements", pMemoryRequirements, "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter");
2117*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
2118*b7893ccfSSadaf Ebrahimi {
2119*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2120*b7893ccfSSadaf Ebrahimi }
2121*b7893ccfSSadaf Ebrahimi return skip;
2122*b7893ccfSSadaf Ebrahimi }
2123*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)2124*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageSparseMemoryRequirements(
2125*b7893ccfSSadaf Ebrahimi VkDevice device,
2126*b7893ccfSSadaf Ebrahimi VkImage image,
2127*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
2128*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
2129*b7893ccfSSadaf Ebrahimi bool skip = false;
2130*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageSparseMemoryRequirements", "image", image);
2131*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetImageSparseMemoryRequirements", "pSparseMemoryRequirementCount", "pSparseMemoryRequirements", pSparseMemoryRequirementCount, &pSparseMemoryRequirements, true, false, false, kVUIDUndefined, "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter");
2132*b7893ccfSSadaf Ebrahimi if (pSparseMemoryRequirements != NULL)
2133*b7893ccfSSadaf Ebrahimi {
2134*b7893ccfSSadaf Ebrahimi for (uint32_t pSparseMemoryRequirementIndex = 0; pSparseMemoryRequirementIndex < *pSparseMemoryRequirementCount; ++pSparseMemoryRequirementIndex)
2135*b7893ccfSSadaf Ebrahimi {
2136*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2137*b7893ccfSSadaf Ebrahimi }
2138*b7893ccfSSadaf Ebrahimi }
2139*b7893ccfSSadaf Ebrahimi return skip;
2140*b7893ccfSSadaf Ebrahimi }
2141*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)2142*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSparseImageFormatProperties(
2143*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
2144*b7893ccfSSadaf Ebrahimi VkFormat format,
2145*b7893ccfSSadaf Ebrahimi VkImageType type,
2146*b7893ccfSSadaf Ebrahimi VkSampleCountFlagBits samples,
2147*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
2148*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
2149*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
2150*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties* pProperties) {
2151*b7893ccfSSadaf Ebrahimi bool skip = false;
2152*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter");
2153*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties", "type", "VkImageType", AllVkImageTypeEnums, type, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter");
2154*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties", "samples", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, samples, kRequiredSingleBit, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter", "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter");
2155*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties", "usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, usage, kRequiredFlags, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter", "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask");
2156*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties", "tiling", "VkImageTiling", AllVkImageTilingEnums, tiling, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter");
2157*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceSparseImageFormatProperties", "pPropertyCount", "pProperties", pPropertyCount, &pProperties, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter");
2158*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
2159*b7893ccfSSadaf Ebrahimi {
2160*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
2161*b7893ccfSSadaf Ebrahimi {
2162*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2163*b7893ccfSSadaf Ebrahimi }
2164*b7893ccfSSadaf Ebrahimi }
2165*b7893ccfSSadaf Ebrahimi return skip;
2166*b7893ccfSSadaf Ebrahimi }
2167*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)2168*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueBindSparse(
2169*b7893ccfSSadaf Ebrahimi VkQueue queue,
2170*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
2171*b7893ccfSSadaf Ebrahimi const VkBindSparseInfo* pBindInfo,
2172*b7893ccfSSadaf Ebrahimi VkFence fence) {
2173*b7893ccfSSadaf Ebrahimi bool skip = false;
2174*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkQueueBindSparse", "bindInfoCount", "pBindInfo", "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO", bindInfoCount, pBindInfo, VK_STRUCTURE_TYPE_BIND_SPARSE_INFO, false, true, "VUID-VkBindSparseInfo-sType-sType", "VUID-vkQueueBindSparse-pBindInfo-parameter", kVUIDUndefined);
2175*b7893ccfSSadaf Ebrahimi if (pBindInfo != NULL)
2176*b7893ccfSSadaf Ebrahimi {
2177*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
2178*b7893ccfSSadaf Ebrahimi {
2179*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBindSparseInfo[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO };
2180*b7893ccfSSadaf Ebrahimi
2181*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkQueueBindSparse", ParameterName("pBindInfo[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), "VkDeviceGroupBindSparseInfo", pBindInfo[bindInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkBindSparseInfo), allowed_structs_VkBindSparseInfo, GeneratedVulkanHeaderVersion, "VUID-VkBindSparseInfo-pNext-pNext");
2182*b7893ccfSSadaf Ebrahimi
2183*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].waitSemaphoreCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfo[%i].pWaitSemaphores", ParameterName::IndexVector{ bindInfoIndex }), pBindInfo[bindInfoIndex].waitSemaphoreCount, &pBindInfo[bindInfoIndex].pWaitSemaphores, false, true, kVUIDUndefined, "VUID-VkBindSparseInfo-pWaitSemaphores-parameter");
2184*b7893ccfSSadaf Ebrahimi
2185*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].bufferBindCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfo[%i].pBufferBinds", ParameterName::IndexVector{ bindInfoIndex }), pBindInfo[bindInfoIndex].bufferBindCount, &pBindInfo[bindInfoIndex].pBufferBinds, false, true, kVUIDUndefined, "VUID-VkBindSparseInfo-pBufferBinds-parameter");
2186*b7893ccfSSadaf Ebrahimi
2187*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pBufferBinds != NULL)
2188*b7893ccfSSadaf Ebrahimi {
2189*b7893ccfSSadaf Ebrahimi for (uint32_t bufferBindIndex = 0; bufferBindIndex < pBindInfo[bindInfoIndex].bufferBindCount; ++bufferBindIndex)
2190*b7893ccfSSadaf Ebrahimi {
2191*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkQueueBindSparse", ParameterName("pBindInfo[%i].pBufferBinds[%i].buffer", ParameterName::IndexVector{ bindInfoIndex, bufferBindIndex }), pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].buffer);
2192*b7893ccfSSadaf Ebrahimi
2193*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].pBufferBinds[%i].bindCount", ParameterName::IndexVector{ bindInfoIndex, bufferBindIndex }), ParameterName("pBindInfo[%i].pBufferBinds[%i].pBinds", ParameterName::IndexVector{ bindInfoIndex, bufferBindIndex }), pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].bindCount, &pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].pBinds, true, true, "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength", "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter");
2194*b7893ccfSSadaf Ebrahimi
2195*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].pBinds != NULL)
2196*b7893ccfSSadaf Ebrahimi {
2197*b7893ccfSSadaf Ebrahimi for (uint32_t bindIndex = 0; bindIndex < pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].bindCount; ++bindIndex)
2198*b7893ccfSSadaf Ebrahimi {
2199*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkQueueBindSparse", ParameterName("pBindInfo[%i].pBufferBinds[%i].pBinds[%i].flags", ParameterName::IndexVector{ bindInfoIndex, bufferBindIndex, bindIndex }), "VkSparseMemoryBindFlagBits", AllVkSparseMemoryBindFlagBits, pBindInfo[bindInfoIndex].pBufferBinds[bufferBindIndex].pBinds[bindIndex].flags, kOptionalFlags, "VUID-VkSparseMemoryBind-flags-parameter");
2200*b7893ccfSSadaf Ebrahimi }
2201*b7893ccfSSadaf Ebrahimi }
2202*b7893ccfSSadaf Ebrahimi }
2203*b7893ccfSSadaf Ebrahimi }
2204*b7893ccfSSadaf Ebrahimi
2205*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].imageOpaqueBindCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfo[%i].pImageOpaqueBinds", ParameterName::IndexVector{ bindInfoIndex }), pBindInfo[bindInfoIndex].imageOpaqueBindCount, &pBindInfo[bindInfoIndex].pImageOpaqueBinds, false, true, kVUIDUndefined, "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter");
2206*b7893ccfSSadaf Ebrahimi
2207*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pImageOpaqueBinds != NULL)
2208*b7893ccfSSadaf Ebrahimi {
2209*b7893ccfSSadaf Ebrahimi for (uint32_t imageOpaqueBindIndex = 0; imageOpaqueBindIndex < pBindInfo[bindInfoIndex].imageOpaqueBindCount; ++imageOpaqueBindIndex)
2210*b7893ccfSSadaf Ebrahimi {
2211*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageOpaqueBinds[%i].image", ParameterName::IndexVector{ bindInfoIndex, imageOpaqueBindIndex }), pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].image);
2212*b7893ccfSSadaf Ebrahimi
2213*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageOpaqueBinds[%i].bindCount", ParameterName::IndexVector{ bindInfoIndex, imageOpaqueBindIndex }), ParameterName("pBindInfo[%i].pImageOpaqueBinds[%i].pBinds", ParameterName::IndexVector{ bindInfoIndex, imageOpaqueBindIndex }), pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].bindCount, &pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].pBinds, true, true, "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength", "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter");
2214*b7893ccfSSadaf Ebrahimi
2215*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].pBinds != NULL)
2216*b7893ccfSSadaf Ebrahimi {
2217*b7893ccfSSadaf Ebrahimi for (uint32_t bindIndex = 0; bindIndex < pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].bindCount; ++bindIndex)
2218*b7893ccfSSadaf Ebrahimi {
2219*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageOpaqueBinds[%i].pBinds[%i].flags", ParameterName::IndexVector{ bindInfoIndex, imageOpaqueBindIndex, bindIndex }), "VkSparseMemoryBindFlagBits", AllVkSparseMemoryBindFlagBits, pBindInfo[bindInfoIndex].pImageOpaqueBinds[imageOpaqueBindIndex].pBinds[bindIndex].flags, kOptionalFlags, "VUID-VkSparseMemoryBind-flags-parameter");
2220*b7893ccfSSadaf Ebrahimi }
2221*b7893ccfSSadaf Ebrahimi }
2222*b7893ccfSSadaf Ebrahimi }
2223*b7893ccfSSadaf Ebrahimi }
2224*b7893ccfSSadaf Ebrahimi
2225*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].imageBindCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfo[%i].pImageBinds", ParameterName::IndexVector{ bindInfoIndex }), pBindInfo[bindInfoIndex].imageBindCount, &pBindInfo[bindInfoIndex].pImageBinds, false, true, kVUIDUndefined, "VUID-VkBindSparseInfo-pImageBinds-parameter");
2226*b7893ccfSSadaf Ebrahimi
2227*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pImageBinds != NULL)
2228*b7893ccfSSadaf Ebrahimi {
2229*b7893ccfSSadaf Ebrahimi for (uint32_t imageBindIndex = 0; imageBindIndex < pBindInfo[bindInfoIndex].imageBindCount; ++imageBindIndex)
2230*b7893ccfSSadaf Ebrahimi {
2231*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageBinds[%i].image", ParameterName::IndexVector{ bindInfoIndex, imageBindIndex }), pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].image);
2232*b7893ccfSSadaf Ebrahimi
2233*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageBinds[%i].bindCount", ParameterName::IndexVector{ bindInfoIndex, imageBindIndex }), ParameterName("pBindInfo[%i].pImageBinds[%i].pBinds", ParameterName::IndexVector{ bindInfoIndex, imageBindIndex }), pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].bindCount, &pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].pBinds, true, true, "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength", "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter");
2234*b7893ccfSSadaf Ebrahimi
2235*b7893ccfSSadaf Ebrahimi if (pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].pBinds != NULL)
2236*b7893ccfSSadaf Ebrahimi {
2237*b7893ccfSSadaf Ebrahimi for (uint32_t bindIndex = 0; bindIndex < pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].bindCount; ++bindIndex)
2238*b7893ccfSSadaf Ebrahimi {
2239*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageBinds[%i].pBinds[%i].subresource.aspectMask", ParameterName::IndexVector{ bindInfoIndex, imageBindIndex, bindIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].pBinds[bindIndex].subresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresource-aspectMask-parameter", "VUID-VkImageSubresource-aspectMask-requiredbitmask");
2240*b7893ccfSSadaf Ebrahimi
2241*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2242*b7893ccfSSadaf Ebrahimi
2243*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2244*b7893ccfSSadaf Ebrahimi
2245*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkQueueBindSparse", ParameterName("pBindInfo[%i].pImageBinds[%i].pBinds[%i].flags", ParameterName::IndexVector{ bindInfoIndex, imageBindIndex, bindIndex }), "VkSparseMemoryBindFlagBits", AllVkSparseMemoryBindFlagBits, pBindInfo[bindInfoIndex].pImageBinds[imageBindIndex].pBinds[bindIndex].flags, kOptionalFlags, "VUID-VkSparseImageMemoryBind-flags-parameter");
2246*b7893ccfSSadaf Ebrahimi }
2247*b7893ccfSSadaf Ebrahimi }
2248*b7893ccfSSadaf Ebrahimi }
2249*b7893ccfSSadaf Ebrahimi }
2250*b7893ccfSSadaf Ebrahimi
2251*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueueBindSparse", ParameterName("pBindInfo[%i].signalSemaphoreCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfo[%i].pSignalSemaphores", ParameterName::IndexVector{ bindInfoIndex }), pBindInfo[bindInfoIndex].signalSemaphoreCount, &pBindInfo[bindInfoIndex].pSignalSemaphores, false, true, kVUIDUndefined, "VUID-VkBindSparseInfo-pSignalSemaphores-parameter");
2252*b7893ccfSSadaf Ebrahimi }
2253*b7893ccfSSadaf Ebrahimi }
2254*b7893ccfSSadaf Ebrahimi return skip;
2255*b7893ccfSSadaf Ebrahimi }
2256*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)2257*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateFence(
2258*b7893ccfSSadaf Ebrahimi VkDevice device,
2259*b7893ccfSSadaf Ebrahimi const VkFenceCreateInfo* pCreateInfo,
2260*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2261*b7893ccfSSadaf Ebrahimi VkFence* pFence) {
2262*b7893ccfSSadaf Ebrahimi bool skip = false;
2263*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateFence", "pCreateInfo", "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, true, "VUID-vkCreateFence-pCreateInfo-parameter", "VUID-VkFenceCreateInfo-sType-sType");
2264*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2265*b7893ccfSSadaf Ebrahimi {
2266*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkFenceCreateInfo[] = { VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR };
2267*b7893ccfSSadaf Ebrahimi
2268*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateFence", "pCreateInfo->pNext", "VkExportFenceCreateInfo, VkExportFenceWin32HandleInfoKHR", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkFenceCreateInfo), allowed_structs_VkFenceCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkFenceCreateInfo-pNext-pNext");
2269*b7893ccfSSadaf Ebrahimi
2270*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateFence", "pCreateInfo->flags", "VkFenceCreateFlagBits", AllVkFenceCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkFenceCreateInfo-flags-parameter");
2271*b7893ccfSSadaf Ebrahimi }
2272*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2273*b7893ccfSSadaf Ebrahimi {
2274*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2275*b7893ccfSSadaf Ebrahimi
2276*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2277*b7893ccfSSadaf Ebrahimi
2278*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2279*b7893ccfSSadaf Ebrahimi
2280*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2281*b7893ccfSSadaf Ebrahimi {
2282*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2283*b7893ccfSSadaf Ebrahimi
2284*b7893ccfSSadaf Ebrahimi }
2285*b7893ccfSSadaf Ebrahimi
2286*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2287*b7893ccfSSadaf Ebrahimi {
2288*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2289*b7893ccfSSadaf Ebrahimi
2290*b7893ccfSSadaf Ebrahimi }
2291*b7893ccfSSadaf Ebrahimi }
2292*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFence", "pFence", pFence, "VUID-vkCreateFence-pFence-parameter");
2293*b7893ccfSSadaf Ebrahimi return skip;
2294*b7893ccfSSadaf Ebrahimi }
2295*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)2296*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyFence(
2297*b7893ccfSSadaf Ebrahimi VkDevice device,
2298*b7893ccfSSadaf Ebrahimi VkFence fence,
2299*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2300*b7893ccfSSadaf Ebrahimi bool skip = false;
2301*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2302*b7893ccfSSadaf Ebrahimi {
2303*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFence", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2304*b7893ccfSSadaf Ebrahimi
2305*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFence", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2306*b7893ccfSSadaf Ebrahimi
2307*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFence", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2308*b7893ccfSSadaf Ebrahimi
2309*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2310*b7893ccfSSadaf Ebrahimi {
2311*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFence", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2312*b7893ccfSSadaf Ebrahimi
2313*b7893ccfSSadaf Ebrahimi }
2314*b7893ccfSSadaf Ebrahimi
2315*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2316*b7893ccfSSadaf Ebrahimi {
2317*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFence", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2318*b7893ccfSSadaf Ebrahimi
2319*b7893ccfSSadaf Ebrahimi }
2320*b7893ccfSSadaf Ebrahimi }
2321*b7893ccfSSadaf Ebrahimi return skip;
2322*b7893ccfSSadaf Ebrahimi }
2323*b7893ccfSSadaf Ebrahimi
PreCallValidateResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)2324*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetFences(
2325*b7893ccfSSadaf Ebrahimi VkDevice device,
2326*b7893ccfSSadaf Ebrahimi uint32_t fenceCount,
2327*b7893ccfSSadaf Ebrahimi const VkFence* pFences) {
2328*b7893ccfSSadaf Ebrahimi bool skip = false;
2329*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkResetFences", "fenceCount", "pFences", fenceCount, pFences, true, true);
2330*b7893ccfSSadaf Ebrahimi return skip;
2331*b7893ccfSSadaf Ebrahimi }
2332*b7893ccfSSadaf Ebrahimi
PreCallValidateGetFenceStatus(VkDevice device,VkFence fence)2333*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetFenceStatus(
2334*b7893ccfSSadaf Ebrahimi VkDevice device,
2335*b7893ccfSSadaf Ebrahimi VkFence fence) {
2336*b7893ccfSSadaf Ebrahimi bool skip = false;
2337*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetFenceStatus", "fence", fence);
2338*b7893ccfSSadaf Ebrahimi return skip;
2339*b7893ccfSSadaf Ebrahimi }
2340*b7893ccfSSadaf Ebrahimi
PreCallValidateWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)2341*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateWaitForFences(
2342*b7893ccfSSadaf Ebrahimi VkDevice device,
2343*b7893ccfSSadaf Ebrahimi uint32_t fenceCount,
2344*b7893ccfSSadaf Ebrahimi const VkFence* pFences,
2345*b7893ccfSSadaf Ebrahimi VkBool32 waitAll,
2346*b7893ccfSSadaf Ebrahimi uint64_t timeout) {
2347*b7893ccfSSadaf Ebrahimi bool skip = false;
2348*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkWaitForFences", "fenceCount", "pFences", fenceCount, pFences, true, true);
2349*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkWaitForFences", "waitAll", waitAll);
2350*b7893ccfSSadaf Ebrahimi return skip;
2351*b7893ccfSSadaf Ebrahimi }
2352*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)2353*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSemaphore(
2354*b7893ccfSSadaf Ebrahimi VkDevice device,
2355*b7893ccfSSadaf Ebrahimi const VkSemaphoreCreateInfo* pCreateInfo,
2356*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2357*b7893ccfSSadaf Ebrahimi VkSemaphore* pSemaphore) {
2358*b7893ccfSSadaf Ebrahimi bool skip = false;
2359*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateSemaphore", "pCreateInfo", "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, true, "VUID-vkCreateSemaphore-pCreateInfo-parameter", "VUID-VkSemaphoreCreateInfo-sType-sType");
2360*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2361*b7893ccfSSadaf Ebrahimi {
2362*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSemaphoreCreateInfo[] = { VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR };
2363*b7893ccfSSadaf Ebrahimi
2364*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSemaphore", "pCreateInfo->pNext", "VkExportSemaphoreCreateInfo, VkExportSemaphoreWin32HandleInfoKHR", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkSemaphoreCreateInfo), allowed_structs_VkSemaphoreCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkSemaphoreCreateInfo-pNext-pNext");
2365*b7893ccfSSadaf Ebrahimi
2366*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateSemaphore", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkSemaphoreCreateInfo-flags-zerobitmask");
2367*b7893ccfSSadaf Ebrahimi }
2368*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2369*b7893ccfSSadaf Ebrahimi {
2370*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2371*b7893ccfSSadaf Ebrahimi
2372*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2373*b7893ccfSSadaf Ebrahimi
2374*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2375*b7893ccfSSadaf Ebrahimi
2376*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2377*b7893ccfSSadaf Ebrahimi {
2378*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2379*b7893ccfSSadaf Ebrahimi
2380*b7893ccfSSadaf Ebrahimi }
2381*b7893ccfSSadaf Ebrahimi
2382*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2383*b7893ccfSSadaf Ebrahimi {
2384*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2385*b7893ccfSSadaf Ebrahimi
2386*b7893ccfSSadaf Ebrahimi }
2387*b7893ccfSSadaf Ebrahimi }
2388*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSemaphore", "pSemaphore", pSemaphore, "VUID-vkCreateSemaphore-pSemaphore-parameter");
2389*b7893ccfSSadaf Ebrahimi return skip;
2390*b7893ccfSSadaf Ebrahimi }
2391*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)2392*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySemaphore(
2393*b7893ccfSSadaf Ebrahimi VkDevice device,
2394*b7893ccfSSadaf Ebrahimi VkSemaphore semaphore,
2395*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2396*b7893ccfSSadaf Ebrahimi bool skip = false;
2397*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2398*b7893ccfSSadaf Ebrahimi {
2399*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySemaphore", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2400*b7893ccfSSadaf Ebrahimi
2401*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySemaphore", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2402*b7893ccfSSadaf Ebrahimi
2403*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySemaphore", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2404*b7893ccfSSadaf Ebrahimi
2405*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2406*b7893ccfSSadaf Ebrahimi {
2407*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySemaphore", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2408*b7893ccfSSadaf Ebrahimi
2409*b7893ccfSSadaf Ebrahimi }
2410*b7893ccfSSadaf Ebrahimi
2411*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2412*b7893ccfSSadaf Ebrahimi {
2413*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySemaphore", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2414*b7893ccfSSadaf Ebrahimi
2415*b7893ccfSSadaf Ebrahimi }
2416*b7893ccfSSadaf Ebrahimi }
2417*b7893ccfSSadaf Ebrahimi return skip;
2418*b7893ccfSSadaf Ebrahimi }
2419*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)2420*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateEvent(
2421*b7893ccfSSadaf Ebrahimi VkDevice device,
2422*b7893ccfSSadaf Ebrahimi const VkEventCreateInfo* pCreateInfo,
2423*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2424*b7893ccfSSadaf Ebrahimi VkEvent* pEvent) {
2425*b7893ccfSSadaf Ebrahimi bool skip = false;
2426*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateEvent", "pCreateInfo", "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, true, "VUID-vkCreateEvent-pCreateInfo-parameter", "VUID-VkEventCreateInfo-sType-sType");
2427*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2428*b7893ccfSSadaf Ebrahimi {
2429*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateEvent", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkEventCreateInfo-pNext-pNext");
2430*b7893ccfSSadaf Ebrahimi
2431*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateEvent", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkEventCreateInfo-flags-zerobitmask");
2432*b7893ccfSSadaf Ebrahimi }
2433*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2434*b7893ccfSSadaf Ebrahimi {
2435*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2436*b7893ccfSSadaf Ebrahimi
2437*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2438*b7893ccfSSadaf Ebrahimi
2439*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2440*b7893ccfSSadaf Ebrahimi
2441*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2442*b7893ccfSSadaf Ebrahimi {
2443*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2444*b7893ccfSSadaf Ebrahimi
2445*b7893ccfSSadaf Ebrahimi }
2446*b7893ccfSSadaf Ebrahimi
2447*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2448*b7893ccfSSadaf Ebrahimi {
2449*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2450*b7893ccfSSadaf Ebrahimi
2451*b7893ccfSSadaf Ebrahimi }
2452*b7893ccfSSadaf Ebrahimi }
2453*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateEvent", "pEvent", pEvent, "VUID-vkCreateEvent-pEvent-parameter");
2454*b7893ccfSSadaf Ebrahimi return skip;
2455*b7893ccfSSadaf Ebrahimi }
2456*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)2457*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyEvent(
2458*b7893ccfSSadaf Ebrahimi VkDevice device,
2459*b7893ccfSSadaf Ebrahimi VkEvent event,
2460*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2461*b7893ccfSSadaf Ebrahimi bool skip = false;
2462*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2463*b7893ccfSSadaf Ebrahimi {
2464*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyEvent", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2465*b7893ccfSSadaf Ebrahimi
2466*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyEvent", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2467*b7893ccfSSadaf Ebrahimi
2468*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyEvent", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2469*b7893ccfSSadaf Ebrahimi
2470*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2471*b7893ccfSSadaf Ebrahimi {
2472*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyEvent", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2473*b7893ccfSSadaf Ebrahimi
2474*b7893ccfSSadaf Ebrahimi }
2475*b7893ccfSSadaf Ebrahimi
2476*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2477*b7893ccfSSadaf Ebrahimi {
2478*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyEvent", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2479*b7893ccfSSadaf Ebrahimi
2480*b7893ccfSSadaf Ebrahimi }
2481*b7893ccfSSadaf Ebrahimi }
2482*b7893ccfSSadaf Ebrahimi return skip;
2483*b7893ccfSSadaf Ebrahimi }
2484*b7893ccfSSadaf Ebrahimi
PreCallValidateGetEventStatus(VkDevice device,VkEvent event)2485*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetEventStatus(
2486*b7893ccfSSadaf Ebrahimi VkDevice device,
2487*b7893ccfSSadaf Ebrahimi VkEvent event) {
2488*b7893ccfSSadaf Ebrahimi bool skip = false;
2489*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetEventStatus", "event", event);
2490*b7893ccfSSadaf Ebrahimi return skip;
2491*b7893ccfSSadaf Ebrahimi }
2492*b7893ccfSSadaf Ebrahimi
PreCallValidateSetEvent(VkDevice device,VkEvent event)2493*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSetEvent(
2494*b7893ccfSSadaf Ebrahimi VkDevice device,
2495*b7893ccfSSadaf Ebrahimi VkEvent event) {
2496*b7893ccfSSadaf Ebrahimi bool skip = false;
2497*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkSetEvent", "event", event);
2498*b7893ccfSSadaf Ebrahimi return skip;
2499*b7893ccfSSadaf Ebrahimi }
2500*b7893ccfSSadaf Ebrahimi
PreCallValidateResetEvent(VkDevice device,VkEvent event)2501*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetEvent(
2502*b7893ccfSSadaf Ebrahimi VkDevice device,
2503*b7893ccfSSadaf Ebrahimi VkEvent event) {
2504*b7893ccfSSadaf Ebrahimi bool skip = false;
2505*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkResetEvent", "event", event);
2506*b7893ccfSSadaf Ebrahimi return skip;
2507*b7893ccfSSadaf Ebrahimi }
2508*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)2509*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateQueryPool(
2510*b7893ccfSSadaf Ebrahimi VkDevice device,
2511*b7893ccfSSadaf Ebrahimi const VkQueryPoolCreateInfo* pCreateInfo,
2512*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2513*b7893ccfSSadaf Ebrahimi VkQueryPool* pQueryPool) {
2514*b7893ccfSSadaf Ebrahimi bool skip = false;
2515*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateQueryPool", "pCreateInfo", "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, true, "VUID-vkCreateQueryPool-pCreateInfo-parameter", "VUID-VkQueryPoolCreateInfo-sType-sType");
2516*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2517*b7893ccfSSadaf Ebrahimi {
2518*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateQueryPool", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkQueryPoolCreateInfo-pNext-pNext");
2519*b7893ccfSSadaf Ebrahimi
2520*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateQueryPool", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkQueryPoolCreateInfo-flags-zerobitmask");
2521*b7893ccfSSadaf Ebrahimi
2522*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateQueryPool", "pCreateInfo->queryType", "VkQueryType", AllVkQueryTypeEnums, pCreateInfo->queryType, "VUID-VkQueryPoolCreateInfo-queryType-parameter");
2523*b7893ccfSSadaf Ebrahimi }
2524*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2525*b7893ccfSSadaf Ebrahimi {
2526*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2527*b7893ccfSSadaf Ebrahimi
2528*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2529*b7893ccfSSadaf Ebrahimi
2530*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2531*b7893ccfSSadaf Ebrahimi
2532*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2533*b7893ccfSSadaf Ebrahimi {
2534*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2535*b7893ccfSSadaf Ebrahimi
2536*b7893ccfSSadaf Ebrahimi }
2537*b7893ccfSSadaf Ebrahimi
2538*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2539*b7893ccfSSadaf Ebrahimi {
2540*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2541*b7893ccfSSadaf Ebrahimi
2542*b7893ccfSSadaf Ebrahimi }
2543*b7893ccfSSadaf Ebrahimi }
2544*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateQueryPool", "pQueryPool", pQueryPool, "VUID-vkCreateQueryPool-pQueryPool-parameter");
2545*b7893ccfSSadaf Ebrahimi return skip;
2546*b7893ccfSSadaf Ebrahimi }
2547*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)2548*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyQueryPool(
2549*b7893ccfSSadaf Ebrahimi VkDevice device,
2550*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
2551*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2552*b7893ccfSSadaf Ebrahimi bool skip = false;
2553*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2554*b7893ccfSSadaf Ebrahimi {
2555*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyQueryPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2556*b7893ccfSSadaf Ebrahimi
2557*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyQueryPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2558*b7893ccfSSadaf Ebrahimi
2559*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyQueryPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2560*b7893ccfSSadaf Ebrahimi
2561*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2562*b7893ccfSSadaf Ebrahimi {
2563*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyQueryPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2564*b7893ccfSSadaf Ebrahimi
2565*b7893ccfSSadaf Ebrahimi }
2566*b7893ccfSSadaf Ebrahimi
2567*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2568*b7893ccfSSadaf Ebrahimi {
2569*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyQueryPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2570*b7893ccfSSadaf Ebrahimi
2571*b7893ccfSSadaf Ebrahimi }
2572*b7893ccfSSadaf Ebrahimi }
2573*b7893ccfSSadaf Ebrahimi return skip;
2574*b7893ccfSSadaf Ebrahimi }
2575*b7893ccfSSadaf Ebrahimi
PreCallValidateGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)2576*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetQueryPoolResults(
2577*b7893ccfSSadaf Ebrahimi VkDevice device,
2578*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
2579*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
2580*b7893ccfSSadaf Ebrahimi uint32_t queryCount,
2581*b7893ccfSSadaf Ebrahimi size_t dataSize,
2582*b7893ccfSSadaf Ebrahimi void* pData,
2583*b7893ccfSSadaf Ebrahimi VkDeviceSize stride,
2584*b7893ccfSSadaf Ebrahimi VkQueryResultFlags flags) {
2585*b7893ccfSSadaf Ebrahimi bool skip = false;
2586*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetQueryPoolResults", "queryPool", queryPool);
2587*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetQueryPoolResults", "dataSize", "pData", dataSize, &pData, true, true, "VUID-vkGetQueryPoolResults-dataSize-arraylength", "VUID-vkGetQueryPoolResults-pData-parameter");
2588*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetQueryPoolResults", "flags", "VkQueryResultFlagBits", AllVkQueryResultFlagBits, flags, kOptionalFlags, "VUID-vkGetQueryPoolResults-flags-parameter");
2589*b7893ccfSSadaf Ebrahimi return skip;
2590*b7893ccfSSadaf Ebrahimi }
2591*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)2592*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateBuffer(
2593*b7893ccfSSadaf Ebrahimi VkDevice device,
2594*b7893ccfSSadaf Ebrahimi const VkBufferCreateInfo* pCreateInfo,
2595*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2596*b7893ccfSSadaf Ebrahimi VkBuffer* pBuffer) {
2597*b7893ccfSSadaf Ebrahimi bool skip = false;
2598*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateBuffer", "pCreateInfo", "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, true, "VUID-vkCreateBuffer-pCreateInfo-parameter", "VUID-VkBufferCreateInfo-sType-sType");
2599*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2600*b7893ccfSSadaf Ebrahimi {
2601*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBufferCreateInfo[] = { VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO };
2602*b7893ccfSSadaf Ebrahimi
2603*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateBuffer", "pCreateInfo->pNext", "VkBufferDeviceAddressCreateInfoEXT, VkDedicatedAllocationBufferCreateInfoNV, VkExternalMemoryBufferCreateInfo", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkBufferCreateInfo), allowed_structs_VkBufferCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkBufferCreateInfo-pNext-pNext");
2604*b7893ccfSSadaf Ebrahimi
2605*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateBuffer", "pCreateInfo->flags", "VkBufferCreateFlagBits", AllVkBufferCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkBufferCreateInfo-flags-parameter");
2606*b7893ccfSSadaf Ebrahimi
2607*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateBuffer", "pCreateInfo->usage", "VkBufferUsageFlagBits", AllVkBufferUsageFlagBits, pCreateInfo->usage, kRequiredFlags, "VUID-VkBufferCreateInfo-usage-parameter", "VUID-VkBufferCreateInfo-usage-requiredbitmask");
2608*b7893ccfSSadaf Ebrahimi
2609*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateBuffer", "pCreateInfo->sharingMode", "VkSharingMode", AllVkSharingModeEnums, pCreateInfo->sharingMode, "VUID-VkBufferCreateInfo-sharingMode-parameter");
2610*b7893ccfSSadaf Ebrahimi }
2611*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2612*b7893ccfSSadaf Ebrahimi {
2613*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2614*b7893ccfSSadaf Ebrahimi
2615*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2616*b7893ccfSSadaf Ebrahimi
2617*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2618*b7893ccfSSadaf Ebrahimi
2619*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2620*b7893ccfSSadaf Ebrahimi {
2621*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2622*b7893ccfSSadaf Ebrahimi
2623*b7893ccfSSadaf Ebrahimi }
2624*b7893ccfSSadaf Ebrahimi
2625*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2626*b7893ccfSSadaf Ebrahimi {
2627*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2628*b7893ccfSSadaf Ebrahimi
2629*b7893ccfSSadaf Ebrahimi }
2630*b7893ccfSSadaf Ebrahimi }
2631*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBuffer", "pBuffer", pBuffer, "VUID-vkCreateBuffer-pBuffer-parameter");
2632*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
2633*b7893ccfSSadaf Ebrahimi return skip;
2634*b7893ccfSSadaf Ebrahimi }
2635*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)2636*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyBuffer(
2637*b7893ccfSSadaf Ebrahimi VkDevice device,
2638*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2639*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2640*b7893ccfSSadaf Ebrahimi bool skip = false;
2641*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2642*b7893ccfSSadaf Ebrahimi {
2643*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBuffer", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2644*b7893ccfSSadaf Ebrahimi
2645*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBuffer", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2646*b7893ccfSSadaf Ebrahimi
2647*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBuffer", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2648*b7893ccfSSadaf Ebrahimi
2649*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2650*b7893ccfSSadaf Ebrahimi {
2651*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBuffer", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2652*b7893ccfSSadaf Ebrahimi
2653*b7893ccfSSadaf Ebrahimi }
2654*b7893ccfSSadaf Ebrahimi
2655*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2656*b7893ccfSSadaf Ebrahimi {
2657*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBuffer", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2658*b7893ccfSSadaf Ebrahimi
2659*b7893ccfSSadaf Ebrahimi }
2660*b7893ccfSSadaf Ebrahimi }
2661*b7893ccfSSadaf Ebrahimi return skip;
2662*b7893ccfSSadaf Ebrahimi }
2663*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)2664*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateBufferView(
2665*b7893ccfSSadaf Ebrahimi VkDevice device,
2666*b7893ccfSSadaf Ebrahimi const VkBufferViewCreateInfo* pCreateInfo,
2667*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2668*b7893ccfSSadaf Ebrahimi VkBufferView* pView) {
2669*b7893ccfSSadaf Ebrahimi bool skip = false;
2670*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateBufferView", "pCreateInfo", "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, true, "VUID-vkCreateBufferView-pCreateInfo-parameter", "VUID-VkBufferViewCreateInfo-sType-sType");
2671*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2672*b7893ccfSSadaf Ebrahimi {
2673*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateBufferView", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferViewCreateInfo-pNext-pNext");
2674*b7893ccfSSadaf Ebrahimi
2675*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateBufferView", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkBufferViewCreateInfo-flags-zerobitmask");
2676*b7893ccfSSadaf Ebrahimi
2677*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateBufferView", "pCreateInfo->buffer", pCreateInfo->buffer);
2678*b7893ccfSSadaf Ebrahimi
2679*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateBufferView", "pCreateInfo->format", "VkFormat", AllVkFormatEnums, pCreateInfo->format, "VUID-VkBufferViewCreateInfo-format-parameter");
2680*b7893ccfSSadaf Ebrahimi }
2681*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2682*b7893ccfSSadaf Ebrahimi {
2683*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2684*b7893ccfSSadaf Ebrahimi
2685*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2686*b7893ccfSSadaf Ebrahimi
2687*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2688*b7893ccfSSadaf Ebrahimi
2689*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2690*b7893ccfSSadaf Ebrahimi {
2691*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2692*b7893ccfSSadaf Ebrahimi
2693*b7893ccfSSadaf Ebrahimi }
2694*b7893ccfSSadaf Ebrahimi
2695*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2696*b7893ccfSSadaf Ebrahimi {
2697*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2698*b7893ccfSSadaf Ebrahimi
2699*b7893ccfSSadaf Ebrahimi }
2700*b7893ccfSSadaf Ebrahimi }
2701*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateBufferView", "pView", pView, "VUID-vkCreateBufferView-pView-parameter");
2702*b7893ccfSSadaf Ebrahimi return skip;
2703*b7893ccfSSadaf Ebrahimi }
2704*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)2705*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyBufferView(
2706*b7893ccfSSadaf Ebrahimi VkDevice device,
2707*b7893ccfSSadaf Ebrahimi VkBufferView bufferView,
2708*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2709*b7893ccfSSadaf Ebrahimi bool skip = false;
2710*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2711*b7893ccfSSadaf Ebrahimi {
2712*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBufferView", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2713*b7893ccfSSadaf Ebrahimi
2714*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBufferView", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2715*b7893ccfSSadaf Ebrahimi
2716*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBufferView", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2717*b7893ccfSSadaf Ebrahimi
2718*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2719*b7893ccfSSadaf Ebrahimi {
2720*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBufferView", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2721*b7893ccfSSadaf Ebrahimi
2722*b7893ccfSSadaf Ebrahimi }
2723*b7893ccfSSadaf Ebrahimi
2724*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2725*b7893ccfSSadaf Ebrahimi {
2726*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyBufferView", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2727*b7893ccfSSadaf Ebrahimi
2728*b7893ccfSSadaf Ebrahimi }
2729*b7893ccfSSadaf Ebrahimi }
2730*b7893ccfSSadaf Ebrahimi return skip;
2731*b7893ccfSSadaf Ebrahimi }
2732*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)2733*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateImage(
2734*b7893ccfSSadaf Ebrahimi VkDevice device,
2735*b7893ccfSSadaf Ebrahimi const VkImageCreateInfo* pCreateInfo,
2736*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2737*b7893ccfSSadaf Ebrahimi VkImage* pImage) {
2738*b7893ccfSSadaf Ebrahimi bool skip = false;
2739*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateImage", "pCreateInfo", "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, true, "VUID-vkCreateImage-pCreateInfo-parameter", "VUID-VkImageCreateInfo-sType-sType");
2740*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2741*b7893ccfSSadaf Ebrahimi {
2742*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageCreateInfo[] = { VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR };
2743*b7893ccfSSadaf Ebrahimi
2744*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateImage", "pCreateInfo->pNext", "VkDedicatedAllocationImageCreateInfoNV, VkExternalFormatANDROID, VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfoNV, VkImageDrmFormatModifierExplicitCreateInfoEXT, VkImageDrmFormatModifierListCreateInfoEXT, VkImageFormatListCreateInfoKHR, VkImageStencilUsageCreateInfoEXT, VkImageSwapchainCreateInfoKHR", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkImageCreateInfo), allowed_structs_VkImageCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkImageCreateInfo-pNext-pNext");
2745*b7893ccfSSadaf Ebrahimi
2746*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateImage", "pCreateInfo->flags", "VkImageCreateFlagBits", AllVkImageCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkImageCreateInfo-flags-parameter");
2747*b7893ccfSSadaf Ebrahimi
2748*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImage", "pCreateInfo->imageType", "VkImageType", AllVkImageTypeEnums, pCreateInfo->imageType, "VUID-VkImageCreateInfo-imageType-parameter");
2749*b7893ccfSSadaf Ebrahimi
2750*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImage", "pCreateInfo->format", "VkFormat", AllVkFormatEnums, pCreateInfo->format, "VUID-VkImageCreateInfo-format-parameter");
2751*b7893ccfSSadaf Ebrahimi
2752*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2753*b7893ccfSSadaf Ebrahimi
2754*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateImage", "pCreateInfo->samples", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pCreateInfo->samples, kRequiredSingleBit, "VUID-VkImageCreateInfo-samples-parameter", "VUID-VkImageCreateInfo-samples-parameter");
2755*b7893ccfSSadaf Ebrahimi
2756*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImage", "pCreateInfo->tiling", "VkImageTiling", AllVkImageTilingEnums, pCreateInfo->tiling, "VUID-VkImageCreateInfo-tiling-parameter");
2757*b7893ccfSSadaf Ebrahimi
2758*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateImage", "pCreateInfo->usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pCreateInfo->usage, kRequiredFlags, "VUID-VkImageCreateInfo-usage-parameter", "VUID-VkImageCreateInfo-usage-requiredbitmask");
2759*b7893ccfSSadaf Ebrahimi
2760*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImage", "pCreateInfo->sharingMode", "VkSharingMode", AllVkSharingModeEnums, pCreateInfo->sharingMode, "VUID-VkImageCreateInfo-sharingMode-parameter");
2761*b7893ccfSSadaf Ebrahimi
2762*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImage", "pCreateInfo->initialLayout", "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->initialLayout, "VUID-VkImageCreateInfo-initialLayout-parameter");
2763*b7893ccfSSadaf Ebrahimi }
2764*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2765*b7893ccfSSadaf Ebrahimi {
2766*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2767*b7893ccfSSadaf Ebrahimi
2768*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2769*b7893ccfSSadaf Ebrahimi
2770*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2771*b7893ccfSSadaf Ebrahimi
2772*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2773*b7893ccfSSadaf Ebrahimi {
2774*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2775*b7893ccfSSadaf Ebrahimi
2776*b7893ccfSSadaf Ebrahimi }
2777*b7893ccfSSadaf Ebrahimi
2778*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2779*b7893ccfSSadaf Ebrahimi {
2780*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2781*b7893ccfSSadaf Ebrahimi
2782*b7893ccfSSadaf Ebrahimi }
2783*b7893ccfSSadaf Ebrahimi }
2784*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImage", "pImage", pImage, "VUID-vkCreateImage-pImage-parameter");
2785*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateImage(device, pCreateInfo, pAllocator, pImage);
2786*b7893ccfSSadaf Ebrahimi return skip;
2787*b7893ccfSSadaf Ebrahimi }
2788*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)2789*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyImage(
2790*b7893ccfSSadaf Ebrahimi VkDevice device,
2791*b7893ccfSSadaf Ebrahimi VkImage image,
2792*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2793*b7893ccfSSadaf Ebrahimi bool skip = false;
2794*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2795*b7893ccfSSadaf Ebrahimi {
2796*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImage", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2797*b7893ccfSSadaf Ebrahimi
2798*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImage", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2799*b7893ccfSSadaf Ebrahimi
2800*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImage", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2801*b7893ccfSSadaf Ebrahimi
2802*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2803*b7893ccfSSadaf Ebrahimi {
2804*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImage", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2805*b7893ccfSSadaf Ebrahimi
2806*b7893ccfSSadaf Ebrahimi }
2807*b7893ccfSSadaf Ebrahimi
2808*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2809*b7893ccfSSadaf Ebrahimi {
2810*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImage", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2811*b7893ccfSSadaf Ebrahimi
2812*b7893ccfSSadaf Ebrahimi }
2813*b7893ccfSSadaf Ebrahimi }
2814*b7893ccfSSadaf Ebrahimi return skip;
2815*b7893ccfSSadaf Ebrahimi }
2816*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)2817*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageSubresourceLayout(
2818*b7893ccfSSadaf Ebrahimi VkDevice device,
2819*b7893ccfSSadaf Ebrahimi VkImage image,
2820*b7893ccfSSadaf Ebrahimi const VkImageSubresource* pSubresource,
2821*b7893ccfSSadaf Ebrahimi VkSubresourceLayout* pLayout) {
2822*b7893ccfSSadaf Ebrahimi bool skip = false;
2823*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageSubresourceLayout", "image", image);
2824*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetImageSubresourceLayout", "pSubresource", pSubresource, "VUID-vkGetImageSubresourceLayout-pSubresource-parameter");
2825*b7893ccfSSadaf Ebrahimi if (pSubresource != NULL)
2826*b7893ccfSSadaf Ebrahimi {
2827*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetImageSubresourceLayout", "pSubresource->aspectMask", "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pSubresource->aspectMask, kRequiredFlags, "VUID-VkImageSubresource-aspectMask-parameter", "VUID-VkImageSubresource-aspectMask-requiredbitmask");
2828*b7893ccfSSadaf Ebrahimi }
2829*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetImageSubresourceLayout", "pLayout", pLayout, "VUID-vkGetImageSubresourceLayout-pLayout-parameter");
2830*b7893ccfSSadaf Ebrahimi if (pLayout != NULL)
2831*b7893ccfSSadaf Ebrahimi {
2832*b7893ccfSSadaf Ebrahimi // No xml-driven validation
2833*b7893ccfSSadaf Ebrahimi }
2834*b7893ccfSSadaf Ebrahimi return skip;
2835*b7893ccfSSadaf Ebrahimi }
2836*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)2837*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateImageView(
2838*b7893ccfSSadaf Ebrahimi VkDevice device,
2839*b7893ccfSSadaf Ebrahimi const VkImageViewCreateInfo* pCreateInfo,
2840*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2841*b7893ccfSSadaf Ebrahimi VkImageView* pView) {
2842*b7893ccfSSadaf Ebrahimi bool skip = false;
2843*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateImageView", "pCreateInfo", "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, true, "VUID-vkCreateImageView-pCreateInfo-parameter", "VUID-VkImageViewCreateInfo-sType-sType");
2844*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2845*b7893ccfSSadaf Ebrahimi {
2846*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageViewCreateInfo[] = { VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO };
2847*b7893ccfSSadaf Ebrahimi
2848*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateImageView", "pCreateInfo->pNext", "VkImageViewASTCDecodeModeEXT, VkImageViewUsageCreateInfo, VkSamplerYcbcrConversionInfo", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkImageViewCreateInfo), allowed_structs_VkImageViewCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkImageViewCreateInfo-pNext-pNext");
2849*b7893ccfSSadaf Ebrahimi
2850*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateImageView", "pCreateInfo->flags", "VkImageViewCreateFlagBits", AllVkImageViewCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkImageViewCreateInfo-flags-parameter");
2851*b7893ccfSSadaf Ebrahimi
2852*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateImageView", "pCreateInfo->image", pCreateInfo->image);
2853*b7893ccfSSadaf Ebrahimi
2854*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->viewType", "VkImageViewType", AllVkImageViewTypeEnums, pCreateInfo->viewType, "VUID-VkImageViewCreateInfo-viewType-parameter");
2855*b7893ccfSSadaf Ebrahimi
2856*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->format", "VkFormat", AllVkFormatEnums, pCreateInfo->format, "VUID-VkImageViewCreateInfo-format-parameter");
2857*b7893ccfSSadaf Ebrahimi
2858*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->components.r", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.r, "VUID-VkComponentMapping-r-parameter");
2859*b7893ccfSSadaf Ebrahimi
2860*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->components.g", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.g, "VUID-VkComponentMapping-g-parameter");
2861*b7893ccfSSadaf Ebrahimi
2862*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->components.b", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.b, "VUID-VkComponentMapping-b-parameter");
2863*b7893ccfSSadaf Ebrahimi
2864*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateImageView", "pCreateInfo->components.a", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.a, "VUID-VkComponentMapping-a-parameter");
2865*b7893ccfSSadaf Ebrahimi
2866*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateImageView", "pCreateInfo->subresourceRange.aspectMask", "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pCreateInfo->subresourceRange.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceRange-aspectMask-parameter", "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask");
2867*b7893ccfSSadaf Ebrahimi }
2868*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2869*b7893ccfSSadaf Ebrahimi {
2870*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2871*b7893ccfSSadaf Ebrahimi
2872*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2873*b7893ccfSSadaf Ebrahimi
2874*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2875*b7893ccfSSadaf Ebrahimi
2876*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2877*b7893ccfSSadaf Ebrahimi {
2878*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2879*b7893ccfSSadaf Ebrahimi
2880*b7893ccfSSadaf Ebrahimi }
2881*b7893ccfSSadaf Ebrahimi
2882*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2883*b7893ccfSSadaf Ebrahimi {
2884*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2885*b7893ccfSSadaf Ebrahimi
2886*b7893ccfSSadaf Ebrahimi }
2887*b7893ccfSSadaf Ebrahimi }
2888*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImageView", "pView", pView, "VUID-vkCreateImageView-pView-parameter");
2889*b7893ccfSSadaf Ebrahimi return skip;
2890*b7893ccfSSadaf Ebrahimi }
2891*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)2892*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyImageView(
2893*b7893ccfSSadaf Ebrahimi VkDevice device,
2894*b7893ccfSSadaf Ebrahimi VkImageView imageView,
2895*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2896*b7893ccfSSadaf Ebrahimi bool skip = false;
2897*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2898*b7893ccfSSadaf Ebrahimi {
2899*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImageView", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2900*b7893ccfSSadaf Ebrahimi
2901*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImageView", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2902*b7893ccfSSadaf Ebrahimi
2903*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImageView", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2904*b7893ccfSSadaf Ebrahimi
2905*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2906*b7893ccfSSadaf Ebrahimi {
2907*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImageView", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2908*b7893ccfSSadaf Ebrahimi
2909*b7893ccfSSadaf Ebrahimi }
2910*b7893ccfSSadaf Ebrahimi
2911*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2912*b7893ccfSSadaf Ebrahimi {
2913*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyImageView", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2914*b7893ccfSSadaf Ebrahimi
2915*b7893ccfSSadaf Ebrahimi }
2916*b7893ccfSSadaf Ebrahimi }
2917*b7893ccfSSadaf Ebrahimi return skip;
2918*b7893ccfSSadaf Ebrahimi }
2919*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)2920*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateShaderModule(
2921*b7893ccfSSadaf Ebrahimi VkDevice device,
2922*b7893ccfSSadaf Ebrahimi const VkShaderModuleCreateInfo* pCreateInfo,
2923*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2924*b7893ccfSSadaf Ebrahimi VkShaderModule* pShaderModule) {
2925*b7893ccfSSadaf Ebrahimi bool skip = false;
2926*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateShaderModule", "pCreateInfo", "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, true, "VUID-vkCreateShaderModule-pCreateInfo-parameter", "VUID-VkShaderModuleCreateInfo-sType-sType");
2927*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2928*b7893ccfSSadaf Ebrahimi {
2929*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkShaderModuleCreateInfo[] = { VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT };
2930*b7893ccfSSadaf Ebrahimi
2931*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateShaderModule", "pCreateInfo->pNext", "VkShaderModuleValidationCacheCreateInfoEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkShaderModuleCreateInfo), allowed_structs_VkShaderModuleCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkShaderModuleCreateInfo-pNext-pNext");
2932*b7893ccfSSadaf Ebrahimi
2933*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateShaderModule", "pCreateInfo->flags", pCreateInfo->flags, kVUIDUndefined);
2934*b7893ccfSSadaf Ebrahimi
2935*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateShaderModule", "pCreateInfo->codeSize", "pCreateInfo->pCode", pCreateInfo->codeSize, &pCreateInfo->pCode, true, true, kVUIDUndefined, "VUID-VkShaderModuleCreateInfo-pCode-parameter");
2936*b7893ccfSSadaf Ebrahimi }
2937*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2938*b7893ccfSSadaf Ebrahimi {
2939*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2940*b7893ccfSSadaf Ebrahimi
2941*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2942*b7893ccfSSadaf Ebrahimi
2943*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2944*b7893ccfSSadaf Ebrahimi
2945*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2946*b7893ccfSSadaf Ebrahimi {
2947*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2948*b7893ccfSSadaf Ebrahimi
2949*b7893ccfSSadaf Ebrahimi }
2950*b7893ccfSSadaf Ebrahimi
2951*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2952*b7893ccfSSadaf Ebrahimi {
2953*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2954*b7893ccfSSadaf Ebrahimi
2955*b7893ccfSSadaf Ebrahimi }
2956*b7893ccfSSadaf Ebrahimi }
2957*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateShaderModule", "pShaderModule", pShaderModule, "VUID-vkCreateShaderModule-pShaderModule-parameter");
2958*b7893ccfSSadaf Ebrahimi return skip;
2959*b7893ccfSSadaf Ebrahimi }
2960*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)2961*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyShaderModule(
2962*b7893ccfSSadaf Ebrahimi VkDevice device,
2963*b7893ccfSSadaf Ebrahimi VkShaderModule shaderModule,
2964*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
2965*b7893ccfSSadaf Ebrahimi bool skip = false;
2966*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
2967*b7893ccfSSadaf Ebrahimi {
2968*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyShaderModule", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
2969*b7893ccfSSadaf Ebrahimi
2970*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyShaderModule", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
2971*b7893ccfSSadaf Ebrahimi
2972*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyShaderModule", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
2973*b7893ccfSSadaf Ebrahimi
2974*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
2975*b7893ccfSSadaf Ebrahimi {
2976*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyShaderModule", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2977*b7893ccfSSadaf Ebrahimi
2978*b7893ccfSSadaf Ebrahimi }
2979*b7893ccfSSadaf Ebrahimi
2980*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
2981*b7893ccfSSadaf Ebrahimi {
2982*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyShaderModule", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
2983*b7893ccfSSadaf Ebrahimi
2984*b7893ccfSSadaf Ebrahimi }
2985*b7893ccfSSadaf Ebrahimi }
2986*b7893ccfSSadaf Ebrahimi return skip;
2987*b7893ccfSSadaf Ebrahimi }
2988*b7893ccfSSadaf Ebrahimi
PreCallValidateCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)2989*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreatePipelineCache(
2990*b7893ccfSSadaf Ebrahimi VkDevice device,
2991*b7893ccfSSadaf Ebrahimi const VkPipelineCacheCreateInfo* pCreateInfo,
2992*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2993*b7893ccfSSadaf Ebrahimi VkPipelineCache* pPipelineCache) {
2994*b7893ccfSSadaf Ebrahimi bool skip = false;
2995*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreatePipelineCache", "pCreateInfo", "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, true, "VUID-vkCreatePipelineCache-pCreateInfo-parameter", "VUID-VkPipelineCacheCreateInfo-sType-sType");
2996*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
2997*b7893ccfSSadaf Ebrahimi {
2998*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreatePipelineCache", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineCacheCreateInfo-pNext-pNext");
2999*b7893ccfSSadaf Ebrahimi
3000*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreatePipelineCache", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask");
3001*b7893ccfSSadaf Ebrahimi
3002*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreatePipelineCache", "pCreateInfo->initialDataSize", "pCreateInfo->pInitialData", pCreateInfo->initialDataSize, &pCreateInfo->pInitialData, false, true, kVUIDUndefined, "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter");
3003*b7893ccfSSadaf Ebrahimi }
3004*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3005*b7893ccfSSadaf Ebrahimi {
3006*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3007*b7893ccfSSadaf Ebrahimi
3008*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3009*b7893ccfSSadaf Ebrahimi
3010*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3011*b7893ccfSSadaf Ebrahimi
3012*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3013*b7893ccfSSadaf Ebrahimi {
3014*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3015*b7893ccfSSadaf Ebrahimi
3016*b7893ccfSSadaf Ebrahimi }
3017*b7893ccfSSadaf Ebrahimi
3018*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3019*b7893ccfSSadaf Ebrahimi {
3020*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3021*b7893ccfSSadaf Ebrahimi
3022*b7893ccfSSadaf Ebrahimi }
3023*b7893ccfSSadaf Ebrahimi }
3024*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineCache", "pPipelineCache", pPipelineCache, "VUID-vkCreatePipelineCache-pPipelineCache-parameter");
3025*b7893ccfSSadaf Ebrahimi return skip;
3026*b7893ccfSSadaf Ebrahimi }
3027*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)3028*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyPipelineCache(
3029*b7893ccfSSadaf Ebrahimi VkDevice device,
3030*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
3031*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3032*b7893ccfSSadaf Ebrahimi bool skip = false;
3033*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3034*b7893ccfSSadaf Ebrahimi {
3035*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineCache", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3036*b7893ccfSSadaf Ebrahimi
3037*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineCache", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3038*b7893ccfSSadaf Ebrahimi
3039*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineCache", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3040*b7893ccfSSadaf Ebrahimi
3041*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3042*b7893ccfSSadaf Ebrahimi {
3043*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineCache", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3044*b7893ccfSSadaf Ebrahimi
3045*b7893ccfSSadaf Ebrahimi }
3046*b7893ccfSSadaf Ebrahimi
3047*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3048*b7893ccfSSadaf Ebrahimi {
3049*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineCache", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3050*b7893ccfSSadaf Ebrahimi
3051*b7893ccfSSadaf Ebrahimi }
3052*b7893ccfSSadaf Ebrahimi }
3053*b7893ccfSSadaf Ebrahimi return skip;
3054*b7893ccfSSadaf Ebrahimi }
3055*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)3056*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPipelineCacheData(
3057*b7893ccfSSadaf Ebrahimi VkDevice device,
3058*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
3059*b7893ccfSSadaf Ebrahimi size_t* pDataSize,
3060*b7893ccfSSadaf Ebrahimi void* pData) {
3061*b7893ccfSSadaf Ebrahimi bool skip = false;
3062*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPipelineCacheData", "pipelineCache", pipelineCache);
3063*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPipelineCacheData", "pDataSize", "pData", pDataSize, &pData, true, false, false, kVUIDUndefined, "VUID-vkGetPipelineCacheData-pData-parameter");
3064*b7893ccfSSadaf Ebrahimi return skip;
3065*b7893ccfSSadaf Ebrahimi }
3066*b7893ccfSSadaf Ebrahimi
PreCallValidateMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)3067*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateMergePipelineCaches(
3068*b7893ccfSSadaf Ebrahimi VkDevice device,
3069*b7893ccfSSadaf Ebrahimi VkPipelineCache dstCache,
3070*b7893ccfSSadaf Ebrahimi uint32_t srcCacheCount,
3071*b7893ccfSSadaf Ebrahimi const VkPipelineCache* pSrcCaches) {
3072*b7893ccfSSadaf Ebrahimi bool skip = false;
3073*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkMergePipelineCaches", "dstCache", dstCache);
3074*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkMergePipelineCaches", "srcCacheCount", "pSrcCaches", srcCacheCount, pSrcCaches, true, true);
3075*b7893ccfSSadaf Ebrahimi return skip;
3076*b7893ccfSSadaf Ebrahimi }
3077*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)3078*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateGraphicsPipelines(
3079*b7893ccfSSadaf Ebrahimi VkDevice device,
3080*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
3081*b7893ccfSSadaf Ebrahimi uint32_t createInfoCount,
3082*b7893ccfSSadaf Ebrahimi const VkGraphicsPipelineCreateInfo* pCreateInfos,
3083*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3084*b7893ccfSSadaf Ebrahimi VkPipeline* pPipelines) {
3085*b7893ccfSSadaf Ebrahimi bool skip = false;
3086*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateGraphicsPipelines", "createInfoCount", "pCreateInfos", "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", createInfoCount, pCreateInfos, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, true, true, "VUID-VkGraphicsPipelineCreateInfo-sType-sType", "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter", "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength");
3087*b7893ccfSSadaf Ebrahimi if (pCreateInfos != NULL)
3088*b7893ccfSSadaf Ebrahimi {
3089*b7893ccfSSadaf Ebrahimi for (uint32_t createInfoIndex = 0; createInfoIndex < createInfoCount; ++createInfoIndex)
3090*b7893ccfSSadaf Ebrahimi {
3091*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkGraphicsPipelineCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV };
3092*b7893ccfSSadaf Ebrahimi
3093*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pNext", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfoEXT, VkPipelineDiscardRectangleStateCreateInfoEXT, VkPipelineRepresentativeFragmentTestStateCreateInfoNV", pCreateInfos[createInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkGraphicsPipelineCreateInfo), allowed_structs_VkGraphicsPipelineCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext");
3094*b7893ccfSSadaf Ebrahimi
3095*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].flags", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCreateFlagBits", AllVkPipelineCreateFlagBits, pCreateInfos[createInfoIndex].flags, kOptionalFlags, "VUID-VkGraphicsPipelineCreateInfo-flags-parameter");
3096*b7893ccfSSadaf Ebrahimi
3097*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].stageCount", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].pStages", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", pCreateInfos[createInfoIndex].stageCount, pCreateInfos[createInfoIndex].pStages, VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, true, true, "VUID-VkPipelineShaderStageCreateInfo-sType-sType", "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter", "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength");
3098*b7893ccfSSadaf Ebrahimi
3099*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages != NULL)
3100*b7893ccfSSadaf Ebrahimi {
3101*b7893ccfSSadaf Ebrahimi for (uint32_t stageIndex = 0; stageIndex < pCreateInfos[createInfoIndex].stageCount; ++stageIndex)
3102*b7893ccfSSadaf Ebrahimi {
3103*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPipelineShaderStageCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT };
3104*b7893ccfSSadaf Ebrahimi
3105*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].pNext", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT", pCreateInfos[createInfoIndex].pStages[stageIndex].pNext, ARRAY_SIZE(allowed_structs_VkPipelineShaderStageCreateInfo), allowed_structs_VkPipelineShaderStageCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext");
3106*b7893ccfSSadaf Ebrahimi
3107*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].flags", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkPipelineShaderStageCreateFlagBits", AllVkPipelineShaderStageCreateFlagBits, pCreateInfos[createInfoIndex].pStages[stageIndex].flags, kOptionalFlags, "VUID-VkPipelineShaderStageCreateInfo-flags-parameter");
3108*b7893ccfSSadaf Ebrahimi
3109*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].stage", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkShaderStageFlagBits", AllVkShaderStageFlagBits, pCreateInfos[createInfoIndex].pStages[stageIndex].stage, kRequiredSingleBit, "VUID-VkPipelineShaderStageCreateInfo-stage-parameter", "VUID-VkPipelineShaderStageCreateInfo-stage-parameter");
3110*b7893ccfSSadaf Ebrahimi
3111*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].module", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].module);
3112*b7893ccfSSadaf Ebrahimi
3113*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].pName", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pName, "VUID-VkPipelineShaderStageCreateInfo-pName-parameter");
3114*b7893ccfSSadaf Ebrahimi
3115*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo != NULL)
3116*b7893ccfSSadaf Ebrahimi {
3117*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->mapEntryCount", ParameterName::IndexVector{ createInfoIndex, stageIndex }), ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->pMapEntries", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->mapEntryCount, &pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pMapEntries, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pMapEntries-parameter");
3118*b7893ccfSSadaf Ebrahimi
3119*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pMapEntries != NULL)
3120*b7893ccfSSadaf Ebrahimi {
3121*b7893ccfSSadaf Ebrahimi for (uint32_t mapEntryIndex = 0; mapEntryIndex < pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->mapEntryCount; ++mapEntryIndex)
3122*b7893ccfSSadaf Ebrahimi {
3123*b7893ccfSSadaf Ebrahimi // No xml-driven validation
3124*b7893ccfSSadaf Ebrahimi }
3125*b7893ccfSSadaf Ebrahimi }
3126*b7893ccfSSadaf Ebrahimi
3127*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->dataSize", ParameterName::IndexVector{ createInfoIndex, stageIndex }), ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->pData", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->dataSize, &pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pData, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pData-parameter");
3128*b7893ccfSSadaf Ebrahimi }
3129*b7893ccfSSadaf Ebrahimi }
3130*b7893ccfSSadaf Ebrahimi }
3131*b7893ccfSSadaf Ebrahimi
3132*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", pCreateInfos[createInfoIndex].pRasterizationState, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, true, "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter", "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType");
3133*b7893ccfSSadaf Ebrahimi
3134*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pRasterizationState != NULL)
3135*b7893ccfSSadaf Ebrahimi {
3136*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPipelineRasterizationStateCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT };
3137*b7893ccfSSadaf Ebrahimi
3138*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->pNext", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineRasterizationConservativeStateCreateInfoEXT, VkPipelineRasterizationDepthClipStateCreateInfoEXT, VkPipelineRasterizationLineStateCreateInfoEXT, VkPipelineRasterizationStateRasterizationOrderAMD, VkPipelineRasterizationStateStreamCreateInfoEXT", pCreateInfos[createInfoIndex].pRasterizationState->pNext, ARRAY_SIZE(allowed_structs_VkPipelineRasterizationStateCreateInfo), allowed_structs_VkPipelineRasterizationStateCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext");
3139*b7893ccfSSadaf Ebrahimi
3140*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->flags", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].pRasterizationState->flags, "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask");
3141*b7893ccfSSadaf Ebrahimi
3142*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->depthClampEnable", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].pRasterizationState->depthClampEnable);
3143*b7893ccfSSadaf Ebrahimi
3144*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->rasterizerDiscardEnable", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].pRasterizationState->rasterizerDiscardEnable);
3145*b7893ccfSSadaf Ebrahimi
3146*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->polygonMode", ParameterName::IndexVector{ createInfoIndex }), "VkPolygonMode", AllVkPolygonModeEnums, pCreateInfos[createInfoIndex].pRasterizationState->polygonMode, "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter");
3147*b7893ccfSSadaf Ebrahimi
3148*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->cullMode", ParameterName::IndexVector{ createInfoIndex }), "VkCullModeFlagBits", AllVkCullModeFlagBits, pCreateInfos[createInfoIndex].pRasterizationState->cullMode, kOptionalFlags, "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter");
3149*b7893ccfSSadaf Ebrahimi
3150*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->frontFace", ParameterName::IndexVector{ createInfoIndex }), "VkFrontFace", AllVkFrontFaceEnums, pCreateInfos[createInfoIndex].pRasterizationState->frontFace, "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter");
3151*b7893ccfSSadaf Ebrahimi
3152*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pRasterizationState->depthBiasEnable", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].pRasterizationState->depthBiasEnable);
3153*b7893ccfSSadaf Ebrahimi }
3154*b7893ccfSSadaf Ebrahimi
3155*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pDynamicState", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", pCreateInfos[createInfoIndex].pDynamicState, VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, false, "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter", "VUID-VkPipelineDynamicStateCreateInfo-sType-sType");
3156*b7893ccfSSadaf Ebrahimi
3157*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pDynamicState != NULL)
3158*b7893ccfSSadaf Ebrahimi {
3159*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pDynamicState->pNext", ParameterName::IndexVector{ createInfoIndex }), NULL, pCreateInfos[createInfoIndex].pDynamicState->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext");
3160*b7893ccfSSadaf Ebrahimi
3161*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pDynamicState->flags", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].pDynamicState->flags, "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask");
3162*b7893ccfSSadaf Ebrahimi
3163*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].pDynamicState->dynamicStateCount", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].pDynamicState->pDynamicStates", ParameterName::IndexVector{ createInfoIndex }), "VkDynamicState", AllVkDynamicStateEnums, pCreateInfos[createInfoIndex].pDynamicState->dynamicStateCount, pCreateInfos[createInfoIndex].pDynamicState->pDynamicStates, false, true);
3164*b7893ccfSSadaf Ebrahimi }
3165*b7893ccfSSadaf Ebrahimi
3166*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].layout", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].layout);
3167*b7893ccfSSadaf Ebrahimi
3168*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateGraphicsPipelines", ParameterName("pCreateInfos[%i].renderPass", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].renderPass);
3169*b7893ccfSSadaf Ebrahimi }
3170*b7893ccfSSadaf Ebrahimi }
3171*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3172*b7893ccfSSadaf Ebrahimi {
3173*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3174*b7893ccfSSadaf Ebrahimi
3175*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3176*b7893ccfSSadaf Ebrahimi
3177*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3178*b7893ccfSSadaf Ebrahimi
3179*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3180*b7893ccfSSadaf Ebrahimi {
3181*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3182*b7893ccfSSadaf Ebrahimi
3183*b7893ccfSSadaf Ebrahimi }
3184*b7893ccfSSadaf Ebrahimi
3185*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3186*b7893ccfSSadaf Ebrahimi {
3187*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateGraphicsPipelines", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3188*b7893ccfSSadaf Ebrahimi
3189*b7893ccfSSadaf Ebrahimi }
3190*b7893ccfSSadaf Ebrahimi }
3191*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateGraphicsPipelines", "createInfoCount", "pPipelines", createInfoCount, &pPipelines, true, true, "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength", "VUID-vkCreateGraphicsPipelines-pPipelines-parameter");
3192*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
3193*b7893ccfSSadaf Ebrahimi return skip;
3194*b7893ccfSSadaf Ebrahimi }
3195*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)3196*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateComputePipelines(
3197*b7893ccfSSadaf Ebrahimi VkDevice device,
3198*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
3199*b7893ccfSSadaf Ebrahimi uint32_t createInfoCount,
3200*b7893ccfSSadaf Ebrahimi const VkComputePipelineCreateInfo* pCreateInfos,
3201*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3202*b7893ccfSSadaf Ebrahimi VkPipeline* pPipelines) {
3203*b7893ccfSSadaf Ebrahimi bool skip = false;
3204*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateComputePipelines", "createInfoCount", "pCreateInfos", "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO", createInfoCount, pCreateInfos, VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, true, true, "VUID-VkComputePipelineCreateInfo-sType-sType", "VUID-vkCreateComputePipelines-pCreateInfos-parameter", "VUID-vkCreateComputePipelines-createInfoCount-arraylength");
3205*b7893ccfSSadaf Ebrahimi if (pCreateInfos != NULL)
3206*b7893ccfSSadaf Ebrahimi {
3207*b7893ccfSSadaf Ebrahimi for (uint32_t createInfoIndex = 0; createInfoIndex < createInfoCount; ++createInfoIndex)
3208*b7893ccfSSadaf Ebrahimi {
3209*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkComputePipelineCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD, VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT };
3210*b7893ccfSSadaf Ebrahimi
3211*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].pNext", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfoEXT", pCreateInfos[createInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkComputePipelineCreateInfo), allowed_structs_VkComputePipelineCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkComputePipelineCreateInfo-pNext-pNext");
3212*b7893ccfSSadaf Ebrahimi
3213*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].flags", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCreateFlagBits", AllVkPipelineCreateFlagBits, pCreateInfos[createInfoIndex].flags, kOptionalFlags, "VUID-VkComputePipelineCreateInfo-flags-parameter");
3214*b7893ccfSSadaf Ebrahimi
3215*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", &(pCreateInfos[createInfoIndex].stage), VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, false, kVUIDUndefined, "VUID-VkPipelineShaderStageCreateInfo-sType-sType");
3216*b7893ccfSSadaf Ebrahimi
3217*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPipelineShaderStageCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT };
3218*b7893ccfSSadaf Ebrahimi
3219*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.pNext", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT", pCreateInfos[createInfoIndex].stage.pNext, ARRAY_SIZE(allowed_structs_VkPipelineShaderStageCreateInfo), allowed_structs_VkPipelineShaderStageCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext");
3220*b7893ccfSSadaf Ebrahimi
3221*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.flags", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineShaderStageCreateFlagBits", AllVkPipelineShaderStageCreateFlagBits, pCreateInfos[createInfoIndex].stage.flags, kOptionalFlags, "VUID-VkPipelineShaderStageCreateInfo-flags-parameter");
3222*b7893ccfSSadaf Ebrahimi
3223*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.stage", ParameterName::IndexVector{ createInfoIndex }), "VkShaderStageFlagBits", AllVkShaderStageFlagBits, pCreateInfos[createInfoIndex].stage.stage, kRequiredSingleBit, "VUID-VkPipelineShaderStageCreateInfo-stage-parameter", "VUID-VkPipelineShaderStageCreateInfo-stage-parameter");
3224*b7893ccfSSadaf Ebrahimi
3225*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.module", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].stage.module);
3226*b7893ccfSSadaf Ebrahimi
3227*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.pName", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].stage.pName, "VUID-VkPipelineShaderStageCreateInfo-pName-parameter");
3228*b7893ccfSSadaf Ebrahimi
3229*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].stage.pSpecializationInfo != NULL)
3230*b7893ccfSSadaf Ebrahimi {
3231*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.pSpecializationInfo->mapEntryCount", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].stage.pSpecializationInfo->pMapEntries", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].stage.pSpecializationInfo->mapEntryCount, &pCreateInfos[createInfoIndex].stage.pSpecializationInfo->pMapEntries, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pMapEntries-parameter");
3232*b7893ccfSSadaf Ebrahimi
3233*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].stage.pSpecializationInfo->pMapEntries != NULL)
3234*b7893ccfSSadaf Ebrahimi {
3235*b7893ccfSSadaf Ebrahimi for (uint32_t mapEntryIndex = 0; mapEntryIndex < pCreateInfos[createInfoIndex].stage.pSpecializationInfo->mapEntryCount; ++mapEntryIndex)
3236*b7893ccfSSadaf Ebrahimi {
3237*b7893ccfSSadaf Ebrahimi // No xml-driven validation
3238*b7893ccfSSadaf Ebrahimi }
3239*b7893ccfSSadaf Ebrahimi }
3240*b7893ccfSSadaf Ebrahimi
3241*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].stage.pSpecializationInfo->dataSize", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].stage.pSpecializationInfo->pData", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].stage.pSpecializationInfo->dataSize, &pCreateInfos[createInfoIndex].stage.pSpecializationInfo->pData, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pData-parameter");
3242*b7893ccfSSadaf Ebrahimi }
3243*b7893ccfSSadaf Ebrahimi
3244*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateComputePipelines", ParameterName("pCreateInfos[%i].layout", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].layout);
3245*b7893ccfSSadaf Ebrahimi }
3246*b7893ccfSSadaf Ebrahimi }
3247*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3248*b7893ccfSSadaf Ebrahimi {
3249*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3250*b7893ccfSSadaf Ebrahimi
3251*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3252*b7893ccfSSadaf Ebrahimi
3253*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3254*b7893ccfSSadaf Ebrahimi
3255*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3256*b7893ccfSSadaf Ebrahimi {
3257*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3258*b7893ccfSSadaf Ebrahimi
3259*b7893ccfSSadaf Ebrahimi }
3260*b7893ccfSSadaf Ebrahimi
3261*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3262*b7893ccfSSadaf Ebrahimi {
3263*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateComputePipelines", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3264*b7893ccfSSadaf Ebrahimi
3265*b7893ccfSSadaf Ebrahimi }
3266*b7893ccfSSadaf Ebrahimi }
3267*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateComputePipelines", "createInfoCount", "pPipelines", createInfoCount, &pPipelines, true, true, "VUID-vkCreateComputePipelines-createInfoCount-arraylength", "VUID-vkCreateComputePipelines-pPipelines-parameter");
3268*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
3269*b7893ccfSSadaf Ebrahimi return skip;
3270*b7893ccfSSadaf Ebrahimi }
3271*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)3272*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyPipeline(
3273*b7893ccfSSadaf Ebrahimi VkDevice device,
3274*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
3275*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3276*b7893ccfSSadaf Ebrahimi bool skip = false;
3277*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3278*b7893ccfSSadaf Ebrahimi {
3279*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipeline", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3280*b7893ccfSSadaf Ebrahimi
3281*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipeline", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3282*b7893ccfSSadaf Ebrahimi
3283*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipeline", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3284*b7893ccfSSadaf Ebrahimi
3285*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3286*b7893ccfSSadaf Ebrahimi {
3287*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipeline", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3288*b7893ccfSSadaf Ebrahimi
3289*b7893ccfSSadaf Ebrahimi }
3290*b7893ccfSSadaf Ebrahimi
3291*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3292*b7893ccfSSadaf Ebrahimi {
3293*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipeline", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3294*b7893ccfSSadaf Ebrahimi
3295*b7893ccfSSadaf Ebrahimi }
3296*b7893ccfSSadaf Ebrahimi }
3297*b7893ccfSSadaf Ebrahimi return skip;
3298*b7893ccfSSadaf Ebrahimi }
3299*b7893ccfSSadaf Ebrahimi
PreCallValidateCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)3300*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreatePipelineLayout(
3301*b7893ccfSSadaf Ebrahimi VkDevice device,
3302*b7893ccfSSadaf Ebrahimi const VkPipelineLayoutCreateInfo* pCreateInfo,
3303*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3304*b7893ccfSSadaf Ebrahimi VkPipelineLayout* pPipelineLayout) {
3305*b7893ccfSSadaf Ebrahimi bool skip = false;
3306*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreatePipelineLayout", "pCreateInfo", "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, true, "VUID-vkCreatePipelineLayout-pCreateInfo-parameter", "VUID-VkPipelineLayoutCreateInfo-sType-sType");
3307*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3308*b7893ccfSSadaf Ebrahimi {
3309*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreatePipelineLayout", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineLayoutCreateInfo-pNext-pNext");
3310*b7893ccfSSadaf Ebrahimi
3311*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreatePipelineLayout", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask");
3312*b7893ccfSSadaf Ebrahimi
3313*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreatePipelineLayout", "pCreateInfo->setLayoutCount", "pCreateInfo->pSetLayouts", pCreateInfo->setLayoutCount, &pCreateInfo->pSetLayouts, false, true, kVUIDUndefined, "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter");
3314*b7893ccfSSadaf Ebrahimi
3315*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreatePipelineLayout", "pCreateInfo->pushConstantRangeCount", "pCreateInfo->pPushConstantRanges", pCreateInfo->pushConstantRangeCount, &pCreateInfo->pPushConstantRanges, false, true, kVUIDUndefined, "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter");
3316*b7893ccfSSadaf Ebrahimi
3317*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pPushConstantRanges != NULL)
3318*b7893ccfSSadaf Ebrahimi {
3319*b7893ccfSSadaf Ebrahimi for (uint32_t pushConstantRangeIndex = 0; pushConstantRangeIndex < pCreateInfo->pushConstantRangeCount; ++pushConstantRangeIndex)
3320*b7893ccfSSadaf Ebrahimi {
3321*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreatePipelineLayout", ParameterName("pCreateInfo->pPushConstantRanges[%i].stageFlags", ParameterName::IndexVector{ pushConstantRangeIndex }), "VkShaderStageFlagBits", AllVkShaderStageFlagBits, pCreateInfo->pPushConstantRanges[pushConstantRangeIndex].stageFlags, kRequiredFlags, "VUID-VkPushConstantRange-stageFlags-parameter", "VUID-VkPushConstantRange-stageFlags-requiredbitmask");
3322*b7893ccfSSadaf Ebrahimi }
3323*b7893ccfSSadaf Ebrahimi }
3324*b7893ccfSSadaf Ebrahimi }
3325*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3326*b7893ccfSSadaf Ebrahimi {
3327*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3328*b7893ccfSSadaf Ebrahimi
3329*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3330*b7893ccfSSadaf Ebrahimi
3331*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3332*b7893ccfSSadaf Ebrahimi
3333*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3334*b7893ccfSSadaf Ebrahimi {
3335*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3336*b7893ccfSSadaf Ebrahimi
3337*b7893ccfSSadaf Ebrahimi }
3338*b7893ccfSSadaf Ebrahimi
3339*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3340*b7893ccfSSadaf Ebrahimi {
3341*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3342*b7893ccfSSadaf Ebrahimi
3343*b7893ccfSSadaf Ebrahimi }
3344*b7893ccfSSadaf Ebrahimi }
3345*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreatePipelineLayout", "pPipelineLayout", pPipelineLayout, "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter");
3346*b7893ccfSSadaf Ebrahimi return skip;
3347*b7893ccfSSadaf Ebrahimi }
3348*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)3349*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyPipelineLayout(
3350*b7893ccfSSadaf Ebrahimi VkDevice device,
3351*b7893ccfSSadaf Ebrahimi VkPipelineLayout pipelineLayout,
3352*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3353*b7893ccfSSadaf Ebrahimi bool skip = false;
3354*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3355*b7893ccfSSadaf Ebrahimi {
3356*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineLayout", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3357*b7893ccfSSadaf Ebrahimi
3358*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineLayout", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3359*b7893ccfSSadaf Ebrahimi
3360*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineLayout", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3361*b7893ccfSSadaf Ebrahimi
3362*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3363*b7893ccfSSadaf Ebrahimi {
3364*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineLayout", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3365*b7893ccfSSadaf Ebrahimi
3366*b7893ccfSSadaf Ebrahimi }
3367*b7893ccfSSadaf Ebrahimi
3368*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3369*b7893ccfSSadaf Ebrahimi {
3370*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyPipelineLayout", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3371*b7893ccfSSadaf Ebrahimi
3372*b7893ccfSSadaf Ebrahimi }
3373*b7893ccfSSadaf Ebrahimi }
3374*b7893ccfSSadaf Ebrahimi return skip;
3375*b7893ccfSSadaf Ebrahimi }
3376*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)3377*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSampler(
3378*b7893ccfSSadaf Ebrahimi VkDevice device,
3379*b7893ccfSSadaf Ebrahimi const VkSamplerCreateInfo* pCreateInfo,
3380*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3381*b7893ccfSSadaf Ebrahimi VkSampler* pSampler) {
3382*b7893ccfSSadaf Ebrahimi bool skip = false;
3383*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateSampler", "pCreateInfo", "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, true, "VUID-vkCreateSampler-pCreateInfo-parameter", "VUID-VkSamplerCreateInfo-sType-sType");
3384*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3385*b7893ccfSSadaf Ebrahimi {
3386*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSamplerCreateInfo[] = { VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO };
3387*b7893ccfSSadaf Ebrahimi
3388*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSampler", "pCreateInfo->pNext", "VkSamplerReductionModeCreateInfoEXT, VkSamplerYcbcrConversionInfo", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkSamplerCreateInfo), allowed_structs_VkSamplerCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkSamplerCreateInfo-pNext-pNext");
3389*b7893ccfSSadaf Ebrahimi
3390*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSampler", "pCreateInfo->flags", "VkSamplerCreateFlagBits", AllVkSamplerCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkSamplerCreateInfo-flags-parameter");
3391*b7893ccfSSadaf Ebrahimi
3392*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->magFilter", "VkFilter", AllVkFilterEnums, pCreateInfo->magFilter, "VUID-VkSamplerCreateInfo-magFilter-parameter");
3393*b7893ccfSSadaf Ebrahimi
3394*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->minFilter", "VkFilter", AllVkFilterEnums, pCreateInfo->minFilter, "VUID-VkSamplerCreateInfo-minFilter-parameter");
3395*b7893ccfSSadaf Ebrahimi
3396*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->mipmapMode", "VkSamplerMipmapMode", AllVkSamplerMipmapModeEnums, pCreateInfo->mipmapMode, "VUID-VkSamplerCreateInfo-mipmapMode-parameter");
3397*b7893ccfSSadaf Ebrahimi
3398*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->addressModeU", "VkSamplerAddressMode", AllVkSamplerAddressModeEnums, pCreateInfo->addressModeU, "VUID-VkSamplerCreateInfo-addressModeU-parameter");
3399*b7893ccfSSadaf Ebrahimi
3400*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->addressModeV", "VkSamplerAddressMode", AllVkSamplerAddressModeEnums, pCreateInfo->addressModeV, "VUID-VkSamplerCreateInfo-addressModeV-parameter");
3401*b7893ccfSSadaf Ebrahimi
3402*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSampler", "pCreateInfo->addressModeW", "VkSamplerAddressMode", AllVkSamplerAddressModeEnums, pCreateInfo->addressModeW, "VUID-VkSamplerCreateInfo-addressModeW-parameter");
3403*b7893ccfSSadaf Ebrahimi
3404*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSampler", "pCreateInfo->anisotropyEnable", pCreateInfo->anisotropyEnable);
3405*b7893ccfSSadaf Ebrahimi
3406*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSampler", "pCreateInfo->compareEnable", pCreateInfo->compareEnable);
3407*b7893ccfSSadaf Ebrahimi
3408*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSampler", "pCreateInfo->unnormalizedCoordinates", pCreateInfo->unnormalizedCoordinates);
3409*b7893ccfSSadaf Ebrahimi }
3410*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3411*b7893ccfSSadaf Ebrahimi {
3412*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3413*b7893ccfSSadaf Ebrahimi
3414*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3415*b7893ccfSSadaf Ebrahimi
3416*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3417*b7893ccfSSadaf Ebrahimi
3418*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3419*b7893ccfSSadaf Ebrahimi {
3420*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3421*b7893ccfSSadaf Ebrahimi
3422*b7893ccfSSadaf Ebrahimi }
3423*b7893ccfSSadaf Ebrahimi
3424*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3425*b7893ccfSSadaf Ebrahimi {
3426*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3427*b7893ccfSSadaf Ebrahimi
3428*b7893ccfSSadaf Ebrahimi }
3429*b7893ccfSSadaf Ebrahimi }
3430*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSampler", "pSampler", pSampler, "VUID-vkCreateSampler-pSampler-parameter");
3431*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateSampler(device, pCreateInfo, pAllocator, pSampler);
3432*b7893ccfSSadaf Ebrahimi return skip;
3433*b7893ccfSSadaf Ebrahimi }
3434*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)3435*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySampler(
3436*b7893ccfSSadaf Ebrahimi VkDevice device,
3437*b7893ccfSSadaf Ebrahimi VkSampler sampler,
3438*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3439*b7893ccfSSadaf Ebrahimi bool skip = false;
3440*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3441*b7893ccfSSadaf Ebrahimi {
3442*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySampler", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3443*b7893ccfSSadaf Ebrahimi
3444*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySampler", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3445*b7893ccfSSadaf Ebrahimi
3446*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySampler", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3447*b7893ccfSSadaf Ebrahimi
3448*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3449*b7893ccfSSadaf Ebrahimi {
3450*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySampler", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3451*b7893ccfSSadaf Ebrahimi
3452*b7893ccfSSadaf Ebrahimi }
3453*b7893ccfSSadaf Ebrahimi
3454*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3455*b7893ccfSSadaf Ebrahimi {
3456*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySampler", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3457*b7893ccfSSadaf Ebrahimi
3458*b7893ccfSSadaf Ebrahimi }
3459*b7893ccfSSadaf Ebrahimi }
3460*b7893ccfSSadaf Ebrahimi return skip;
3461*b7893ccfSSadaf Ebrahimi }
3462*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)3463*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDescriptorSetLayout(
3464*b7893ccfSSadaf Ebrahimi VkDevice device,
3465*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3466*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3467*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayout* pSetLayout) {
3468*b7893ccfSSadaf Ebrahimi bool skip = false;
3469*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDescriptorSetLayout", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, true, "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter", "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType");
3470*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3471*b7893ccfSSadaf Ebrahimi {
3472*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDescriptorSetLayoutCreateInfo[] = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT };
3473*b7893ccfSSadaf Ebrahimi
3474*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDescriptorSetLayout", "pCreateInfo->pNext", "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDescriptorSetLayoutCreateInfo), allowed_structs_VkDescriptorSetLayoutCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext");
3475*b7893ccfSSadaf Ebrahimi
3476*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDescriptorSetLayout", "pCreateInfo->flags", "VkDescriptorSetLayoutCreateFlagBits", AllVkDescriptorSetLayoutCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter");
3477*b7893ccfSSadaf Ebrahimi
3478*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateDescriptorSetLayout", "pCreateInfo->bindingCount", "pCreateInfo->pBindings", pCreateInfo->bindingCount, &pCreateInfo->pBindings, false, true, kVUIDUndefined, "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter");
3479*b7893ccfSSadaf Ebrahimi
3480*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pBindings != NULL)
3481*b7893ccfSSadaf Ebrahimi {
3482*b7893ccfSSadaf Ebrahimi for (uint32_t bindingIndex = 0; bindingIndex < pCreateInfo->bindingCount; ++bindingIndex)
3483*b7893ccfSSadaf Ebrahimi {
3484*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorSetLayout", ParameterName("pCreateInfo->pBindings[%i].descriptorType", ParameterName::IndexVector{ bindingIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pBindings[bindingIndex].descriptorType, "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter");
3485*b7893ccfSSadaf Ebrahimi }
3486*b7893ccfSSadaf Ebrahimi }
3487*b7893ccfSSadaf Ebrahimi }
3488*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3489*b7893ccfSSadaf Ebrahimi {
3490*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3491*b7893ccfSSadaf Ebrahimi
3492*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3493*b7893ccfSSadaf Ebrahimi
3494*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3495*b7893ccfSSadaf Ebrahimi
3496*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3497*b7893ccfSSadaf Ebrahimi {
3498*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3499*b7893ccfSSadaf Ebrahimi
3500*b7893ccfSSadaf Ebrahimi }
3501*b7893ccfSSadaf Ebrahimi
3502*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3503*b7893ccfSSadaf Ebrahimi {
3504*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3505*b7893ccfSSadaf Ebrahimi
3506*b7893ccfSSadaf Ebrahimi }
3507*b7893ccfSSadaf Ebrahimi }
3508*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorSetLayout", "pSetLayout", pSetLayout, "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter");
3509*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
3510*b7893ccfSSadaf Ebrahimi return skip;
3511*b7893ccfSSadaf Ebrahimi }
3512*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)3513*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDescriptorSetLayout(
3514*b7893ccfSSadaf Ebrahimi VkDevice device,
3515*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayout descriptorSetLayout,
3516*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3517*b7893ccfSSadaf Ebrahimi bool skip = false;
3518*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3519*b7893ccfSSadaf Ebrahimi {
3520*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorSetLayout", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3521*b7893ccfSSadaf Ebrahimi
3522*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorSetLayout", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3523*b7893ccfSSadaf Ebrahimi
3524*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorSetLayout", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3525*b7893ccfSSadaf Ebrahimi
3526*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3527*b7893ccfSSadaf Ebrahimi {
3528*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorSetLayout", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3529*b7893ccfSSadaf Ebrahimi
3530*b7893ccfSSadaf Ebrahimi }
3531*b7893ccfSSadaf Ebrahimi
3532*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3533*b7893ccfSSadaf Ebrahimi {
3534*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorSetLayout", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3535*b7893ccfSSadaf Ebrahimi
3536*b7893ccfSSadaf Ebrahimi }
3537*b7893ccfSSadaf Ebrahimi }
3538*b7893ccfSSadaf Ebrahimi return skip;
3539*b7893ccfSSadaf Ebrahimi }
3540*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)3541*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDescriptorPool(
3542*b7893ccfSSadaf Ebrahimi VkDevice device,
3543*b7893ccfSSadaf Ebrahimi const VkDescriptorPoolCreateInfo* pCreateInfo,
3544*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3545*b7893ccfSSadaf Ebrahimi VkDescriptorPool* pDescriptorPool) {
3546*b7893ccfSSadaf Ebrahimi bool skip = false;
3547*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDescriptorPool", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, true, "VUID-vkCreateDescriptorPool-pCreateInfo-parameter", "VUID-VkDescriptorPoolCreateInfo-sType-sType");
3548*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3549*b7893ccfSSadaf Ebrahimi {
3550*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDescriptorPoolCreateInfo[] = { VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT };
3551*b7893ccfSSadaf Ebrahimi
3552*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDescriptorPool", "pCreateInfo->pNext", "VkDescriptorPoolInlineUniformBlockCreateInfoEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDescriptorPoolCreateInfo), allowed_structs_VkDescriptorPoolCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorPoolCreateInfo-pNext-pNext");
3553*b7893ccfSSadaf Ebrahimi
3554*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDescriptorPool", "pCreateInfo->flags", "VkDescriptorPoolCreateFlagBits", AllVkDescriptorPoolCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkDescriptorPoolCreateInfo-flags-parameter");
3555*b7893ccfSSadaf Ebrahimi
3556*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateDescriptorPool", "pCreateInfo->poolSizeCount", "pCreateInfo->pPoolSizes", pCreateInfo->poolSizeCount, &pCreateInfo->pPoolSizes, true, true, "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength", "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter");
3557*b7893ccfSSadaf Ebrahimi
3558*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pPoolSizes != NULL)
3559*b7893ccfSSadaf Ebrahimi {
3560*b7893ccfSSadaf Ebrahimi for (uint32_t poolSizeIndex = 0; poolSizeIndex < pCreateInfo->poolSizeCount; ++poolSizeIndex)
3561*b7893ccfSSadaf Ebrahimi {
3562*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorPool", ParameterName("pCreateInfo->pPoolSizes[%i].type", ParameterName::IndexVector{ poolSizeIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pPoolSizes[poolSizeIndex].type, "VUID-VkDescriptorPoolSize-type-parameter");
3563*b7893ccfSSadaf Ebrahimi }
3564*b7893ccfSSadaf Ebrahimi }
3565*b7893ccfSSadaf Ebrahimi }
3566*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3567*b7893ccfSSadaf Ebrahimi {
3568*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3569*b7893ccfSSadaf Ebrahimi
3570*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3571*b7893ccfSSadaf Ebrahimi
3572*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3573*b7893ccfSSadaf Ebrahimi
3574*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3575*b7893ccfSSadaf Ebrahimi {
3576*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3577*b7893ccfSSadaf Ebrahimi
3578*b7893ccfSSadaf Ebrahimi }
3579*b7893ccfSSadaf Ebrahimi
3580*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3581*b7893ccfSSadaf Ebrahimi {
3582*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3583*b7893ccfSSadaf Ebrahimi
3584*b7893ccfSSadaf Ebrahimi }
3585*b7893ccfSSadaf Ebrahimi }
3586*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorPool", "pDescriptorPool", pDescriptorPool, "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter");
3587*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
3588*b7893ccfSSadaf Ebrahimi return skip;
3589*b7893ccfSSadaf Ebrahimi }
3590*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)3591*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDescriptorPool(
3592*b7893ccfSSadaf Ebrahimi VkDevice device,
3593*b7893ccfSSadaf Ebrahimi VkDescriptorPool descriptorPool,
3594*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3595*b7893ccfSSadaf Ebrahimi bool skip = false;
3596*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3597*b7893ccfSSadaf Ebrahimi {
3598*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3599*b7893ccfSSadaf Ebrahimi
3600*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3601*b7893ccfSSadaf Ebrahimi
3602*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3603*b7893ccfSSadaf Ebrahimi
3604*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3605*b7893ccfSSadaf Ebrahimi {
3606*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3607*b7893ccfSSadaf Ebrahimi
3608*b7893ccfSSadaf Ebrahimi }
3609*b7893ccfSSadaf Ebrahimi
3610*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3611*b7893ccfSSadaf Ebrahimi {
3612*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3613*b7893ccfSSadaf Ebrahimi
3614*b7893ccfSSadaf Ebrahimi }
3615*b7893ccfSSadaf Ebrahimi }
3616*b7893ccfSSadaf Ebrahimi return skip;
3617*b7893ccfSSadaf Ebrahimi }
3618*b7893ccfSSadaf Ebrahimi
PreCallValidateResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)3619*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetDescriptorPool(
3620*b7893ccfSSadaf Ebrahimi VkDevice device,
3621*b7893ccfSSadaf Ebrahimi VkDescriptorPool descriptorPool,
3622*b7893ccfSSadaf Ebrahimi VkDescriptorPoolResetFlags flags) {
3623*b7893ccfSSadaf Ebrahimi bool skip = false;
3624*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkResetDescriptorPool", "descriptorPool", descriptorPool);
3625*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkResetDescriptorPool", "flags", flags, "VUID-vkResetDescriptorPool-flags-zerobitmask");
3626*b7893ccfSSadaf Ebrahimi return skip;
3627*b7893ccfSSadaf Ebrahimi }
3628*b7893ccfSSadaf Ebrahimi
PreCallValidateAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)3629*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAllocateDescriptorSets(
3630*b7893ccfSSadaf Ebrahimi VkDevice device,
3631*b7893ccfSSadaf Ebrahimi const VkDescriptorSetAllocateInfo* pAllocateInfo,
3632*b7893ccfSSadaf Ebrahimi VkDescriptorSet* pDescriptorSets) {
3633*b7893ccfSSadaf Ebrahimi bool skip = false;
3634*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkAllocateDescriptorSets", "pAllocateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO", pAllocateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, true, "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter", "VUID-VkDescriptorSetAllocateInfo-sType-sType");
3635*b7893ccfSSadaf Ebrahimi if (pAllocateInfo != NULL)
3636*b7893ccfSSadaf Ebrahimi {
3637*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDescriptorSetAllocateInfo[] = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT };
3638*b7893ccfSSadaf Ebrahimi
3639*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkAllocateDescriptorSets", "pAllocateInfo->pNext", "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT", pAllocateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDescriptorSetAllocateInfo), allowed_structs_VkDescriptorSetAllocateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorSetAllocateInfo-pNext-pNext");
3640*b7893ccfSSadaf Ebrahimi
3641*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAllocateDescriptorSets", "pAllocateInfo->descriptorPool", pAllocateInfo->descriptorPool);
3642*b7893ccfSSadaf Ebrahimi
3643*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkAllocateDescriptorSets", "pAllocateInfo->descriptorSetCount", "pAllocateInfo->pSetLayouts", pAllocateInfo->descriptorSetCount, pAllocateInfo->pSetLayouts, true, true);
3644*b7893ccfSSadaf Ebrahimi }
3645*b7893ccfSSadaf Ebrahimi if (pAllocateInfo != NULL) {
3646*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkAllocateDescriptorSets", "pAllocateInfo->descriptorSetCount", "pDescriptorSets", pAllocateInfo->descriptorSetCount, &pDescriptorSets, true, true, kVUIDUndefined, "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter");
3647*b7893ccfSSadaf Ebrahimi }
3648*b7893ccfSSadaf Ebrahimi return skip;
3649*b7893ccfSSadaf Ebrahimi }
3650*b7893ccfSSadaf Ebrahimi
PreCallValidateFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)3651*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateFreeDescriptorSets(
3652*b7893ccfSSadaf Ebrahimi VkDevice device,
3653*b7893ccfSSadaf Ebrahimi VkDescriptorPool descriptorPool,
3654*b7893ccfSSadaf Ebrahimi uint32_t descriptorSetCount,
3655*b7893ccfSSadaf Ebrahimi const VkDescriptorSet* pDescriptorSets) {
3656*b7893ccfSSadaf Ebrahimi bool skip = false;
3657*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkFreeDescriptorSets", "descriptorPool", descriptorPool);
3658*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
3659*b7893ccfSSadaf Ebrahimi return skip;
3660*b7893ccfSSadaf Ebrahimi }
3661*b7893ccfSSadaf Ebrahimi
PreCallValidateUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)3662*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUpdateDescriptorSets(
3663*b7893ccfSSadaf Ebrahimi VkDevice device,
3664*b7893ccfSSadaf Ebrahimi uint32_t descriptorWriteCount,
3665*b7893ccfSSadaf Ebrahimi const VkWriteDescriptorSet* pDescriptorWrites,
3666*b7893ccfSSadaf Ebrahimi uint32_t descriptorCopyCount,
3667*b7893ccfSSadaf Ebrahimi const VkCopyDescriptorSet* pDescriptorCopies) {
3668*b7893ccfSSadaf Ebrahimi bool skip = false;
3669*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkUpdateDescriptorSets", "descriptorWriteCount", "pDescriptorWrites", "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", descriptorWriteCount, pDescriptorWrites, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, false, true, "VUID-VkWriteDescriptorSet-sType-sType", "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter", kVUIDUndefined);
3670*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites != NULL)
3671*b7893ccfSSadaf Ebrahimi {
3672*b7893ccfSSadaf Ebrahimi for (uint32_t descriptorWriteIndex = 0; descriptorWriteIndex < descriptorWriteCount; ++descriptorWriteIndex)
3673*b7893ccfSSadaf Ebrahimi {
3674*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkWriteDescriptorSet[] = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT };
3675*b7893ccfSSadaf Ebrahimi
3676*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkUpdateDescriptorSets", ParameterName("pDescriptorWrites[%i].pNext", ParameterName::IndexVector{ descriptorWriteIndex }), "VkWriteDescriptorSetAccelerationStructureNV, VkWriteDescriptorSetInlineUniformBlockEXT", pDescriptorWrites[descriptorWriteIndex].pNext, ARRAY_SIZE(allowed_structs_VkWriteDescriptorSet), allowed_structs_VkWriteDescriptorSet, GeneratedVulkanHeaderVersion, "VUID-VkWriteDescriptorSet-pNext-pNext");
3677*b7893ccfSSadaf Ebrahimi
3678*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkUpdateDescriptorSets", ParameterName("pDescriptorWrites[%i].descriptorType", ParameterName::IndexVector{ descriptorWriteIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pDescriptorWrites[descriptorWriteIndex].descriptorType, "VUID-VkWriteDescriptorSet-descriptorType-parameter");
3679*b7893ccfSSadaf Ebrahimi }
3680*b7893ccfSSadaf Ebrahimi }
3681*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkUpdateDescriptorSets", "descriptorCopyCount", "pDescriptorCopies", "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET", descriptorCopyCount, pDescriptorCopies, VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, false, true, "VUID-VkCopyDescriptorSet-sType-sType", "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter", kVUIDUndefined);
3682*b7893ccfSSadaf Ebrahimi if (pDescriptorCopies != NULL)
3683*b7893ccfSSadaf Ebrahimi {
3684*b7893ccfSSadaf Ebrahimi for (uint32_t descriptorCopyIndex = 0; descriptorCopyIndex < descriptorCopyCount; ++descriptorCopyIndex)
3685*b7893ccfSSadaf Ebrahimi {
3686*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkUpdateDescriptorSets", ParameterName("pDescriptorCopies[%i].pNext", ParameterName::IndexVector{ descriptorCopyIndex }), NULL, pDescriptorCopies[descriptorCopyIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCopyDescriptorSet-pNext-pNext");
3687*b7893ccfSSadaf Ebrahimi
3688*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSets", ParameterName("pDescriptorCopies[%i].srcSet", ParameterName::IndexVector{ descriptorCopyIndex }), pDescriptorCopies[descriptorCopyIndex].srcSet);
3689*b7893ccfSSadaf Ebrahimi
3690*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSets", ParameterName("pDescriptorCopies[%i].dstSet", ParameterName::IndexVector{ descriptorCopyIndex }), pDescriptorCopies[descriptorCopyIndex].dstSet);
3691*b7893ccfSSadaf Ebrahimi }
3692*b7893ccfSSadaf Ebrahimi }
3693*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
3694*b7893ccfSSadaf Ebrahimi return skip;
3695*b7893ccfSSadaf Ebrahimi }
3696*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)3697*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateFramebuffer(
3698*b7893ccfSSadaf Ebrahimi VkDevice device,
3699*b7893ccfSSadaf Ebrahimi const VkFramebufferCreateInfo* pCreateInfo,
3700*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3701*b7893ccfSSadaf Ebrahimi VkFramebuffer* pFramebuffer) {
3702*b7893ccfSSadaf Ebrahimi bool skip = false;
3703*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateFramebuffer", "pCreateInfo", "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, true, "VUID-vkCreateFramebuffer-pCreateInfo-parameter", "VUID-VkFramebufferCreateInfo-sType-sType");
3704*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3705*b7893ccfSSadaf Ebrahimi {
3706*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkFramebufferCreateInfo[] = { VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR };
3707*b7893ccfSSadaf Ebrahimi
3708*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateFramebuffer", "pCreateInfo->pNext", "VkFramebufferAttachmentsCreateInfoKHR", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkFramebufferCreateInfo), allowed_structs_VkFramebufferCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkFramebufferCreateInfo-pNext-pNext");
3709*b7893ccfSSadaf Ebrahimi
3710*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateFramebuffer", "pCreateInfo->flags", "VkFramebufferCreateFlagBits", AllVkFramebufferCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkFramebufferCreateInfo-flags-parameter");
3711*b7893ccfSSadaf Ebrahimi
3712*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateFramebuffer", "pCreateInfo->renderPass", pCreateInfo->renderPass);
3713*b7893ccfSSadaf Ebrahimi }
3714*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3715*b7893ccfSSadaf Ebrahimi {
3716*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3717*b7893ccfSSadaf Ebrahimi
3718*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3719*b7893ccfSSadaf Ebrahimi
3720*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3721*b7893ccfSSadaf Ebrahimi
3722*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3723*b7893ccfSSadaf Ebrahimi {
3724*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3725*b7893ccfSSadaf Ebrahimi
3726*b7893ccfSSadaf Ebrahimi }
3727*b7893ccfSSadaf Ebrahimi
3728*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3729*b7893ccfSSadaf Ebrahimi {
3730*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3731*b7893ccfSSadaf Ebrahimi
3732*b7893ccfSSadaf Ebrahimi }
3733*b7893ccfSSadaf Ebrahimi }
3734*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateFramebuffer", "pFramebuffer", pFramebuffer, "VUID-vkCreateFramebuffer-pFramebuffer-parameter");
3735*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
3736*b7893ccfSSadaf Ebrahimi return skip;
3737*b7893ccfSSadaf Ebrahimi }
3738*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)3739*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyFramebuffer(
3740*b7893ccfSSadaf Ebrahimi VkDevice device,
3741*b7893ccfSSadaf Ebrahimi VkFramebuffer framebuffer,
3742*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3743*b7893ccfSSadaf Ebrahimi bool skip = false;
3744*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3745*b7893ccfSSadaf Ebrahimi {
3746*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFramebuffer", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3747*b7893ccfSSadaf Ebrahimi
3748*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFramebuffer", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3749*b7893ccfSSadaf Ebrahimi
3750*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFramebuffer", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3751*b7893ccfSSadaf Ebrahimi
3752*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3753*b7893ccfSSadaf Ebrahimi {
3754*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFramebuffer", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3755*b7893ccfSSadaf Ebrahimi
3756*b7893ccfSSadaf Ebrahimi }
3757*b7893ccfSSadaf Ebrahimi
3758*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3759*b7893ccfSSadaf Ebrahimi {
3760*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyFramebuffer", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3761*b7893ccfSSadaf Ebrahimi
3762*b7893ccfSSadaf Ebrahimi }
3763*b7893ccfSSadaf Ebrahimi }
3764*b7893ccfSSadaf Ebrahimi return skip;
3765*b7893ccfSSadaf Ebrahimi }
3766*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3767*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateRenderPass(
3768*b7893ccfSSadaf Ebrahimi VkDevice device,
3769*b7893ccfSSadaf Ebrahimi const VkRenderPassCreateInfo* pCreateInfo,
3770*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3771*b7893ccfSSadaf Ebrahimi VkRenderPass* pRenderPass) {
3772*b7893ccfSSadaf Ebrahimi bool skip = false;
3773*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateRenderPass", "pCreateInfo", "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, true, "VUID-vkCreateRenderPass-pCreateInfo-parameter", "VUID-VkRenderPassCreateInfo-sType-sType");
3774*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3775*b7893ccfSSadaf Ebrahimi {
3776*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkRenderPassCreateInfo[] = { VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO };
3777*b7893ccfSSadaf Ebrahimi
3778*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateRenderPass", "pCreateInfo->pNext", "VkRenderPassFragmentDensityMapCreateInfoEXT, VkRenderPassInputAttachmentAspectCreateInfo, VkRenderPassMultiviewCreateInfo", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkRenderPassCreateInfo), allowed_structs_VkRenderPassCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkRenderPassCreateInfo-pNext-pNext");
3779*b7893ccfSSadaf Ebrahimi
3780*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", "pCreateInfo->attachmentCount", "pCreateInfo->pAttachments", pCreateInfo->attachmentCount, &pCreateInfo->pAttachments, false, true, kVUIDUndefined, "VUID-VkRenderPassCreateInfo-pAttachments-parameter");
3781*b7893ccfSSadaf Ebrahimi
3782*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pAttachments != NULL)
3783*b7893ccfSSadaf Ebrahimi {
3784*b7893ccfSSadaf Ebrahimi for (uint32_t attachmentIndex = 0; attachmentIndex < pCreateInfo->attachmentCount; ++attachmentIndex)
3785*b7893ccfSSadaf Ebrahimi {
3786*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].flags", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentDescriptionFlagBits", AllVkAttachmentDescriptionFlagBits, pCreateInfo->pAttachments[attachmentIndex].flags, kOptionalFlags, "VUID-VkAttachmentDescription-flags-parameter");
3787*b7893ccfSSadaf Ebrahimi
3788*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].format", ParameterName::IndexVector{ attachmentIndex }), "VkFormat", AllVkFormatEnums, pCreateInfo->pAttachments[attachmentIndex].format, "VUID-VkAttachmentDescription-format-parameter");
3789*b7893ccfSSadaf Ebrahimi
3790*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].samples", ParameterName::IndexVector{ attachmentIndex }), "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pCreateInfo->pAttachments[attachmentIndex].samples, kRequiredSingleBit, "VUID-VkAttachmentDescription-samples-parameter", "VUID-VkAttachmentDescription-samples-parameter");
3791*b7893ccfSSadaf Ebrahimi
3792*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].loadOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentLoadOp", AllVkAttachmentLoadOpEnums, pCreateInfo->pAttachments[attachmentIndex].loadOp, "VUID-VkAttachmentDescription-loadOp-parameter");
3793*b7893ccfSSadaf Ebrahimi
3794*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].storeOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentStoreOp", AllVkAttachmentStoreOpEnums, pCreateInfo->pAttachments[attachmentIndex].storeOp, "VUID-VkAttachmentDescription-storeOp-parameter");
3795*b7893ccfSSadaf Ebrahimi
3796*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].stencilLoadOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentLoadOp", AllVkAttachmentLoadOpEnums, pCreateInfo->pAttachments[attachmentIndex].stencilLoadOp, "VUID-VkAttachmentDescription-stencilLoadOp-parameter");
3797*b7893ccfSSadaf Ebrahimi
3798*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].stencilStoreOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentStoreOp", AllVkAttachmentStoreOpEnums, pCreateInfo->pAttachments[attachmentIndex].stencilStoreOp, "VUID-VkAttachmentDescription-stencilStoreOp-parameter");
3799*b7893ccfSSadaf Ebrahimi
3800*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].initialLayout", ParameterName::IndexVector{ attachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pAttachments[attachmentIndex].initialLayout, "VUID-VkAttachmentDescription-initialLayout-parameter");
3801*b7893ccfSSadaf Ebrahimi
3802*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pAttachments[%i].finalLayout", ParameterName::IndexVector{ attachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pAttachments[attachmentIndex].finalLayout, "VUID-VkAttachmentDescription-finalLayout-parameter");
3803*b7893ccfSSadaf Ebrahimi }
3804*b7893ccfSSadaf Ebrahimi }
3805*b7893ccfSSadaf Ebrahimi
3806*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", "pCreateInfo->subpassCount", "pCreateInfo->pSubpasses", pCreateInfo->subpassCount, &pCreateInfo->pSubpasses, true, true, "VUID-VkRenderPassCreateInfo-subpassCount-arraylength", "VUID-VkRenderPassCreateInfo-pSubpasses-parameter");
3807*b7893ccfSSadaf Ebrahimi
3808*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses != NULL)
3809*b7893ccfSSadaf Ebrahimi {
3810*b7893ccfSSadaf Ebrahimi for (uint32_t subpassIndex = 0; subpassIndex < pCreateInfo->subpassCount; ++subpassIndex)
3811*b7893ccfSSadaf Ebrahimi {
3812*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].flags", ParameterName::IndexVector{ subpassIndex }), "VkSubpassDescriptionFlagBits", AllVkSubpassDescriptionFlagBits, pCreateInfo->pSubpasses[subpassIndex].flags, kOptionalFlags, "VUID-VkSubpassDescription-flags-parameter");
3813*b7893ccfSSadaf Ebrahimi
3814*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].pipelineBindPoint", ParameterName::IndexVector{ subpassIndex }), "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pCreateInfo->pSubpasses[subpassIndex].pipelineBindPoint, "VUID-VkSubpassDescription-pipelineBindPoint-parameter");
3815*b7893ccfSSadaf Ebrahimi
3816*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].inputAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pInputAttachments", ParameterName::IndexVector{ subpassIndex }), pCreateInfo->pSubpasses[subpassIndex].inputAttachmentCount, &pCreateInfo->pSubpasses[subpassIndex].pInputAttachments, false, true, kVUIDUndefined, "VUID-VkSubpassDescription-pInputAttachments-parameter");
3817*b7893ccfSSadaf Ebrahimi
3818*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pInputAttachments != NULL)
3819*b7893ccfSSadaf Ebrahimi {
3820*b7893ccfSSadaf Ebrahimi for (uint32_t inputAttachmentIndex = 0; inputAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].inputAttachmentCount; ++inputAttachmentIndex)
3821*b7893ccfSSadaf Ebrahimi {
3822*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].pInputAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, inputAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pInputAttachments[inputAttachmentIndex].layout, "VUID-VkAttachmentReference-layout-parameter");
3823*b7893ccfSSadaf Ebrahimi }
3824*b7893ccfSSadaf Ebrahimi }
3825*b7893ccfSSadaf Ebrahimi
3826*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].colorAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pColorAttachments", ParameterName::IndexVector{ subpassIndex }), pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount, &pCreateInfo->pSubpasses[subpassIndex].pColorAttachments, false, true, kVUIDUndefined, "VUID-VkSubpassDescription-pColorAttachments-parameter");
3827*b7893ccfSSadaf Ebrahimi
3828*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pColorAttachments != NULL)
3829*b7893ccfSSadaf Ebrahimi {
3830*b7893ccfSSadaf Ebrahimi for (uint32_t colorAttachmentIndex = 0; colorAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount; ++colorAttachmentIndex)
3831*b7893ccfSSadaf Ebrahimi {
3832*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].pColorAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, colorAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pColorAttachments[colorAttachmentIndex].layout, "VUID-VkAttachmentReference-layout-parameter");
3833*b7893ccfSSadaf Ebrahimi }
3834*b7893ccfSSadaf Ebrahimi }
3835*b7893ccfSSadaf Ebrahimi
3836*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pResolveAttachments != NULL)
3837*b7893ccfSSadaf Ebrahimi {
3838*b7893ccfSSadaf Ebrahimi for (uint32_t colorAttachmentIndex = 0; colorAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount; ++colorAttachmentIndex)
3839*b7893ccfSSadaf Ebrahimi {
3840*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].pResolveAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, colorAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pResolveAttachments[colorAttachmentIndex].layout, "VUID-VkAttachmentReference-layout-parameter");
3841*b7893ccfSSadaf Ebrahimi }
3842*b7893ccfSSadaf Ebrahimi }
3843*b7893ccfSSadaf Ebrahimi
3844*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pDepthStencilAttachment != NULL)
3845*b7893ccfSSadaf Ebrahimi {
3846*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].pDepthStencilAttachment->layout", ParameterName::IndexVector{ subpassIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pDepthStencilAttachment->layout, "VUID-VkAttachmentReference-layout-parameter");
3847*b7893ccfSSadaf Ebrahimi }
3848*b7893ccfSSadaf Ebrahimi
3849*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", ParameterName("pCreateInfo->pSubpasses[%i].preserveAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pPreserveAttachments", ParameterName::IndexVector{ subpassIndex }), pCreateInfo->pSubpasses[subpassIndex].preserveAttachmentCount, &pCreateInfo->pSubpasses[subpassIndex].pPreserveAttachments, false, true, kVUIDUndefined, "VUID-VkSubpassDescription-pPreserveAttachments-parameter");
3850*b7893ccfSSadaf Ebrahimi }
3851*b7893ccfSSadaf Ebrahimi }
3852*b7893ccfSSadaf Ebrahimi
3853*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass", "pCreateInfo->dependencyCount", "pCreateInfo->pDependencies", pCreateInfo->dependencyCount, &pCreateInfo->pDependencies, false, true, kVUIDUndefined, "VUID-VkRenderPassCreateInfo-pDependencies-parameter");
3854*b7893ccfSSadaf Ebrahimi
3855*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pDependencies != NULL)
3856*b7893ccfSSadaf Ebrahimi {
3857*b7893ccfSSadaf Ebrahimi for (uint32_t dependencyIndex = 0; dependencyIndex < pCreateInfo->dependencyCount; ++dependencyIndex)
3858*b7893ccfSSadaf Ebrahimi {
3859*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pDependencies[%i].srcStageMask", ParameterName::IndexVector{ dependencyIndex }), "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pCreateInfo->pDependencies[dependencyIndex].srcStageMask, kRequiredFlags, "VUID-VkSubpassDependency-srcStageMask-parameter", "VUID-VkSubpassDependency-srcStageMask-requiredbitmask");
3860*b7893ccfSSadaf Ebrahimi
3861*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pDependencies[%i].dstStageMask", ParameterName::IndexVector{ dependencyIndex }), "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pCreateInfo->pDependencies[dependencyIndex].dstStageMask, kRequiredFlags, "VUID-VkSubpassDependency-dstStageMask-parameter", "VUID-VkSubpassDependency-dstStageMask-requiredbitmask");
3862*b7893ccfSSadaf Ebrahimi
3863*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pDependencies[%i].srcAccessMask", ParameterName::IndexVector{ dependencyIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pCreateInfo->pDependencies[dependencyIndex].srcAccessMask, kOptionalFlags, "VUID-VkSubpassDependency-srcAccessMask-parameter");
3864*b7893ccfSSadaf Ebrahimi
3865*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pDependencies[%i].dstAccessMask", ParameterName::IndexVector{ dependencyIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pCreateInfo->pDependencies[dependencyIndex].dstAccessMask, kOptionalFlags, "VUID-VkSubpassDependency-dstAccessMask-parameter");
3866*b7893ccfSSadaf Ebrahimi
3867*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass", ParameterName("pCreateInfo->pDependencies[%i].dependencyFlags", ParameterName::IndexVector{ dependencyIndex }), "VkDependencyFlagBits", AllVkDependencyFlagBits, pCreateInfo->pDependencies[dependencyIndex].dependencyFlags, kOptionalFlags, "VUID-VkSubpassDependency-dependencyFlags-parameter");
3868*b7893ccfSSadaf Ebrahimi }
3869*b7893ccfSSadaf Ebrahimi }
3870*b7893ccfSSadaf Ebrahimi }
3871*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3872*b7893ccfSSadaf Ebrahimi {
3873*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3874*b7893ccfSSadaf Ebrahimi
3875*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3876*b7893ccfSSadaf Ebrahimi
3877*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3878*b7893ccfSSadaf Ebrahimi
3879*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3880*b7893ccfSSadaf Ebrahimi {
3881*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3882*b7893ccfSSadaf Ebrahimi
3883*b7893ccfSSadaf Ebrahimi }
3884*b7893ccfSSadaf Ebrahimi
3885*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3886*b7893ccfSSadaf Ebrahimi {
3887*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3888*b7893ccfSSadaf Ebrahimi
3889*b7893ccfSSadaf Ebrahimi }
3890*b7893ccfSSadaf Ebrahimi }
3891*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass", "pRenderPass", pRenderPass, "VUID-vkCreateRenderPass-pRenderPass-parameter");
3892*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
3893*b7893ccfSSadaf Ebrahimi return skip;
3894*b7893ccfSSadaf Ebrahimi }
3895*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)3896*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyRenderPass(
3897*b7893ccfSSadaf Ebrahimi VkDevice device,
3898*b7893ccfSSadaf Ebrahimi VkRenderPass renderPass,
3899*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3900*b7893ccfSSadaf Ebrahimi bool skip = false;
3901*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3902*b7893ccfSSadaf Ebrahimi {
3903*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyRenderPass", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3904*b7893ccfSSadaf Ebrahimi
3905*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyRenderPass", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3906*b7893ccfSSadaf Ebrahimi
3907*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyRenderPass", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3908*b7893ccfSSadaf Ebrahimi
3909*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3910*b7893ccfSSadaf Ebrahimi {
3911*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyRenderPass", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3912*b7893ccfSSadaf Ebrahimi
3913*b7893ccfSSadaf Ebrahimi }
3914*b7893ccfSSadaf Ebrahimi
3915*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3916*b7893ccfSSadaf Ebrahimi {
3917*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyRenderPass", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3918*b7893ccfSSadaf Ebrahimi
3919*b7893ccfSSadaf Ebrahimi }
3920*b7893ccfSSadaf Ebrahimi }
3921*b7893ccfSSadaf Ebrahimi return skip;
3922*b7893ccfSSadaf Ebrahimi }
3923*b7893ccfSSadaf Ebrahimi
PreCallValidateGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)3924*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetRenderAreaGranularity(
3925*b7893ccfSSadaf Ebrahimi VkDevice device,
3926*b7893ccfSSadaf Ebrahimi VkRenderPass renderPass,
3927*b7893ccfSSadaf Ebrahimi VkExtent2D* pGranularity) {
3928*b7893ccfSSadaf Ebrahimi bool skip = false;
3929*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetRenderAreaGranularity", "renderPass", renderPass);
3930*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetRenderAreaGranularity", "pGranularity", pGranularity, "VUID-vkGetRenderAreaGranularity-pGranularity-parameter");
3931*b7893ccfSSadaf Ebrahimi return skip;
3932*b7893ccfSSadaf Ebrahimi }
3933*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)3934*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateCommandPool(
3935*b7893ccfSSadaf Ebrahimi VkDevice device,
3936*b7893ccfSSadaf Ebrahimi const VkCommandPoolCreateInfo* pCreateInfo,
3937*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3938*b7893ccfSSadaf Ebrahimi VkCommandPool* pCommandPool) {
3939*b7893ccfSSadaf Ebrahimi bool skip = false;
3940*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateCommandPool", "pCreateInfo", "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, true, "VUID-vkCreateCommandPool-pCreateInfo-parameter", "VUID-VkCommandPoolCreateInfo-sType-sType");
3941*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
3942*b7893ccfSSadaf Ebrahimi {
3943*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateCommandPool", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCommandPoolCreateInfo-pNext-pNext");
3944*b7893ccfSSadaf Ebrahimi
3945*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateCommandPool", "pCreateInfo->flags", "VkCommandPoolCreateFlagBits", AllVkCommandPoolCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkCommandPoolCreateInfo-flags-parameter");
3946*b7893ccfSSadaf Ebrahimi }
3947*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3948*b7893ccfSSadaf Ebrahimi {
3949*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3950*b7893ccfSSadaf Ebrahimi
3951*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3952*b7893ccfSSadaf Ebrahimi
3953*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3954*b7893ccfSSadaf Ebrahimi
3955*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3956*b7893ccfSSadaf Ebrahimi {
3957*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3958*b7893ccfSSadaf Ebrahimi
3959*b7893ccfSSadaf Ebrahimi }
3960*b7893ccfSSadaf Ebrahimi
3961*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3962*b7893ccfSSadaf Ebrahimi {
3963*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3964*b7893ccfSSadaf Ebrahimi
3965*b7893ccfSSadaf Ebrahimi }
3966*b7893ccfSSadaf Ebrahimi }
3967*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateCommandPool", "pCommandPool", pCommandPool, "VUID-vkCreateCommandPool-pCommandPool-parameter");
3968*b7893ccfSSadaf Ebrahimi return skip;
3969*b7893ccfSSadaf Ebrahimi }
3970*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)3971*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyCommandPool(
3972*b7893ccfSSadaf Ebrahimi VkDevice device,
3973*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
3974*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
3975*b7893ccfSSadaf Ebrahimi bool skip = false;
3976*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
3977*b7893ccfSSadaf Ebrahimi {
3978*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyCommandPool", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
3979*b7893ccfSSadaf Ebrahimi
3980*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyCommandPool", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
3981*b7893ccfSSadaf Ebrahimi
3982*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyCommandPool", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
3983*b7893ccfSSadaf Ebrahimi
3984*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
3985*b7893ccfSSadaf Ebrahimi {
3986*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyCommandPool", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3987*b7893ccfSSadaf Ebrahimi
3988*b7893ccfSSadaf Ebrahimi }
3989*b7893ccfSSadaf Ebrahimi
3990*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
3991*b7893ccfSSadaf Ebrahimi {
3992*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyCommandPool", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
3993*b7893ccfSSadaf Ebrahimi
3994*b7893ccfSSadaf Ebrahimi }
3995*b7893ccfSSadaf Ebrahimi }
3996*b7893ccfSSadaf Ebrahimi return skip;
3997*b7893ccfSSadaf Ebrahimi }
3998*b7893ccfSSadaf Ebrahimi
PreCallValidateResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)3999*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetCommandPool(
4000*b7893ccfSSadaf Ebrahimi VkDevice device,
4001*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
4002*b7893ccfSSadaf Ebrahimi VkCommandPoolResetFlags flags) {
4003*b7893ccfSSadaf Ebrahimi bool skip = false;
4004*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkResetCommandPool", "commandPool", commandPool);
4005*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkResetCommandPool", "flags", "VkCommandPoolResetFlagBits", AllVkCommandPoolResetFlagBits, flags, kOptionalFlags, "VUID-vkResetCommandPool-flags-parameter");
4006*b7893ccfSSadaf Ebrahimi return skip;
4007*b7893ccfSSadaf Ebrahimi }
4008*b7893ccfSSadaf Ebrahimi
PreCallValidateAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)4009*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAllocateCommandBuffers(
4010*b7893ccfSSadaf Ebrahimi VkDevice device,
4011*b7893ccfSSadaf Ebrahimi const VkCommandBufferAllocateInfo* pAllocateInfo,
4012*b7893ccfSSadaf Ebrahimi VkCommandBuffer* pCommandBuffers) {
4013*b7893ccfSSadaf Ebrahimi bool skip = false;
4014*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkAllocateCommandBuffers", "pAllocateInfo", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO", pAllocateInfo, VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, true, "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter", "VUID-VkCommandBufferAllocateInfo-sType-sType");
4015*b7893ccfSSadaf Ebrahimi if (pAllocateInfo != NULL)
4016*b7893ccfSSadaf Ebrahimi {
4017*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkAllocateCommandBuffers", "pAllocateInfo->pNext", NULL, pAllocateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCommandBufferAllocateInfo-pNext-pNext");
4018*b7893ccfSSadaf Ebrahimi
4019*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAllocateCommandBuffers", "pAllocateInfo->commandPool", pAllocateInfo->commandPool);
4020*b7893ccfSSadaf Ebrahimi
4021*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkAllocateCommandBuffers", "pAllocateInfo->level", "VkCommandBufferLevel", AllVkCommandBufferLevelEnums, pAllocateInfo->level, "VUID-VkCommandBufferAllocateInfo-level-parameter");
4022*b7893ccfSSadaf Ebrahimi }
4023*b7893ccfSSadaf Ebrahimi if (pAllocateInfo != NULL) {
4024*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkAllocateCommandBuffers", "pAllocateInfo->commandBufferCount", "pCommandBuffers", pAllocateInfo->commandBufferCount, &pCommandBuffers, true, true, kVUIDUndefined, "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter");
4025*b7893ccfSSadaf Ebrahimi }
4026*b7893ccfSSadaf Ebrahimi return skip;
4027*b7893ccfSSadaf Ebrahimi }
4028*b7893ccfSSadaf Ebrahimi
PreCallValidateFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)4029*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateFreeCommandBuffers(
4030*b7893ccfSSadaf Ebrahimi VkDevice device,
4031*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
4032*b7893ccfSSadaf Ebrahimi uint32_t commandBufferCount,
4033*b7893ccfSSadaf Ebrahimi const VkCommandBuffer* pCommandBuffers) {
4034*b7893ccfSSadaf Ebrahimi bool skip = false;
4035*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkFreeCommandBuffers", "commandPool", commandPool);
4036*b7893ccfSSadaf Ebrahimi return skip;
4037*b7893ccfSSadaf Ebrahimi }
4038*b7893ccfSSadaf Ebrahimi
PreCallValidateBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)4039*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBeginCommandBuffer(
4040*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4041*b7893ccfSSadaf Ebrahimi const VkCommandBufferBeginInfo* pBeginInfo) {
4042*b7893ccfSSadaf Ebrahimi bool skip = false;
4043*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkBeginCommandBuffer", "pBeginInfo", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", pBeginInfo, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, true, "VUID-vkBeginCommandBuffer-pBeginInfo-parameter", "VUID-VkCommandBufferBeginInfo-sType-sType");
4044*b7893ccfSSadaf Ebrahimi if (pBeginInfo != NULL)
4045*b7893ccfSSadaf Ebrahimi {
4046*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkCommandBufferBeginInfo[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO };
4047*b7893ccfSSadaf Ebrahimi
4048*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBeginCommandBuffer", "pBeginInfo->pNext", "VkDeviceGroupCommandBufferBeginInfo", pBeginInfo->pNext, ARRAY_SIZE(allowed_structs_VkCommandBufferBeginInfo), allowed_structs_VkCommandBufferBeginInfo, GeneratedVulkanHeaderVersion, "VUID-VkCommandBufferBeginInfo-pNext-pNext");
4049*b7893ccfSSadaf Ebrahimi
4050*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkBeginCommandBuffer", "pBeginInfo->flags", "VkCommandBufferUsageFlagBits", AllVkCommandBufferUsageFlagBits, pBeginInfo->flags, kOptionalFlags, "VUID-VkCommandBufferBeginInfo-flags-parameter");
4051*b7893ccfSSadaf Ebrahimi }
4052*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateBeginCommandBuffer(commandBuffer, pBeginInfo);
4053*b7893ccfSSadaf Ebrahimi return skip;
4054*b7893ccfSSadaf Ebrahimi }
4055*b7893ccfSSadaf Ebrahimi
PreCallValidateEndCommandBuffer(VkCommandBuffer commandBuffer)4056*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateEndCommandBuffer(
4057*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer) {
4058*b7893ccfSSadaf Ebrahimi bool skip = false;
4059*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4060*b7893ccfSSadaf Ebrahimi return skip;
4061*b7893ccfSSadaf Ebrahimi }
4062*b7893ccfSSadaf Ebrahimi
PreCallValidateResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)4063*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetCommandBuffer(
4064*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4065*b7893ccfSSadaf Ebrahimi VkCommandBufferResetFlags flags) {
4066*b7893ccfSSadaf Ebrahimi bool skip = false;
4067*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkResetCommandBuffer", "flags", "VkCommandBufferResetFlagBits", AllVkCommandBufferResetFlagBits, flags, kOptionalFlags, "VUID-vkResetCommandBuffer-flags-parameter");
4068*b7893ccfSSadaf Ebrahimi return skip;
4069*b7893ccfSSadaf Ebrahimi }
4070*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)4071*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindPipeline(
4072*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4073*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
4074*b7893ccfSSadaf Ebrahimi VkPipeline pipeline) {
4075*b7893ccfSSadaf Ebrahimi bool skip = false;
4076*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBindPipeline", "pipelineBindPoint", "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pipelineBindPoint, "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter");
4077*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBindPipeline", "pipeline", pipeline);
4078*b7893ccfSSadaf Ebrahimi return skip;
4079*b7893ccfSSadaf Ebrahimi }
4080*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)4081*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetViewport(
4082*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4083*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
4084*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
4085*b7893ccfSSadaf Ebrahimi const VkViewport* pViewports) {
4086*b7893ccfSSadaf Ebrahimi bool skip = false;
4087*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetViewport", "viewportCount", "pViewports", viewportCount, &pViewports, true, true, "VUID-vkCmdSetViewport-viewportCount-arraylength", "VUID-vkCmdSetViewport-pViewports-parameter");
4088*b7893ccfSSadaf Ebrahimi if (pViewports != NULL)
4089*b7893ccfSSadaf Ebrahimi {
4090*b7893ccfSSadaf Ebrahimi for (uint32_t viewportIndex = 0; viewportIndex < viewportCount; ++viewportIndex)
4091*b7893ccfSSadaf Ebrahimi {
4092*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4093*b7893ccfSSadaf Ebrahimi }
4094*b7893ccfSSadaf Ebrahimi }
4095*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
4096*b7893ccfSSadaf Ebrahimi return skip;
4097*b7893ccfSSadaf Ebrahimi }
4098*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)4099*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetScissor(
4100*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4101*b7893ccfSSadaf Ebrahimi uint32_t firstScissor,
4102*b7893ccfSSadaf Ebrahimi uint32_t scissorCount,
4103*b7893ccfSSadaf Ebrahimi const VkRect2D* pScissors) {
4104*b7893ccfSSadaf Ebrahimi bool skip = false;
4105*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetScissor", "scissorCount", "pScissors", scissorCount, &pScissors, true, true, "VUID-vkCmdSetScissor-scissorCount-arraylength", "VUID-vkCmdSetScissor-pScissors-parameter");
4106*b7893ccfSSadaf Ebrahimi if (pScissors != NULL)
4107*b7893ccfSSadaf Ebrahimi {
4108*b7893ccfSSadaf Ebrahimi for (uint32_t scissorIndex = 0; scissorIndex < scissorCount; ++scissorIndex)
4109*b7893ccfSSadaf Ebrahimi {
4110*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4111*b7893ccfSSadaf Ebrahimi
4112*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4113*b7893ccfSSadaf Ebrahimi }
4114*b7893ccfSSadaf Ebrahimi }
4115*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
4116*b7893ccfSSadaf Ebrahimi return skip;
4117*b7893ccfSSadaf Ebrahimi }
4118*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)4119*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetLineWidth(
4120*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4121*b7893ccfSSadaf Ebrahimi float lineWidth) {
4122*b7893ccfSSadaf Ebrahimi bool skip = false;
4123*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4124*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetLineWidth(commandBuffer, lineWidth);
4125*b7893ccfSSadaf Ebrahimi return skip;
4126*b7893ccfSSadaf Ebrahimi }
4127*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)4128*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetDepthBias(
4129*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4130*b7893ccfSSadaf Ebrahimi float depthBiasConstantFactor,
4131*b7893ccfSSadaf Ebrahimi float depthBiasClamp,
4132*b7893ccfSSadaf Ebrahimi float depthBiasSlopeFactor) {
4133*b7893ccfSSadaf Ebrahimi bool skip = false;
4134*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4135*b7893ccfSSadaf Ebrahimi return skip;
4136*b7893ccfSSadaf Ebrahimi }
4137*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])4138*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetBlendConstants(
4139*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4140*b7893ccfSSadaf Ebrahimi const float blendConstants[4]) {
4141*b7893ccfSSadaf Ebrahimi bool skip = false;
4142*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdSetBlendConstants", "blendConstants", blendConstants, kVUIDUndefined);
4143*b7893ccfSSadaf Ebrahimi return skip;
4144*b7893ccfSSadaf Ebrahimi }
4145*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)4146*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetDepthBounds(
4147*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4148*b7893ccfSSadaf Ebrahimi float minDepthBounds,
4149*b7893ccfSSadaf Ebrahimi float maxDepthBounds) {
4150*b7893ccfSSadaf Ebrahimi bool skip = false;
4151*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4152*b7893ccfSSadaf Ebrahimi return skip;
4153*b7893ccfSSadaf Ebrahimi }
4154*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)4155*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetStencilCompareMask(
4156*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4157*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
4158*b7893ccfSSadaf Ebrahimi uint32_t compareMask) {
4159*b7893ccfSSadaf Ebrahimi bool skip = false;
4160*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdSetStencilCompareMask", "faceMask", "VkStencilFaceFlagBits", AllVkStencilFaceFlagBits, faceMask, kRequiredFlags, "VUID-vkCmdSetStencilCompareMask-faceMask-parameter", "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask");
4161*b7893ccfSSadaf Ebrahimi return skip;
4162*b7893ccfSSadaf Ebrahimi }
4163*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)4164*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetStencilWriteMask(
4165*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4166*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
4167*b7893ccfSSadaf Ebrahimi uint32_t writeMask) {
4168*b7893ccfSSadaf Ebrahimi bool skip = false;
4169*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdSetStencilWriteMask", "faceMask", "VkStencilFaceFlagBits", AllVkStencilFaceFlagBits, faceMask, kRequiredFlags, "VUID-vkCmdSetStencilWriteMask-faceMask-parameter", "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask");
4170*b7893ccfSSadaf Ebrahimi return skip;
4171*b7893ccfSSadaf Ebrahimi }
4172*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)4173*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetStencilReference(
4174*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4175*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
4176*b7893ccfSSadaf Ebrahimi uint32_t reference) {
4177*b7893ccfSSadaf Ebrahimi bool skip = false;
4178*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdSetStencilReference", "faceMask", "VkStencilFaceFlagBits", AllVkStencilFaceFlagBits, faceMask, kRequiredFlags, "VUID-vkCmdSetStencilReference-faceMask-parameter", "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask");
4179*b7893ccfSSadaf Ebrahimi return skip;
4180*b7893ccfSSadaf Ebrahimi }
4181*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)4182*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindDescriptorSets(
4183*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4184*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
4185*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
4186*b7893ccfSSadaf Ebrahimi uint32_t firstSet,
4187*b7893ccfSSadaf Ebrahimi uint32_t descriptorSetCount,
4188*b7893ccfSSadaf Ebrahimi const VkDescriptorSet* pDescriptorSets,
4189*b7893ccfSSadaf Ebrahimi uint32_t dynamicOffsetCount,
4190*b7893ccfSSadaf Ebrahimi const uint32_t* pDynamicOffsets) {
4191*b7893ccfSSadaf Ebrahimi bool skip = false;
4192*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBindDescriptorSets", "pipelineBindPoint", "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pipelineBindPoint, "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter");
4193*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBindDescriptorSets", "layout", layout);
4194*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdBindDescriptorSets", "descriptorSetCount", "pDescriptorSets", descriptorSetCount, pDescriptorSets, true, true);
4195*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBindDescriptorSets", "dynamicOffsetCount", "pDynamicOffsets", dynamicOffsetCount, &pDynamicOffsets, false, true, kVUIDUndefined, "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter");
4196*b7893ccfSSadaf Ebrahimi return skip;
4197*b7893ccfSSadaf Ebrahimi }
4198*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)4199*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindIndexBuffer(
4200*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4201*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4202*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
4203*b7893ccfSSadaf Ebrahimi VkIndexType indexType) {
4204*b7893ccfSSadaf Ebrahimi bool skip = false;
4205*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBindIndexBuffer", "buffer", buffer);
4206*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBindIndexBuffer", "indexType", "VkIndexType", AllVkIndexTypeEnums, indexType, "VUID-vkCmdBindIndexBuffer-indexType-parameter");
4207*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
4208*b7893ccfSSadaf Ebrahimi return skip;
4209*b7893ccfSSadaf Ebrahimi }
4210*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)4211*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindVertexBuffers(
4212*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4213*b7893ccfSSadaf Ebrahimi uint32_t firstBinding,
4214*b7893ccfSSadaf Ebrahimi uint32_t bindingCount,
4215*b7893ccfSSadaf Ebrahimi const VkBuffer* pBuffers,
4216*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pOffsets) {
4217*b7893ccfSSadaf Ebrahimi bool skip = false;
4218*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdBindVertexBuffers", "bindingCount", "pBuffers", bindingCount, pBuffers, true, true);
4219*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBindVertexBuffers", "bindingCount", "pOffsets", bindingCount, &pOffsets, true, true, "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength", "VUID-vkCmdBindVertexBuffers-pOffsets-parameter");
4220*b7893ccfSSadaf Ebrahimi return skip;
4221*b7893ccfSSadaf Ebrahimi }
4222*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)4223*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDraw(
4224*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4225*b7893ccfSSadaf Ebrahimi uint32_t vertexCount,
4226*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
4227*b7893ccfSSadaf Ebrahimi uint32_t firstVertex,
4228*b7893ccfSSadaf Ebrahimi uint32_t firstInstance) {
4229*b7893ccfSSadaf Ebrahimi bool skip = false;
4230*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4231*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
4232*b7893ccfSSadaf Ebrahimi return skip;
4233*b7893ccfSSadaf Ebrahimi }
4234*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)4235*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndexed(
4236*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4237*b7893ccfSSadaf Ebrahimi uint32_t indexCount,
4238*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
4239*b7893ccfSSadaf Ebrahimi uint32_t firstIndex,
4240*b7893ccfSSadaf Ebrahimi int32_t vertexOffset,
4241*b7893ccfSSadaf Ebrahimi uint32_t firstInstance) {
4242*b7893ccfSSadaf Ebrahimi bool skip = false;
4243*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4244*b7893ccfSSadaf Ebrahimi return skip;
4245*b7893ccfSSadaf Ebrahimi }
4246*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)4247*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndirect(
4248*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4249*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4250*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
4251*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
4252*b7893ccfSSadaf Ebrahimi uint32_t stride) {
4253*b7893ccfSSadaf Ebrahimi bool skip = false;
4254*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirect", "buffer", buffer);
4255*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
4256*b7893ccfSSadaf Ebrahimi return skip;
4257*b7893ccfSSadaf Ebrahimi }
4258*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)4259*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndexedIndirect(
4260*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4261*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4262*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
4263*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
4264*b7893ccfSSadaf Ebrahimi uint32_t stride) {
4265*b7893ccfSSadaf Ebrahimi bool skip = false;
4266*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndexedIndirect", "buffer", buffer);
4267*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
4268*b7893ccfSSadaf Ebrahimi return skip;
4269*b7893ccfSSadaf Ebrahimi }
4270*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)4271*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDispatch(
4272*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4273*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
4274*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
4275*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ) {
4276*b7893ccfSSadaf Ebrahimi bool skip = false;
4277*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4278*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
4279*b7893ccfSSadaf Ebrahimi return skip;
4280*b7893ccfSSadaf Ebrahimi }
4281*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)4282*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDispatchIndirect(
4283*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4284*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4285*b7893ccfSSadaf Ebrahimi VkDeviceSize offset) {
4286*b7893ccfSSadaf Ebrahimi bool skip = false;
4287*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDispatchIndirect", "buffer", buffer);
4288*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDispatchIndirect(commandBuffer, buffer, offset);
4289*b7893ccfSSadaf Ebrahimi return skip;
4290*b7893ccfSSadaf Ebrahimi }
4291*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)4292*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyBuffer(
4293*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4294*b7893ccfSSadaf Ebrahimi VkBuffer srcBuffer,
4295*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
4296*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4297*b7893ccfSSadaf Ebrahimi const VkBufferCopy* pRegions) {
4298*b7893ccfSSadaf Ebrahimi bool skip = false;
4299*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyBuffer", "srcBuffer", srcBuffer);
4300*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyBuffer", "dstBuffer", dstBuffer);
4301*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdCopyBuffer", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdCopyBuffer-regionCount-arraylength", "VUID-vkCmdCopyBuffer-pRegions-parameter");
4302*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4303*b7893ccfSSadaf Ebrahimi {
4304*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4305*b7893ccfSSadaf Ebrahimi {
4306*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4307*b7893ccfSSadaf Ebrahimi }
4308*b7893ccfSSadaf Ebrahimi }
4309*b7893ccfSSadaf Ebrahimi return skip;
4310*b7893ccfSSadaf Ebrahimi }
4311*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)4312*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyImage(
4313*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4314*b7893ccfSSadaf Ebrahimi VkImage srcImage,
4315*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
4316*b7893ccfSSadaf Ebrahimi VkImage dstImage,
4317*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
4318*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4319*b7893ccfSSadaf Ebrahimi const VkImageCopy* pRegions) {
4320*b7893ccfSSadaf Ebrahimi bool skip = false;
4321*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyImage", "srcImage", srcImage);
4322*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdCopyImage", "srcImageLayout", "VkImageLayout", AllVkImageLayoutEnums, srcImageLayout, "VUID-vkCmdCopyImage-srcImageLayout-parameter");
4323*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyImage", "dstImage", dstImage);
4324*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdCopyImage", "dstImageLayout", "VkImageLayout", AllVkImageLayoutEnums, dstImageLayout, "VUID-vkCmdCopyImage-dstImageLayout-parameter");
4325*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdCopyImage", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdCopyImage-regionCount-arraylength", "VUID-vkCmdCopyImage-pRegions-parameter");
4326*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4327*b7893ccfSSadaf Ebrahimi {
4328*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4329*b7893ccfSSadaf Ebrahimi {
4330*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdCopyImage", ParameterName("pRegions[%i].srcSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].srcSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4331*b7893ccfSSadaf Ebrahimi
4332*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4333*b7893ccfSSadaf Ebrahimi
4334*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdCopyImage", ParameterName("pRegions[%i].dstSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].dstSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4335*b7893ccfSSadaf Ebrahimi
4336*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4337*b7893ccfSSadaf Ebrahimi
4338*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4339*b7893ccfSSadaf Ebrahimi }
4340*b7893ccfSSadaf Ebrahimi }
4341*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
4342*b7893ccfSSadaf Ebrahimi return skip;
4343*b7893ccfSSadaf Ebrahimi }
4344*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)4345*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBlitImage(
4346*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4347*b7893ccfSSadaf Ebrahimi VkImage srcImage,
4348*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
4349*b7893ccfSSadaf Ebrahimi VkImage dstImage,
4350*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
4351*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4352*b7893ccfSSadaf Ebrahimi const VkImageBlit* pRegions,
4353*b7893ccfSSadaf Ebrahimi VkFilter filter) {
4354*b7893ccfSSadaf Ebrahimi bool skip = false;
4355*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBlitImage", "srcImage", srcImage);
4356*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBlitImage", "srcImageLayout", "VkImageLayout", AllVkImageLayoutEnums, srcImageLayout, "VUID-vkCmdBlitImage-srcImageLayout-parameter");
4357*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBlitImage", "dstImage", dstImage);
4358*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBlitImage", "dstImageLayout", "VkImageLayout", AllVkImageLayoutEnums, dstImageLayout, "VUID-vkCmdBlitImage-dstImageLayout-parameter");
4359*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBlitImage", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdBlitImage-regionCount-arraylength", "VUID-vkCmdBlitImage-pRegions-parameter");
4360*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4361*b7893ccfSSadaf Ebrahimi {
4362*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4363*b7893ccfSSadaf Ebrahimi {
4364*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBlitImage", ParameterName("pRegions[%i].srcSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].srcSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4365*b7893ccfSSadaf Ebrahimi
4366*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBlitImage", ParameterName("pRegions[%i].dstSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].dstSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4367*b7893ccfSSadaf Ebrahimi }
4368*b7893ccfSSadaf Ebrahimi }
4369*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBlitImage", "filter", "VkFilter", AllVkFilterEnums, filter, "VUID-vkCmdBlitImage-filter-parameter");
4370*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
4371*b7893ccfSSadaf Ebrahimi return skip;
4372*b7893ccfSSadaf Ebrahimi }
4373*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)4374*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyBufferToImage(
4375*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4376*b7893ccfSSadaf Ebrahimi VkBuffer srcBuffer,
4377*b7893ccfSSadaf Ebrahimi VkImage dstImage,
4378*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
4379*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4380*b7893ccfSSadaf Ebrahimi const VkBufferImageCopy* pRegions) {
4381*b7893ccfSSadaf Ebrahimi bool skip = false;
4382*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyBufferToImage", "srcBuffer", srcBuffer);
4383*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyBufferToImage", "dstImage", dstImage);
4384*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdCopyBufferToImage", "dstImageLayout", "VkImageLayout", AllVkImageLayoutEnums, dstImageLayout, "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter");
4385*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdCopyBufferToImage", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdCopyBufferToImage-regionCount-arraylength", "VUID-vkCmdCopyBufferToImage-pRegions-parameter");
4386*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4387*b7893ccfSSadaf Ebrahimi {
4388*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4389*b7893ccfSSadaf Ebrahimi {
4390*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdCopyBufferToImage", ParameterName("pRegions[%i].imageSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].imageSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4391*b7893ccfSSadaf Ebrahimi
4392*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4393*b7893ccfSSadaf Ebrahimi
4394*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4395*b7893ccfSSadaf Ebrahimi }
4396*b7893ccfSSadaf Ebrahimi }
4397*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
4398*b7893ccfSSadaf Ebrahimi return skip;
4399*b7893ccfSSadaf Ebrahimi }
4400*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)4401*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyImageToBuffer(
4402*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4403*b7893ccfSSadaf Ebrahimi VkImage srcImage,
4404*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
4405*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
4406*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4407*b7893ccfSSadaf Ebrahimi const VkBufferImageCopy* pRegions) {
4408*b7893ccfSSadaf Ebrahimi bool skip = false;
4409*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyImageToBuffer", "srcImage", srcImage);
4410*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdCopyImageToBuffer", "srcImageLayout", "VkImageLayout", AllVkImageLayoutEnums, srcImageLayout, "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter");
4411*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyImageToBuffer", "dstBuffer", dstBuffer);
4412*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdCopyImageToBuffer", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength", "VUID-vkCmdCopyImageToBuffer-pRegions-parameter");
4413*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4414*b7893ccfSSadaf Ebrahimi {
4415*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4416*b7893ccfSSadaf Ebrahimi {
4417*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdCopyImageToBuffer", ParameterName("pRegions[%i].imageSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].imageSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4418*b7893ccfSSadaf Ebrahimi
4419*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4420*b7893ccfSSadaf Ebrahimi
4421*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4422*b7893ccfSSadaf Ebrahimi }
4423*b7893ccfSSadaf Ebrahimi }
4424*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
4425*b7893ccfSSadaf Ebrahimi return skip;
4426*b7893ccfSSadaf Ebrahimi }
4427*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)4428*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdUpdateBuffer(
4429*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4430*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
4431*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
4432*b7893ccfSSadaf Ebrahimi VkDeviceSize dataSize,
4433*b7893ccfSSadaf Ebrahimi const void* pData) {
4434*b7893ccfSSadaf Ebrahimi bool skip = false;
4435*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdUpdateBuffer", "dstBuffer", dstBuffer);
4436*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdUpdateBuffer", "dataSize", "pData", dataSize, &pData, true, true, "VUID-vkCmdUpdateBuffer-dataSize-arraylength", "VUID-vkCmdUpdateBuffer-pData-parameter");
4437*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
4438*b7893ccfSSadaf Ebrahimi return skip;
4439*b7893ccfSSadaf Ebrahimi }
4440*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)4441*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdFillBuffer(
4442*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4443*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
4444*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
4445*b7893ccfSSadaf Ebrahimi VkDeviceSize size,
4446*b7893ccfSSadaf Ebrahimi uint32_t data) {
4447*b7893ccfSSadaf Ebrahimi bool skip = false;
4448*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdFillBuffer", "dstBuffer", dstBuffer);
4449*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
4450*b7893ccfSSadaf Ebrahimi return skip;
4451*b7893ccfSSadaf Ebrahimi }
4452*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)4453*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdClearColorImage(
4454*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4455*b7893ccfSSadaf Ebrahimi VkImage image,
4456*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout,
4457*b7893ccfSSadaf Ebrahimi const VkClearColorValue* pColor,
4458*b7893ccfSSadaf Ebrahimi uint32_t rangeCount,
4459*b7893ccfSSadaf Ebrahimi const VkImageSubresourceRange* pRanges) {
4460*b7893ccfSSadaf Ebrahimi bool skip = false;
4461*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdClearColorImage", "image", image);
4462*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdClearColorImage", "imageLayout", "VkImageLayout", AllVkImageLayoutEnums, imageLayout, "VUID-vkCmdClearColorImage-imageLayout-parameter");
4463*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdClearColorImage", "pColor", pColor, "VUID-vkCmdClearColorImage-pColor-parameter");
4464*b7893ccfSSadaf Ebrahimi if (pColor != NULL)
4465*b7893ccfSSadaf Ebrahimi {
4466*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4467*b7893ccfSSadaf Ebrahimi }
4468*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdClearColorImage", "rangeCount", "pRanges", rangeCount, &pRanges, true, true, "VUID-vkCmdClearColorImage-rangeCount-arraylength", "VUID-vkCmdClearColorImage-pRanges-parameter");
4469*b7893ccfSSadaf Ebrahimi if (pRanges != NULL)
4470*b7893ccfSSadaf Ebrahimi {
4471*b7893ccfSSadaf Ebrahimi for (uint32_t rangeIndex = 0; rangeIndex < rangeCount; ++rangeIndex)
4472*b7893ccfSSadaf Ebrahimi {
4473*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdClearColorImage", ParameterName("pRanges[%i].aspectMask", ParameterName::IndexVector{ rangeIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRanges[rangeIndex].aspectMask, kRequiredFlags, "VUID-VkImageSubresourceRange-aspectMask-parameter", "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask");
4474*b7893ccfSSadaf Ebrahimi }
4475*b7893ccfSSadaf Ebrahimi }
4476*b7893ccfSSadaf Ebrahimi return skip;
4477*b7893ccfSSadaf Ebrahimi }
4478*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)4479*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdClearDepthStencilImage(
4480*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4481*b7893ccfSSadaf Ebrahimi VkImage image,
4482*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout,
4483*b7893ccfSSadaf Ebrahimi const VkClearDepthStencilValue* pDepthStencil,
4484*b7893ccfSSadaf Ebrahimi uint32_t rangeCount,
4485*b7893ccfSSadaf Ebrahimi const VkImageSubresourceRange* pRanges) {
4486*b7893ccfSSadaf Ebrahimi bool skip = false;
4487*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdClearDepthStencilImage", "image", image);
4488*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdClearDepthStencilImage", "imageLayout", "VkImageLayout", AllVkImageLayoutEnums, imageLayout, "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter");
4489*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdClearDepthStencilImage", "pDepthStencil", pDepthStencil, "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter");
4490*b7893ccfSSadaf Ebrahimi if (pDepthStencil != NULL)
4491*b7893ccfSSadaf Ebrahimi {
4492*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4493*b7893ccfSSadaf Ebrahimi }
4494*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdClearDepthStencilImage", "rangeCount", "pRanges", rangeCount, &pRanges, true, true, "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength", "VUID-vkCmdClearDepthStencilImage-pRanges-parameter");
4495*b7893ccfSSadaf Ebrahimi if (pRanges != NULL)
4496*b7893ccfSSadaf Ebrahimi {
4497*b7893ccfSSadaf Ebrahimi for (uint32_t rangeIndex = 0; rangeIndex < rangeCount; ++rangeIndex)
4498*b7893ccfSSadaf Ebrahimi {
4499*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdClearDepthStencilImage", ParameterName("pRanges[%i].aspectMask", ParameterName::IndexVector{ rangeIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRanges[rangeIndex].aspectMask, kRequiredFlags, "VUID-VkImageSubresourceRange-aspectMask-parameter", "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask");
4500*b7893ccfSSadaf Ebrahimi }
4501*b7893ccfSSadaf Ebrahimi }
4502*b7893ccfSSadaf Ebrahimi return skip;
4503*b7893ccfSSadaf Ebrahimi }
4504*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)4505*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdClearAttachments(
4506*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4507*b7893ccfSSadaf Ebrahimi uint32_t attachmentCount,
4508*b7893ccfSSadaf Ebrahimi const VkClearAttachment* pAttachments,
4509*b7893ccfSSadaf Ebrahimi uint32_t rectCount,
4510*b7893ccfSSadaf Ebrahimi const VkClearRect* pRects) {
4511*b7893ccfSSadaf Ebrahimi bool skip = false;
4512*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdClearAttachments", "attachmentCount", "pAttachments", attachmentCount, &pAttachments, true, true, "VUID-vkCmdClearAttachments-attachmentCount-arraylength", "VUID-vkCmdClearAttachments-pAttachments-parameter");
4513*b7893ccfSSadaf Ebrahimi if (pAttachments != NULL)
4514*b7893ccfSSadaf Ebrahimi {
4515*b7893ccfSSadaf Ebrahimi for (uint32_t attachmentIndex = 0; attachmentIndex < attachmentCount; ++attachmentIndex)
4516*b7893ccfSSadaf Ebrahimi {
4517*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdClearAttachments", ParameterName("pAttachments[%i].aspectMask", ParameterName::IndexVector{ attachmentIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pAttachments[attachmentIndex].aspectMask, kRequiredFlags, "VUID-VkClearAttachment-aspectMask-parameter", "VUID-VkClearAttachment-aspectMask-requiredbitmask");
4518*b7893ccfSSadaf Ebrahimi
4519*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4520*b7893ccfSSadaf Ebrahimi
4521*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4522*b7893ccfSSadaf Ebrahimi }
4523*b7893ccfSSadaf Ebrahimi }
4524*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdClearAttachments", "rectCount", "pRects", rectCount, &pRects, true, true, "VUID-vkCmdClearAttachments-rectCount-arraylength", "VUID-vkCmdClearAttachments-pRects-parameter");
4525*b7893ccfSSadaf Ebrahimi if (pRects != NULL)
4526*b7893ccfSSadaf Ebrahimi {
4527*b7893ccfSSadaf Ebrahimi for (uint32_t rectIndex = 0; rectIndex < rectCount; ++rectIndex)
4528*b7893ccfSSadaf Ebrahimi {
4529*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4530*b7893ccfSSadaf Ebrahimi
4531*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4532*b7893ccfSSadaf Ebrahimi }
4533*b7893ccfSSadaf Ebrahimi }
4534*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
4535*b7893ccfSSadaf Ebrahimi return skip;
4536*b7893ccfSSadaf Ebrahimi }
4537*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)4538*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdResolveImage(
4539*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4540*b7893ccfSSadaf Ebrahimi VkImage srcImage,
4541*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
4542*b7893ccfSSadaf Ebrahimi VkImage dstImage,
4543*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
4544*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
4545*b7893ccfSSadaf Ebrahimi const VkImageResolve* pRegions) {
4546*b7893ccfSSadaf Ebrahimi bool skip = false;
4547*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdResolveImage", "srcImage", srcImage);
4548*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdResolveImage", "srcImageLayout", "VkImageLayout", AllVkImageLayoutEnums, srcImageLayout, "VUID-vkCmdResolveImage-srcImageLayout-parameter");
4549*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdResolveImage", "dstImage", dstImage);
4550*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdResolveImage", "dstImageLayout", "VkImageLayout", AllVkImageLayoutEnums, dstImageLayout, "VUID-vkCmdResolveImage-dstImageLayout-parameter");
4551*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdResolveImage", "regionCount", "pRegions", regionCount, &pRegions, true, true, "VUID-vkCmdResolveImage-regionCount-arraylength", "VUID-vkCmdResolveImage-pRegions-parameter");
4552*b7893ccfSSadaf Ebrahimi if (pRegions != NULL)
4553*b7893ccfSSadaf Ebrahimi {
4554*b7893ccfSSadaf Ebrahimi for (uint32_t regionIndex = 0; regionIndex < regionCount; ++regionIndex)
4555*b7893ccfSSadaf Ebrahimi {
4556*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdResolveImage", ParameterName("pRegions[%i].srcSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].srcSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4557*b7893ccfSSadaf Ebrahimi
4558*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4559*b7893ccfSSadaf Ebrahimi
4560*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdResolveImage", ParameterName("pRegions[%i].dstSubresource.aspectMask", ParameterName::IndexVector{ regionIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pRegions[regionIndex].dstSubresource.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceLayers-aspectMask-parameter", "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask");
4561*b7893ccfSSadaf Ebrahimi
4562*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4563*b7893ccfSSadaf Ebrahimi
4564*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4565*b7893ccfSSadaf Ebrahimi }
4566*b7893ccfSSadaf Ebrahimi }
4567*b7893ccfSSadaf Ebrahimi return skip;
4568*b7893ccfSSadaf Ebrahimi }
4569*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)4570*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetEvent(
4571*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4572*b7893ccfSSadaf Ebrahimi VkEvent event,
4573*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags stageMask) {
4574*b7893ccfSSadaf Ebrahimi bool skip = false;
4575*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdSetEvent", "event", event);
4576*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdSetEvent", "stageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, stageMask, kRequiredFlags, "VUID-vkCmdSetEvent-stageMask-parameter", "VUID-vkCmdSetEvent-stageMask-requiredbitmask");
4577*b7893ccfSSadaf Ebrahimi return skip;
4578*b7893ccfSSadaf Ebrahimi }
4579*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)4580*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdResetEvent(
4581*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4582*b7893ccfSSadaf Ebrahimi VkEvent event,
4583*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags stageMask) {
4584*b7893ccfSSadaf Ebrahimi bool skip = false;
4585*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdResetEvent", "event", event);
4586*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdResetEvent", "stageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, stageMask, kRequiredFlags, "VUID-vkCmdResetEvent-stageMask-parameter", "VUID-vkCmdResetEvent-stageMask-requiredbitmask");
4587*b7893ccfSSadaf Ebrahimi return skip;
4588*b7893ccfSSadaf Ebrahimi }
4589*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdWaitEvents(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)4590*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdWaitEvents(
4591*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4592*b7893ccfSSadaf Ebrahimi uint32_t eventCount,
4593*b7893ccfSSadaf Ebrahimi const VkEvent* pEvents,
4594*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags srcStageMask,
4595*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags dstStageMask,
4596*b7893ccfSSadaf Ebrahimi uint32_t memoryBarrierCount,
4597*b7893ccfSSadaf Ebrahimi const VkMemoryBarrier* pMemoryBarriers,
4598*b7893ccfSSadaf Ebrahimi uint32_t bufferMemoryBarrierCount,
4599*b7893ccfSSadaf Ebrahimi const VkBufferMemoryBarrier* pBufferMemoryBarriers,
4600*b7893ccfSSadaf Ebrahimi uint32_t imageMemoryBarrierCount,
4601*b7893ccfSSadaf Ebrahimi const VkImageMemoryBarrier* pImageMemoryBarriers) {
4602*b7893ccfSSadaf Ebrahimi bool skip = false;
4603*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdWaitEvents", "eventCount", "pEvents", eventCount, pEvents, true, true);
4604*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", "srcStageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, srcStageMask, kRequiredFlags, "VUID-vkCmdWaitEvents-srcStageMask-parameter", "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask");
4605*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", "dstStageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, dstStageMask, kRequiredFlags, "VUID-vkCmdWaitEvents-dstStageMask-parameter", "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask");
4606*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdWaitEvents", "memoryBarrierCount", "pMemoryBarriers", "VK_STRUCTURE_TYPE_MEMORY_BARRIER", memoryBarrierCount, pMemoryBarriers, VK_STRUCTURE_TYPE_MEMORY_BARRIER, false, true, "VUID-VkMemoryBarrier-sType-sType", "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter", kVUIDUndefined);
4607*b7893ccfSSadaf Ebrahimi if (pMemoryBarriers != NULL)
4608*b7893ccfSSadaf Ebrahimi {
4609*b7893ccfSSadaf Ebrahimi for (uint32_t memoryBarrierIndex = 0; memoryBarrierIndex < memoryBarrierCount; ++memoryBarrierIndex)
4610*b7893ccfSSadaf Ebrahimi {
4611*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdWaitEvents", ParameterName("pMemoryBarriers[%i].pNext", ParameterName::IndexVector{ memoryBarrierIndex }), NULL, pMemoryBarriers[memoryBarrierIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMemoryBarrier-pNext-pNext");
4612*b7893ccfSSadaf Ebrahimi
4613*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ memoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pMemoryBarriers[memoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkMemoryBarrier-srcAccessMask-parameter");
4614*b7893ccfSSadaf Ebrahimi
4615*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ memoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pMemoryBarriers[memoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkMemoryBarrier-dstAccessMask-parameter");
4616*b7893ccfSSadaf Ebrahimi }
4617*b7893ccfSSadaf Ebrahimi }
4618*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdWaitEvents", "bufferMemoryBarrierCount", "pBufferMemoryBarriers", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", bufferMemoryBarrierCount, pBufferMemoryBarriers, VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, false, true, "VUID-VkBufferMemoryBarrier-sType-sType", "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter", kVUIDUndefined);
4619*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers != NULL)
4620*b7893ccfSSadaf Ebrahimi {
4621*b7893ccfSSadaf Ebrahimi for (uint32_t bufferMemoryBarrierIndex = 0; bufferMemoryBarrierIndex < bufferMemoryBarrierCount; ++bufferMemoryBarrierIndex)
4622*b7893ccfSSadaf Ebrahimi {
4623*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdWaitEvents", ParameterName("pBufferMemoryBarriers[%i].pNext", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), NULL, pBufferMemoryBarriers[bufferMemoryBarrierIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferMemoryBarrier-pNext-pNext");
4624*b7893ccfSSadaf Ebrahimi
4625*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pBufferMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pBufferMemoryBarriers[bufferMemoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter");
4626*b7893ccfSSadaf Ebrahimi
4627*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pBufferMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pBufferMemoryBarriers[bufferMemoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter");
4628*b7893ccfSSadaf Ebrahimi
4629*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdWaitEvents", ParameterName("pBufferMemoryBarriers[%i].buffer", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), pBufferMemoryBarriers[bufferMemoryBarrierIndex].buffer);
4630*b7893ccfSSadaf Ebrahimi }
4631*b7893ccfSSadaf Ebrahimi }
4632*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdWaitEvents", "imageMemoryBarrierCount", "pImageMemoryBarriers", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", imageMemoryBarrierCount, pImageMemoryBarriers, VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, false, true, "VUID-VkImageMemoryBarrier-sType-sType", "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter", kVUIDUndefined);
4633*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers != NULL)
4634*b7893ccfSSadaf Ebrahimi {
4635*b7893ccfSSadaf Ebrahimi for (uint32_t imageMemoryBarrierIndex = 0; imageMemoryBarrierIndex < imageMemoryBarrierCount; ++imageMemoryBarrierIndex)
4636*b7893ccfSSadaf Ebrahimi {
4637*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageMemoryBarrier[] = { VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT };
4638*b7893ccfSSadaf Ebrahimi
4639*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].pNext", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkSampleLocationsInfoEXT", pImageMemoryBarriers[imageMemoryBarrierIndex].pNext, ARRAY_SIZE(allowed_structs_VkImageMemoryBarrier), allowed_structs_VkImageMemoryBarrier, GeneratedVulkanHeaderVersion, "VUID-VkImageMemoryBarrier-pNext-pNext");
4640*b7893ccfSSadaf Ebrahimi
4641*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkImageMemoryBarrier-srcAccessMask-parameter");
4642*b7893ccfSSadaf Ebrahimi
4643*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkImageMemoryBarrier-dstAccessMask-parameter");
4644*b7893ccfSSadaf Ebrahimi
4645*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].oldLayout", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageLayout", AllVkImageLayoutEnums, pImageMemoryBarriers[imageMemoryBarrierIndex].oldLayout, "VUID-VkImageMemoryBarrier-oldLayout-parameter");
4646*b7893ccfSSadaf Ebrahimi
4647*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].newLayout", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageLayout", AllVkImageLayoutEnums, pImageMemoryBarriers[imageMemoryBarrierIndex].newLayout, "VUID-VkImageMemoryBarrier-newLayout-parameter");
4648*b7893ccfSSadaf Ebrahimi
4649*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].image", ParameterName::IndexVector{ imageMemoryBarrierIndex }), pImageMemoryBarriers[imageMemoryBarrierIndex].image);
4650*b7893ccfSSadaf Ebrahimi
4651*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWaitEvents", ParameterName("pImageMemoryBarriers[%i].subresourceRange.aspectMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].subresourceRange.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceRange-aspectMask-parameter", "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask");
4652*b7893ccfSSadaf Ebrahimi }
4653*b7893ccfSSadaf Ebrahimi }
4654*b7893ccfSSadaf Ebrahimi return skip;
4655*b7893ccfSSadaf Ebrahimi }
4656*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdPipelineBarrier(VkCommandBuffer commandBuffer,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,VkDependencyFlags dependencyFlags,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)4657*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdPipelineBarrier(
4658*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4659*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags srcStageMask,
4660*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags dstStageMask,
4661*b7893ccfSSadaf Ebrahimi VkDependencyFlags dependencyFlags,
4662*b7893ccfSSadaf Ebrahimi uint32_t memoryBarrierCount,
4663*b7893ccfSSadaf Ebrahimi const VkMemoryBarrier* pMemoryBarriers,
4664*b7893ccfSSadaf Ebrahimi uint32_t bufferMemoryBarrierCount,
4665*b7893ccfSSadaf Ebrahimi const VkBufferMemoryBarrier* pBufferMemoryBarriers,
4666*b7893ccfSSadaf Ebrahimi uint32_t imageMemoryBarrierCount,
4667*b7893ccfSSadaf Ebrahimi const VkImageMemoryBarrier* pImageMemoryBarriers) {
4668*b7893ccfSSadaf Ebrahimi bool skip = false;
4669*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", "srcStageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, srcStageMask, kRequiredFlags, "VUID-vkCmdPipelineBarrier-srcStageMask-parameter", "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask");
4670*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", "dstStageMask", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, dstStageMask, kRequiredFlags, "VUID-vkCmdPipelineBarrier-dstStageMask-parameter", "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask");
4671*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", "dependencyFlags", "VkDependencyFlagBits", AllVkDependencyFlagBits, dependencyFlags, kOptionalFlags, "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter");
4672*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdPipelineBarrier", "memoryBarrierCount", "pMemoryBarriers", "VK_STRUCTURE_TYPE_MEMORY_BARRIER", memoryBarrierCount, pMemoryBarriers, VK_STRUCTURE_TYPE_MEMORY_BARRIER, false, true, "VUID-VkMemoryBarrier-sType-sType", "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter", kVUIDUndefined);
4673*b7893ccfSSadaf Ebrahimi if (pMemoryBarriers != NULL)
4674*b7893ccfSSadaf Ebrahimi {
4675*b7893ccfSSadaf Ebrahimi for (uint32_t memoryBarrierIndex = 0; memoryBarrierIndex < memoryBarrierCount; ++memoryBarrierIndex)
4676*b7893ccfSSadaf Ebrahimi {
4677*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdPipelineBarrier", ParameterName("pMemoryBarriers[%i].pNext", ParameterName::IndexVector{ memoryBarrierIndex }), NULL, pMemoryBarriers[memoryBarrierIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMemoryBarrier-pNext-pNext");
4678*b7893ccfSSadaf Ebrahimi
4679*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ memoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pMemoryBarriers[memoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkMemoryBarrier-srcAccessMask-parameter");
4680*b7893ccfSSadaf Ebrahimi
4681*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ memoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pMemoryBarriers[memoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkMemoryBarrier-dstAccessMask-parameter");
4682*b7893ccfSSadaf Ebrahimi }
4683*b7893ccfSSadaf Ebrahimi }
4684*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdPipelineBarrier", "bufferMemoryBarrierCount", "pBufferMemoryBarriers", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", bufferMemoryBarrierCount, pBufferMemoryBarriers, VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, false, true, "VUID-VkBufferMemoryBarrier-sType-sType", "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter", kVUIDUndefined);
4685*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers != NULL)
4686*b7893ccfSSadaf Ebrahimi {
4687*b7893ccfSSadaf Ebrahimi for (uint32_t bufferMemoryBarrierIndex = 0; bufferMemoryBarrierIndex < bufferMemoryBarrierCount; ++bufferMemoryBarrierIndex)
4688*b7893ccfSSadaf Ebrahimi {
4689*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdPipelineBarrier", ParameterName("pBufferMemoryBarriers[%i].pNext", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), NULL, pBufferMemoryBarriers[bufferMemoryBarrierIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferMemoryBarrier-pNext-pNext");
4690*b7893ccfSSadaf Ebrahimi
4691*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pBufferMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pBufferMemoryBarriers[bufferMemoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter");
4692*b7893ccfSSadaf Ebrahimi
4693*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pBufferMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pBufferMemoryBarriers[bufferMemoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter");
4694*b7893ccfSSadaf Ebrahimi
4695*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPipelineBarrier", ParameterName("pBufferMemoryBarriers[%i].buffer", ParameterName::IndexVector{ bufferMemoryBarrierIndex }), pBufferMemoryBarriers[bufferMemoryBarrierIndex].buffer);
4696*b7893ccfSSadaf Ebrahimi }
4697*b7893ccfSSadaf Ebrahimi }
4698*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdPipelineBarrier", "imageMemoryBarrierCount", "pImageMemoryBarriers", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", imageMemoryBarrierCount, pImageMemoryBarriers, VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, false, true, "VUID-VkImageMemoryBarrier-sType-sType", "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter", kVUIDUndefined);
4699*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers != NULL)
4700*b7893ccfSSadaf Ebrahimi {
4701*b7893ccfSSadaf Ebrahimi for (uint32_t imageMemoryBarrierIndex = 0; imageMemoryBarrierIndex < imageMemoryBarrierCount; ++imageMemoryBarrierIndex)
4702*b7893ccfSSadaf Ebrahimi {
4703*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageMemoryBarrier[] = { VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT };
4704*b7893ccfSSadaf Ebrahimi
4705*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].pNext", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkSampleLocationsInfoEXT", pImageMemoryBarriers[imageMemoryBarrierIndex].pNext, ARRAY_SIZE(allowed_structs_VkImageMemoryBarrier), allowed_structs_VkImageMemoryBarrier, GeneratedVulkanHeaderVersion, "VUID-VkImageMemoryBarrier-pNext-pNext");
4706*b7893ccfSSadaf Ebrahimi
4707*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].srcAccessMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].srcAccessMask, kOptionalFlags, "VUID-VkImageMemoryBarrier-srcAccessMask-parameter");
4708*b7893ccfSSadaf Ebrahimi
4709*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].dstAccessMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].dstAccessMask, kOptionalFlags, "VUID-VkImageMemoryBarrier-dstAccessMask-parameter");
4710*b7893ccfSSadaf Ebrahimi
4711*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].oldLayout", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageLayout", AllVkImageLayoutEnums, pImageMemoryBarriers[imageMemoryBarrierIndex].oldLayout, "VUID-VkImageMemoryBarrier-oldLayout-parameter");
4712*b7893ccfSSadaf Ebrahimi
4713*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].newLayout", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageLayout", AllVkImageLayoutEnums, pImageMemoryBarriers[imageMemoryBarrierIndex].newLayout, "VUID-VkImageMemoryBarrier-newLayout-parameter");
4714*b7893ccfSSadaf Ebrahimi
4715*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].image", ParameterName::IndexVector{ imageMemoryBarrierIndex }), pImageMemoryBarriers[imageMemoryBarrierIndex].image);
4716*b7893ccfSSadaf Ebrahimi
4717*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPipelineBarrier", ParameterName("pImageMemoryBarriers[%i].subresourceRange.aspectMask", ParameterName::IndexVector{ imageMemoryBarrierIndex }), "VkImageAspectFlagBits", AllVkImageAspectFlagBits, pImageMemoryBarriers[imageMemoryBarrierIndex].subresourceRange.aspectMask, kRequiredFlags, "VUID-VkImageSubresourceRange-aspectMask-parameter", "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask");
4718*b7893ccfSSadaf Ebrahimi }
4719*b7893ccfSSadaf Ebrahimi }
4720*b7893ccfSSadaf Ebrahimi return skip;
4721*b7893ccfSSadaf Ebrahimi }
4722*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)4723*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginQuery(
4724*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4725*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
4726*b7893ccfSSadaf Ebrahimi uint32_t query,
4727*b7893ccfSSadaf Ebrahimi VkQueryControlFlags flags) {
4728*b7893ccfSSadaf Ebrahimi bool skip = false;
4729*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginQuery", "queryPool", queryPool);
4730*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBeginQuery", "flags", "VkQueryControlFlagBits", AllVkQueryControlFlagBits, flags, kOptionalFlags, "VUID-vkCmdBeginQuery-flags-parameter");
4731*b7893ccfSSadaf Ebrahimi return skip;
4732*b7893ccfSSadaf Ebrahimi }
4733*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)4734*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndQuery(
4735*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4736*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
4737*b7893ccfSSadaf Ebrahimi uint32_t query) {
4738*b7893ccfSSadaf Ebrahimi bool skip = false;
4739*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdEndQuery", "queryPool", queryPool);
4740*b7893ccfSSadaf Ebrahimi return skip;
4741*b7893ccfSSadaf Ebrahimi }
4742*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)4743*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdResetQueryPool(
4744*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4745*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
4746*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
4747*b7893ccfSSadaf Ebrahimi uint32_t queryCount) {
4748*b7893ccfSSadaf Ebrahimi bool skip = false;
4749*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdResetQueryPool", "queryPool", queryPool);
4750*b7893ccfSSadaf Ebrahimi return skip;
4751*b7893ccfSSadaf Ebrahimi }
4752*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)4753*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdWriteTimestamp(
4754*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4755*b7893ccfSSadaf Ebrahimi VkPipelineStageFlagBits pipelineStage,
4756*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
4757*b7893ccfSSadaf Ebrahimi uint32_t query) {
4758*b7893ccfSSadaf Ebrahimi bool skip = false;
4759*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWriteTimestamp", "pipelineStage", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pipelineStage, kRequiredSingleBit, "VUID-vkCmdWriteTimestamp-pipelineStage-parameter", "VUID-vkCmdWriteTimestamp-pipelineStage-parameter");
4760*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdWriteTimestamp", "queryPool", queryPool);
4761*b7893ccfSSadaf Ebrahimi return skip;
4762*b7893ccfSSadaf Ebrahimi }
4763*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)4764*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyQueryPoolResults(
4765*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4766*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
4767*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
4768*b7893ccfSSadaf Ebrahimi uint32_t queryCount,
4769*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
4770*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
4771*b7893ccfSSadaf Ebrahimi VkDeviceSize stride,
4772*b7893ccfSSadaf Ebrahimi VkQueryResultFlags flags) {
4773*b7893ccfSSadaf Ebrahimi bool skip = false;
4774*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyQueryPoolResults", "queryPool", queryPool);
4775*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyQueryPoolResults", "dstBuffer", dstBuffer);
4776*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdCopyQueryPoolResults", "flags", "VkQueryResultFlagBits", AllVkQueryResultFlagBits, flags, kOptionalFlags, "VUID-vkCmdCopyQueryPoolResults-flags-parameter");
4777*b7893ccfSSadaf Ebrahimi return skip;
4778*b7893ccfSSadaf Ebrahimi }
4779*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)4780*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdPushConstants(
4781*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4782*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
4783*b7893ccfSSadaf Ebrahimi VkShaderStageFlags stageFlags,
4784*b7893ccfSSadaf Ebrahimi uint32_t offset,
4785*b7893ccfSSadaf Ebrahimi uint32_t size,
4786*b7893ccfSSadaf Ebrahimi const void* pValues) {
4787*b7893ccfSSadaf Ebrahimi bool skip = false;
4788*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPushConstants", "layout", layout);
4789*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdPushConstants", "stageFlags", "VkShaderStageFlagBits", AllVkShaderStageFlagBits, stageFlags, kRequiredFlags, "VUID-vkCmdPushConstants-stageFlags-parameter", "VUID-vkCmdPushConstants-stageFlags-requiredbitmask");
4790*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdPushConstants", "size", "pValues", size, &pValues, true, true, "VUID-vkCmdPushConstants-size-arraylength", "VUID-vkCmdPushConstants-pValues-parameter");
4791*b7893ccfSSadaf Ebrahimi return skip;
4792*b7893ccfSSadaf Ebrahimi }
4793*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)4794*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginRenderPass(
4795*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4796*b7893ccfSSadaf Ebrahimi const VkRenderPassBeginInfo* pRenderPassBegin,
4797*b7893ccfSSadaf Ebrahimi VkSubpassContents contents) {
4798*b7893ccfSSadaf Ebrahimi bool skip = false;
4799*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBeginRenderPass", "pRenderPassBegin", "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", pRenderPassBegin, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, true, "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter", "VUID-VkRenderPassBeginInfo-sType-sType");
4800*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin != NULL)
4801*b7893ccfSSadaf Ebrahimi {
4802*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkRenderPassBeginInfo[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT };
4803*b7893ccfSSadaf Ebrahimi
4804*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBeginRenderPass", "pRenderPassBegin->pNext", "VkDeviceGroupRenderPassBeginInfo, VkRenderPassAttachmentBeginInfoKHR, VkRenderPassSampleLocationsBeginInfoEXT", pRenderPassBegin->pNext, ARRAY_SIZE(allowed_structs_VkRenderPassBeginInfo), allowed_structs_VkRenderPassBeginInfo, GeneratedVulkanHeaderVersion, "VUID-VkRenderPassBeginInfo-pNext-pNext");
4805*b7893ccfSSadaf Ebrahimi
4806*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginRenderPass", "pRenderPassBegin->renderPass", pRenderPassBegin->renderPass);
4807*b7893ccfSSadaf Ebrahimi
4808*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginRenderPass", "pRenderPassBegin->framebuffer", pRenderPassBegin->framebuffer);
4809*b7893ccfSSadaf Ebrahimi
4810*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4811*b7893ccfSSadaf Ebrahimi
4812*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4813*b7893ccfSSadaf Ebrahimi
4814*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBeginRenderPass", "pRenderPassBegin->clearValueCount", "pRenderPassBegin->pClearValues", pRenderPassBegin->clearValueCount, &pRenderPassBegin->pClearValues, false, true, kVUIDUndefined, "VUID-VkRenderPassBeginInfo-pClearValues-parameter");
4815*b7893ccfSSadaf Ebrahimi
4816*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->pClearValues != NULL)
4817*b7893ccfSSadaf Ebrahimi {
4818*b7893ccfSSadaf Ebrahimi for (uint32_t clearValueIndex = 0; clearValueIndex < pRenderPassBegin->clearValueCount; ++clearValueIndex)
4819*b7893ccfSSadaf Ebrahimi {
4820*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4821*b7893ccfSSadaf Ebrahimi
4822*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4823*b7893ccfSSadaf Ebrahimi }
4824*b7893ccfSSadaf Ebrahimi }
4825*b7893ccfSSadaf Ebrahimi }
4826*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBeginRenderPass", "contents", "VkSubpassContents", AllVkSubpassContentsEnums, contents, "VUID-vkCmdBeginRenderPass-contents-parameter");
4827*b7893ccfSSadaf Ebrahimi return skip;
4828*b7893ccfSSadaf Ebrahimi }
4829*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)4830*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdNextSubpass(
4831*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4832*b7893ccfSSadaf Ebrahimi VkSubpassContents contents) {
4833*b7893ccfSSadaf Ebrahimi bool skip = false;
4834*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdNextSubpass", "contents", "VkSubpassContents", AllVkSubpassContentsEnums, contents, "VUID-vkCmdNextSubpass-contents-parameter");
4835*b7893ccfSSadaf Ebrahimi return skip;
4836*b7893ccfSSadaf Ebrahimi }
4837*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndRenderPass(VkCommandBuffer commandBuffer)4838*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndRenderPass(
4839*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer) {
4840*b7893ccfSSadaf Ebrahimi bool skip = false;
4841*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4842*b7893ccfSSadaf Ebrahimi return skip;
4843*b7893ccfSSadaf Ebrahimi }
4844*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)4845*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdExecuteCommands(
4846*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4847*b7893ccfSSadaf Ebrahimi uint32_t commandBufferCount,
4848*b7893ccfSSadaf Ebrahimi const VkCommandBuffer* pCommandBuffers) {
4849*b7893ccfSSadaf Ebrahimi bool skip = false;
4850*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdExecuteCommands", "commandBufferCount", "pCommandBuffers", commandBufferCount, pCommandBuffers, true, true);
4851*b7893ccfSSadaf Ebrahimi return skip;
4852*b7893ccfSSadaf Ebrahimi }
4853*b7893ccfSSadaf Ebrahimi
4854*b7893ccfSSadaf Ebrahimi
4855*b7893ccfSSadaf Ebrahimi
PreCallValidateBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)4856*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindBufferMemory2(
4857*b7893ccfSSadaf Ebrahimi VkDevice device,
4858*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
4859*b7893ccfSSadaf Ebrahimi const VkBindBufferMemoryInfo* pBindInfos) {
4860*b7893ccfSSadaf Ebrahimi bool skip = false;
4861*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkBindBufferMemory2", "bindInfoCount", "pBindInfos", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", bindInfoCount, pBindInfos, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, true, true, "VUID-VkBindBufferMemoryInfo-sType-sType", "VUID-vkBindBufferMemory2-pBindInfos-parameter", "VUID-vkBindBufferMemory2-bindInfoCount-arraylength");
4862*b7893ccfSSadaf Ebrahimi if (pBindInfos != NULL)
4863*b7893ccfSSadaf Ebrahimi {
4864*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
4865*b7893ccfSSadaf Ebrahimi {
4866*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBindBufferMemoryInfo[] = { VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO };
4867*b7893ccfSSadaf Ebrahimi
4868*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBindBufferMemory2", ParameterName("pBindInfos[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), "VkBindBufferMemoryDeviceGroupInfo", pBindInfos[bindInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkBindBufferMemoryInfo), allowed_structs_VkBindBufferMemoryInfo, GeneratedVulkanHeaderVersion, "VUID-VkBindBufferMemoryInfo-pNext-pNext");
4869*b7893ccfSSadaf Ebrahimi
4870*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory2", ParameterName("pBindInfos[%i].buffer", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].buffer);
4871*b7893ccfSSadaf Ebrahimi
4872*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory2", ParameterName("pBindInfos[%i].memory", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].memory);
4873*b7893ccfSSadaf Ebrahimi }
4874*b7893ccfSSadaf Ebrahimi }
4875*b7893ccfSSadaf Ebrahimi return skip;
4876*b7893ccfSSadaf Ebrahimi }
4877*b7893ccfSSadaf Ebrahimi
PreCallValidateBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)4878*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindImageMemory2(
4879*b7893ccfSSadaf Ebrahimi VkDevice device,
4880*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
4881*b7893ccfSSadaf Ebrahimi const VkBindImageMemoryInfo* pBindInfos) {
4882*b7893ccfSSadaf Ebrahimi bool skip = false;
4883*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkBindImageMemory2", "bindInfoCount", "pBindInfos", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", bindInfoCount, pBindInfos, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, true, true, "VUID-VkBindImageMemoryInfo-sType-sType", "VUID-vkBindImageMemory2-pBindInfos-parameter", "VUID-vkBindImageMemory2-bindInfoCount-arraylength");
4884*b7893ccfSSadaf Ebrahimi if (pBindInfos != NULL)
4885*b7893ccfSSadaf Ebrahimi {
4886*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
4887*b7893ccfSSadaf Ebrahimi {
4888*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBindImageMemoryInfo[] = { VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO };
4889*b7893ccfSSadaf Ebrahimi
4890*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBindImageMemory2", ParameterName("pBindInfos[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), "VkBindImageMemoryDeviceGroupInfo, VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo", pBindInfos[bindInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkBindImageMemoryInfo), allowed_structs_VkBindImageMemoryInfo, GeneratedVulkanHeaderVersion, "VUID-VkBindImageMemoryInfo-pNext-pNext");
4891*b7893ccfSSadaf Ebrahimi
4892*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindImageMemory2", ParameterName("pBindInfos[%i].image", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].image);
4893*b7893ccfSSadaf Ebrahimi }
4894*b7893ccfSSadaf Ebrahimi }
4895*b7893ccfSSadaf Ebrahimi return skip;
4896*b7893ccfSSadaf Ebrahimi }
4897*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)4898*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceGroupPeerMemoryFeatures(
4899*b7893ccfSSadaf Ebrahimi VkDevice device,
4900*b7893ccfSSadaf Ebrahimi uint32_t heapIndex,
4901*b7893ccfSSadaf Ebrahimi uint32_t localDeviceIndex,
4902*b7893ccfSSadaf Ebrahimi uint32_t remoteDeviceIndex,
4903*b7893ccfSSadaf Ebrahimi VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
4904*b7893ccfSSadaf Ebrahimi bool skip = false;
4905*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDeviceGroupPeerMemoryFeatures", "pPeerMemoryFeatures", pPeerMemoryFeatures, "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter");
4906*b7893ccfSSadaf Ebrahimi return skip;
4907*b7893ccfSSadaf Ebrahimi }
4908*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)4909*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetDeviceMask(
4910*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4911*b7893ccfSSadaf Ebrahimi uint32_t deviceMask) {
4912*b7893ccfSSadaf Ebrahimi bool skip = false;
4913*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4914*b7893ccfSSadaf Ebrahimi return skip;
4915*b7893ccfSSadaf Ebrahimi }
4916*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)4917*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDispatchBase(
4918*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4919*b7893ccfSSadaf Ebrahimi uint32_t baseGroupX,
4920*b7893ccfSSadaf Ebrahimi uint32_t baseGroupY,
4921*b7893ccfSSadaf Ebrahimi uint32_t baseGroupZ,
4922*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
4923*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
4924*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ) {
4925*b7893ccfSSadaf Ebrahimi bool skip = false;
4926*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4927*b7893ccfSSadaf Ebrahimi return skip;
4928*b7893ccfSSadaf Ebrahimi }
4929*b7893ccfSSadaf Ebrahimi
PreCallValidateEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)4930*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateEnumeratePhysicalDeviceGroups(
4931*b7893ccfSSadaf Ebrahimi VkInstance instance,
4932*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceGroupCount,
4933*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
4934*b7893ccfSSadaf Ebrahimi bool skip = false;
4935*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkEnumeratePhysicalDeviceGroups", "pPhysicalDeviceGroupCount", "pPhysicalDeviceGroupProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, true, false, false, "VUID-VkPhysicalDeviceGroupProperties-sType-sType", "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter", kVUIDUndefined);
4936*b7893ccfSSadaf Ebrahimi if (pPhysicalDeviceGroupProperties != NULL)
4937*b7893ccfSSadaf Ebrahimi {
4938*b7893ccfSSadaf Ebrahimi for (uint32_t pPhysicalDeviceGroupIndex = 0; pPhysicalDeviceGroupIndex < *pPhysicalDeviceGroupCount; ++pPhysicalDeviceGroupIndex)
4939*b7893ccfSSadaf Ebrahimi {
4940*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4941*b7893ccfSSadaf Ebrahimi }
4942*b7893ccfSSadaf Ebrahimi }
4943*b7893ccfSSadaf Ebrahimi return skip;
4944*b7893ccfSSadaf Ebrahimi }
4945*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4946*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageMemoryRequirements2(
4947*b7893ccfSSadaf Ebrahimi VkDevice device,
4948*b7893ccfSSadaf Ebrahimi const VkImageMemoryRequirementsInfo2* pInfo,
4949*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements) {
4950*b7893ccfSSadaf Ebrahimi bool skip = false;
4951*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageMemoryRequirements2", "pInfo", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetImageMemoryRequirements2-pInfo-parameter", "VUID-VkImageMemoryRequirementsInfo2-sType-sType");
4952*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
4953*b7893ccfSSadaf Ebrahimi {
4954*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageMemoryRequirementsInfo2[] = { VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO };
4955*b7893ccfSSadaf Ebrahimi
4956*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetImageMemoryRequirements2", "pInfo->pNext", "VkImagePlaneMemoryRequirementsInfo", pInfo->pNext, ARRAY_SIZE(allowed_structs_VkImageMemoryRequirementsInfo2), allowed_structs_VkImageMemoryRequirementsInfo2, GeneratedVulkanHeaderVersion, "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext");
4957*b7893ccfSSadaf Ebrahimi
4958*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageMemoryRequirements2", "pInfo->image", pInfo->image);
4959*b7893ccfSSadaf Ebrahimi }
4960*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageMemoryRequirements2", "pMemoryRequirements", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pMemoryRequirements, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, true, "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter", "VUID-VkMemoryRequirements2-sType-sType");
4961*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
4962*b7893ccfSSadaf Ebrahimi {
4963*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4964*b7893ccfSSadaf Ebrahimi }
4965*b7893ccfSSadaf Ebrahimi return skip;
4966*b7893ccfSSadaf Ebrahimi }
4967*b7893ccfSSadaf Ebrahimi
PreCallValidateGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4968*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetBufferMemoryRequirements2(
4969*b7893ccfSSadaf Ebrahimi VkDevice device,
4970*b7893ccfSSadaf Ebrahimi const VkBufferMemoryRequirementsInfo2* pInfo,
4971*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements) {
4972*b7893ccfSSadaf Ebrahimi bool skip = false;
4973*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetBufferMemoryRequirements2", "pInfo", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter", "VUID-VkBufferMemoryRequirementsInfo2-sType-sType");
4974*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
4975*b7893ccfSSadaf Ebrahimi {
4976*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetBufferMemoryRequirements2", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext");
4977*b7893ccfSSadaf Ebrahimi
4978*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetBufferMemoryRequirements2", "pInfo->buffer", pInfo->buffer);
4979*b7893ccfSSadaf Ebrahimi }
4980*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetBufferMemoryRequirements2", "pMemoryRequirements", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pMemoryRequirements, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, true, "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter", "VUID-VkMemoryRequirements2-sType-sType");
4981*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
4982*b7893ccfSSadaf Ebrahimi {
4983*b7893ccfSSadaf Ebrahimi // No xml-driven validation
4984*b7893ccfSSadaf Ebrahimi }
4985*b7893ccfSSadaf Ebrahimi return skip;
4986*b7893ccfSSadaf Ebrahimi }
4987*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4988*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageSparseMemoryRequirements2(
4989*b7893ccfSSadaf Ebrahimi VkDevice device,
4990*b7893ccfSSadaf Ebrahimi const VkImageSparseMemoryRequirementsInfo2* pInfo,
4991*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
4992*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
4993*b7893ccfSSadaf Ebrahimi bool skip = false;
4994*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageSparseMemoryRequirements2", "pInfo", "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter", "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType");
4995*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
4996*b7893ccfSSadaf Ebrahimi {
4997*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetImageSparseMemoryRequirements2", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext");
4998*b7893ccfSSadaf Ebrahimi
4999*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageSparseMemoryRequirements2", "pInfo->image", pInfo->image);
5000*b7893ccfSSadaf Ebrahimi }
5001*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetImageSparseMemoryRequirements2", "pSparseMemoryRequirementCount", "pSparseMemoryRequirements", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2", pSparseMemoryRequirementCount, pSparseMemoryRequirements, VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, true, false, false, "VUID-VkSparseImageMemoryRequirements2-sType-sType", "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter", kVUIDUndefined);
5002*b7893ccfSSadaf Ebrahimi if (pSparseMemoryRequirements != NULL)
5003*b7893ccfSSadaf Ebrahimi {
5004*b7893ccfSSadaf Ebrahimi for (uint32_t pSparseMemoryRequirementIndex = 0; pSparseMemoryRequirementIndex < *pSparseMemoryRequirementCount; ++pSparseMemoryRequirementIndex)
5005*b7893ccfSSadaf Ebrahimi {
5006*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5007*b7893ccfSSadaf Ebrahimi }
5008*b7893ccfSSadaf Ebrahimi }
5009*b7893ccfSSadaf Ebrahimi return skip;
5010*b7893ccfSSadaf Ebrahimi }
5011*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)5012*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFeatures2(
5013*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5014*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures2* pFeatures) {
5015*b7893ccfSSadaf Ebrahimi bool skip = false;
5016*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceFeatures2", "pFeatures", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", pFeatures, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, true, "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter", "VUID-VkPhysicalDeviceFeatures2-sType-sType");
5017*b7893ccfSSadaf Ebrahimi return skip;
5018*b7893ccfSSadaf Ebrahimi }
5019*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)5020*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceProperties2(
5021*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5022*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties2* pProperties) {
5023*b7893ccfSSadaf Ebrahimi bool skip = false;
5024*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceProperties2", "pProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", pProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter", "VUID-VkPhysicalDeviceProperties2-sType-sType");
5025*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
5026*b7893ccfSSadaf Ebrahimi {
5027*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5028*b7893ccfSSadaf Ebrahimi }
5029*b7893ccfSSadaf Ebrahimi return skip;
5030*b7893ccfSSadaf Ebrahimi }
5031*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)5032*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFormatProperties2(
5033*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5034*b7893ccfSSadaf Ebrahimi VkFormat format,
5035*b7893ccfSSadaf Ebrahimi VkFormatProperties2* pFormatProperties) {
5036*b7893ccfSSadaf Ebrahimi bool skip = false;
5037*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceFormatProperties2", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter");
5038*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceFormatProperties2", "pFormatProperties", "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2", pFormatProperties, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter", "VUID-VkFormatProperties2-sType-sType");
5039*b7893ccfSSadaf Ebrahimi if (pFormatProperties != NULL)
5040*b7893ccfSSadaf Ebrahimi {
5041*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5042*b7893ccfSSadaf Ebrahimi }
5043*b7893ccfSSadaf Ebrahimi return skip;
5044*b7893ccfSSadaf Ebrahimi }
5045*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)5046*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceImageFormatProperties2(
5047*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5048*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
5049*b7893ccfSSadaf Ebrahimi VkImageFormatProperties2* pImageFormatProperties) {
5050*b7893ccfSSadaf Ebrahimi bool skip = false;
5051*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", pImageFormatInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, true, "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter", "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType");
5052*b7893ccfSSadaf Ebrahimi if (pImageFormatInfo != NULL)
5053*b7893ccfSSadaf Ebrahimi {
5054*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPhysicalDeviceImageFormatInfo2[] = { VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT };
5055*b7893ccfSSadaf Ebrahimi
5056*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->pNext", "VkImageFormatListCreateInfoKHR, VkImageStencilUsageCreateInfoEXT, VkPhysicalDeviceExternalImageFormatInfo, VkPhysicalDeviceImageDrmFormatModifierInfoEXT, VkPhysicalDeviceImageViewImageFormatInfoEXT", pImageFormatInfo->pNext, ARRAY_SIZE(allowed_structs_VkPhysicalDeviceImageFormatInfo2), allowed_structs_VkPhysicalDeviceImageFormatInfo2, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext");
5057*b7893ccfSSadaf Ebrahimi
5058*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->format", "VkFormat", AllVkFormatEnums, pImageFormatInfo->format, "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter");
5059*b7893ccfSSadaf Ebrahimi
5060*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->type", "VkImageType", AllVkImageTypeEnums, pImageFormatInfo->type, "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter");
5061*b7893ccfSSadaf Ebrahimi
5062*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->tiling", "VkImageTiling", AllVkImageTilingEnums, pImageFormatInfo->tiling, "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter");
5063*b7893ccfSSadaf Ebrahimi
5064*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pImageFormatInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter", "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask");
5065*b7893ccfSSadaf Ebrahimi
5066*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatInfo->flags", "VkImageCreateFlagBits", AllVkImageCreateFlagBits, pImageFormatInfo->flags, kOptionalFlags, "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter");
5067*b7893ccfSSadaf Ebrahimi }
5068*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceImageFormatProperties2", "pImageFormatProperties", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", pImageFormatProperties, VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter", "VUID-VkImageFormatProperties2-sType-sType");
5069*b7893ccfSSadaf Ebrahimi if (pImageFormatProperties != NULL)
5070*b7893ccfSSadaf Ebrahimi {
5071*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5072*b7893ccfSSadaf Ebrahimi }
5073*b7893ccfSSadaf Ebrahimi return skip;
5074*b7893ccfSSadaf Ebrahimi }
5075*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)5076*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceQueueFamilyProperties2(
5077*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5078*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
5079*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties2* pQueueFamilyProperties) {
5080*b7893ccfSSadaf Ebrahimi bool skip = false;
5081*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceQueueFamilyProperties2", "pQueueFamilyPropertyCount", "pQueueFamilyProperties", "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", pQueueFamilyPropertyCount, pQueueFamilyProperties, VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, true, false, false, "VUID-VkQueueFamilyProperties2-sType-sType", "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter", kVUIDUndefined);
5082*b7893ccfSSadaf Ebrahimi if (pQueueFamilyProperties != NULL)
5083*b7893ccfSSadaf Ebrahimi {
5084*b7893ccfSSadaf Ebrahimi for (uint32_t pQueueFamilyPropertyIndex = 0; pQueueFamilyPropertyIndex < *pQueueFamilyPropertyCount; ++pQueueFamilyPropertyIndex)
5085*b7893ccfSSadaf Ebrahimi {
5086*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5087*b7893ccfSSadaf Ebrahimi }
5088*b7893ccfSSadaf Ebrahimi }
5089*b7893ccfSSadaf Ebrahimi return skip;
5090*b7893ccfSSadaf Ebrahimi }
5091*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)5092*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceMemoryProperties2(
5093*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5094*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
5095*b7893ccfSSadaf Ebrahimi bool skip = false;
5096*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceMemoryProperties2", "pMemoryProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", pMemoryProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter", "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType");
5097*b7893ccfSSadaf Ebrahimi if (pMemoryProperties != NULL)
5098*b7893ccfSSadaf Ebrahimi {
5099*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5100*b7893ccfSSadaf Ebrahimi }
5101*b7893ccfSSadaf Ebrahimi return skip;
5102*b7893ccfSSadaf Ebrahimi }
5103*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)5104*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSparseImageFormatProperties2(
5105*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5106*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
5107*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
5108*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties2* pProperties) {
5109*b7893ccfSSadaf Ebrahimi bool skip = false;
5110*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2", pFormatInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, true, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType");
5111*b7893ccfSSadaf Ebrahimi if (pFormatInfo != NULL)
5112*b7893ccfSSadaf Ebrahimi {
5113*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->pNext", NULL, pFormatInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext");
5114*b7893ccfSSadaf Ebrahimi
5115*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->format", "VkFormat", AllVkFormatEnums, pFormatInfo->format, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter");
5116*b7893ccfSSadaf Ebrahimi
5117*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->type", "VkImageType", AllVkImageTypeEnums, pFormatInfo->type, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter");
5118*b7893ccfSSadaf Ebrahimi
5119*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->samples", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pFormatInfo->samples, kRequiredSingleBit, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter");
5120*b7893ccfSSadaf Ebrahimi
5121*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pFormatInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask");
5122*b7893ccfSSadaf Ebrahimi
5123*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2", "pFormatInfo->tiling", "VkImageTiling", AllVkImageTilingEnums, pFormatInfo->tiling, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter");
5124*b7893ccfSSadaf Ebrahimi }
5125*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceSparseImageFormatProperties2", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, true, false, false, "VUID-VkSparseImageFormatProperties2-sType-sType", "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter", kVUIDUndefined);
5126*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
5127*b7893ccfSSadaf Ebrahimi {
5128*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
5129*b7893ccfSSadaf Ebrahimi {
5130*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5131*b7893ccfSSadaf Ebrahimi }
5132*b7893ccfSSadaf Ebrahimi }
5133*b7893ccfSSadaf Ebrahimi return skip;
5134*b7893ccfSSadaf Ebrahimi }
5135*b7893ccfSSadaf Ebrahimi
PreCallValidateTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)5136*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateTrimCommandPool(
5137*b7893ccfSSadaf Ebrahimi VkDevice device,
5138*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
5139*b7893ccfSSadaf Ebrahimi VkCommandPoolTrimFlags flags) {
5140*b7893ccfSSadaf Ebrahimi bool skip = false;
5141*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkTrimCommandPool", "commandPool", commandPool);
5142*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkTrimCommandPool", "flags", flags, "VUID-vkTrimCommandPool-flags-zerobitmask");
5143*b7893ccfSSadaf Ebrahimi return skip;
5144*b7893ccfSSadaf Ebrahimi }
5145*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)5146*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceQueue2(
5147*b7893ccfSSadaf Ebrahimi VkDevice device,
5148*b7893ccfSSadaf Ebrahimi const VkDeviceQueueInfo2* pQueueInfo,
5149*b7893ccfSSadaf Ebrahimi VkQueue* pQueue) {
5150*b7893ccfSSadaf Ebrahimi bool skip = false;
5151*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDeviceQueue2", "pQueueInfo", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2", pQueueInfo, VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, true, "VUID-vkGetDeviceQueue2-pQueueInfo-parameter", "VUID-VkDeviceQueueInfo2-sType-sType");
5152*b7893ccfSSadaf Ebrahimi if (pQueueInfo != NULL)
5153*b7893ccfSSadaf Ebrahimi {
5154*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetDeviceQueue2", "pQueueInfo->pNext", NULL, pQueueInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDeviceQueueInfo2-pNext-pNext");
5155*b7893ccfSSadaf Ebrahimi
5156*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetDeviceQueue2", "pQueueInfo->flags", "VkDeviceQueueCreateFlagBits", AllVkDeviceQueueCreateFlagBits, pQueueInfo->flags, kRequiredFlags, "VUID-VkDeviceQueueInfo2-flags-parameter", "VUID-VkDeviceQueueInfo2-flags-requiredbitmask");
5157*b7893ccfSSadaf Ebrahimi }
5158*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDeviceQueue2", "pQueue", pQueue, "VUID-vkGetDeviceQueue2-pQueue-parameter");
5159*b7893ccfSSadaf Ebrahimi return skip;
5160*b7893ccfSSadaf Ebrahimi }
5161*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)5162*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSamplerYcbcrConversion(
5163*b7893ccfSSadaf Ebrahimi VkDevice device,
5164*b7893ccfSSadaf Ebrahimi const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
5165*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5166*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion* pYcbcrConversion) {
5167*b7893ccfSSadaf Ebrahimi bool skip = false;
5168*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateSamplerYcbcrConversion", "pCreateInfo", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, true, "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter", "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType");
5169*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5170*b7893ccfSSadaf Ebrahimi {
5171*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSamplerYcbcrConversionCreateInfo[] = { VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID };
5172*b7893ccfSSadaf Ebrahimi
5173*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSamplerYcbcrConversion", "pCreateInfo->pNext", "VkExternalFormatANDROID", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkSamplerYcbcrConversionCreateInfo), allowed_structs_VkSamplerYcbcrConversionCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext");
5174*b7893ccfSSadaf Ebrahimi
5175*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->format", "VkFormat", AllVkFormatEnums, pCreateInfo->format, "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter");
5176*b7893ccfSSadaf Ebrahimi
5177*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->ycbcrModel", "VkSamplerYcbcrModelConversion", AllVkSamplerYcbcrModelConversionEnums, pCreateInfo->ycbcrModel, "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter");
5178*b7893ccfSSadaf Ebrahimi
5179*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->ycbcrRange", "VkSamplerYcbcrRange", AllVkSamplerYcbcrRangeEnums, pCreateInfo->ycbcrRange, "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter");
5180*b7893ccfSSadaf Ebrahimi
5181*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->components.r", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.r, "VUID-VkComponentMapping-r-parameter");
5182*b7893ccfSSadaf Ebrahimi
5183*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->components.g", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.g, "VUID-VkComponentMapping-g-parameter");
5184*b7893ccfSSadaf Ebrahimi
5185*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->components.b", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.b, "VUID-VkComponentMapping-b-parameter");
5186*b7893ccfSSadaf Ebrahimi
5187*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->components.a", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.a, "VUID-VkComponentMapping-a-parameter");
5188*b7893ccfSSadaf Ebrahimi
5189*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->xChromaOffset", "VkChromaLocation", AllVkChromaLocationEnums, pCreateInfo->xChromaOffset, "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter");
5190*b7893ccfSSadaf Ebrahimi
5191*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->yChromaOffset", "VkChromaLocation", AllVkChromaLocationEnums, pCreateInfo->yChromaOffset, "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter");
5192*b7893ccfSSadaf Ebrahimi
5193*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversion", "pCreateInfo->chromaFilter", "VkFilter", AllVkFilterEnums, pCreateInfo->chromaFilter, "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter");
5194*b7893ccfSSadaf Ebrahimi
5195*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSamplerYcbcrConversion", "pCreateInfo->forceExplicitReconstruction", pCreateInfo->forceExplicitReconstruction);
5196*b7893ccfSSadaf Ebrahimi }
5197*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5198*b7893ccfSSadaf Ebrahimi {
5199*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5200*b7893ccfSSadaf Ebrahimi
5201*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5202*b7893ccfSSadaf Ebrahimi
5203*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5204*b7893ccfSSadaf Ebrahimi
5205*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5206*b7893ccfSSadaf Ebrahimi {
5207*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5208*b7893ccfSSadaf Ebrahimi
5209*b7893ccfSSadaf Ebrahimi }
5210*b7893ccfSSadaf Ebrahimi
5211*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5212*b7893ccfSSadaf Ebrahimi {
5213*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5214*b7893ccfSSadaf Ebrahimi
5215*b7893ccfSSadaf Ebrahimi }
5216*b7893ccfSSadaf Ebrahimi }
5217*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversion", "pYcbcrConversion", pYcbcrConversion, "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter");
5218*b7893ccfSSadaf Ebrahimi return skip;
5219*b7893ccfSSadaf Ebrahimi }
5220*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)5221*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySamplerYcbcrConversion(
5222*b7893ccfSSadaf Ebrahimi VkDevice device,
5223*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion ycbcrConversion,
5224*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
5225*b7893ccfSSadaf Ebrahimi bool skip = false;
5226*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5227*b7893ccfSSadaf Ebrahimi {
5228*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversion", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5229*b7893ccfSSadaf Ebrahimi
5230*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversion", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5231*b7893ccfSSadaf Ebrahimi
5232*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversion", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5233*b7893ccfSSadaf Ebrahimi
5234*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5235*b7893ccfSSadaf Ebrahimi {
5236*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversion", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5237*b7893ccfSSadaf Ebrahimi
5238*b7893ccfSSadaf Ebrahimi }
5239*b7893ccfSSadaf Ebrahimi
5240*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5241*b7893ccfSSadaf Ebrahimi {
5242*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversion", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5243*b7893ccfSSadaf Ebrahimi
5244*b7893ccfSSadaf Ebrahimi }
5245*b7893ccfSSadaf Ebrahimi }
5246*b7893ccfSSadaf Ebrahimi return skip;
5247*b7893ccfSSadaf Ebrahimi }
5248*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)5249*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDescriptorUpdateTemplate(
5250*b7893ccfSSadaf Ebrahimi VkDevice device,
5251*b7893ccfSSadaf Ebrahimi const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
5252*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5253*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
5254*b7893ccfSSadaf Ebrahimi bool skip = false;
5255*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDescriptorUpdateTemplate", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, true, "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter", "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType");
5256*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5257*b7893ccfSSadaf Ebrahimi {
5258*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDescriptorUpdateTemplate", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext");
5259*b7893ccfSSadaf Ebrahimi
5260*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDescriptorUpdateTemplate", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask");
5261*b7893ccfSSadaf Ebrahimi
5262*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateDescriptorUpdateTemplate", "pCreateInfo->descriptorUpdateEntryCount", "pCreateInfo->pDescriptorUpdateEntries", pCreateInfo->descriptorUpdateEntryCount, &pCreateInfo->pDescriptorUpdateEntries, true, true, "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength", "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter");
5263*b7893ccfSSadaf Ebrahimi
5264*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pDescriptorUpdateEntries != NULL)
5265*b7893ccfSSadaf Ebrahimi {
5266*b7893ccfSSadaf Ebrahimi for (uint32_t descriptorUpdateEntryIndex = 0; descriptorUpdateEntryIndex < pCreateInfo->descriptorUpdateEntryCount; ++descriptorUpdateEntryIndex)
5267*b7893ccfSSadaf Ebrahimi {
5268*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorUpdateTemplate", ParameterName("pCreateInfo->pDescriptorUpdateEntries[%i].descriptorType", ParameterName::IndexVector{ descriptorUpdateEntryIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pDescriptorUpdateEntries[descriptorUpdateEntryIndex].descriptorType, "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter");
5269*b7893ccfSSadaf Ebrahimi }
5270*b7893ccfSSadaf Ebrahimi }
5271*b7893ccfSSadaf Ebrahimi
5272*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorUpdateTemplate", "pCreateInfo->templateType", "VkDescriptorUpdateTemplateType", AllVkDescriptorUpdateTemplateTypeEnums, pCreateInfo->templateType, "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter");
5273*b7893ccfSSadaf Ebrahimi }
5274*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5275*b7893ccfSSadaf Ebrahimi {
5276*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5277*b7893ccfSSadaf Ebrahimi
5278*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5279*b7893ccfSSadaf Ebrahimi
5280*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5281*b7893ccfSSadaf Ebrahimi
5282*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5283*b7893ccfSSadaf Ebrahimi {
5284*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5285*b7893ccfSSadaf Ebrahimi
5286*b7893ccfSSadaf Ebrahimi }
5287*b7893ccfSSadaf Ebrahimi
5288*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5289*b7893ccfSSadaf Ebrahimi {
5290*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5291*b7893ccfSSadaf Ebrahimi
5292*b7893ccfSSadaf Ebrahimi }
5293*b7893ccfSSadaf Ebrahimi }
5294*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplate", "pDescriptorUpdateTemplate", pDescriptorUpdateTemplate, "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter");
5295*b7893ccfSSadaf Ebrahimi return skip;
5296*b7893ccfSSadaf Ebrahimi }
5297*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)5298*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDescriptorUpdateTemplate(
5299*b7893ccfSSadaf Ebrahimi VkDevice device,
5300*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5301*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
5302*b7893ccfSSadaf Ebrahimi bool skip = false;
5303*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5304*b7893ccfSSadaf Ebrahimi {
5305*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplate", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5306*b7893ccfSSadaf Ebrahimi
5307*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplate", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5308*b7893ccfSSadaf Ebrahimi
5309*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplate", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5310*b7893ccfSSadaf Ebrahimi
5311*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5312*b7893ccfSSadaf Ebrahimi {
5313*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplate", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5314*b7893ccfSSadaf Ebrahimi
5315*b7893ccfSSadaf Ebrahimi }
5316*b7893ccfSSadaf Ebrahimi
5317*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5318*b7893ccfSSadaf Ebrahimi {
5319*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplate", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5320*b7893ccfSSadaf Ebrahimi
5321*b7893ccfSSadaf Ebrahimi }
5322*b7893ccfSSadaf Ebrahimi }
5323*b7893ccfSSadaf Ebrahimi return skip;
5324*b7893ccfSSadaf Ebrahimi }
5325*b7893ccfSSadaf Ebrahimi
PreCallValidateUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)5326*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUpdateDescriptorSetWithTemplate(
5327*b7893ccfSSadaf Ebrahimi VkDevice device,
5328*b7893ccfSSadaf Ebrahimi VkDescriptorSet descriptorSet,
5329*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5330*b7893ccfSSadaf Ebrahimi const void* pData) {
5331*b7893ccfSSadaf Ebrahimi bool skip = false;
5332*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSetWithTemplate", "descriptorSet", descriptorSet);
5333*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSetWithTemplate", "descriptorUpdateTemplate", descriptorUpdateTemplate);
5334*b7893ccfSSadaf Ebrahimi return skip;
5335*b7893ccfSSadaf Ebrahimi }
5336*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)5337*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalBufferProperties(
5338*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5339*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
5340*b7893ccfSSadaf Ebrahimi VkExternalBufferProperties* pExternalBufferProperties) {
5341*b7893ccfSSadaf Ebrahimi bool skip = false;
5342*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", pExternalBufferInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, true, "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType");
5343*b7893ccfSSadaf Ebrahimi if (pExternalBufferInfo != NULL)
5344*b7893ccfSSadaf Ebrahimi {
5345*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferInfo->pNext", NULL, pExternalBufferInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext");
5346*b7893ccfSSadaf Ebrahimi
5347*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferInfo->flags", "VkBufferCreateFlagBits", AllVkBufferCreateFlagBits, pExternalBufferInfo->flags, kOptionalFlags, "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter");
5348*b7893ccfSSadaf Ebrahimi
5349*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferInfo->usage", "VkBufferUsageFlagBits", AllVkBufferUsageFlagBits, pExternalBufferInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask");
5350*b7893ccfSSadaf Ebrahimi
5351*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferInfo->handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, pExternalBufferInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter");
5352*b7893ccfSSadaf Ebrahimi }
5353*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalBufferProperties", "pExternalBufferProperties", "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", pExternalBufferProperties, VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter", "VUID-VkExternalBufferProperties-sType-sType");
5354*b7893ccfSSadaf Ebrahimi if (pExternalBufferProperties != NULL)
5355*b7893ccfSSadaf Ebrahimi {
5356*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5357*b7893ccfSSadaf Ebrahimi }
5358*b7893ccfSSadaf Ebrahimi return skip;
5359*b7893ccfSSadaf Ebrahimi }
5360*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)5361*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalFenceProperties(
5362*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5363*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
5364*b7893ccfSSadaf Ebrahimi VkExternalFenceProperties* pExternalFenceProperties) {
5365*b7893ccfSSadaf Ebrahimi bool skip = false;
5366*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalFenceProperties", "pExternalFenceInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", pExternalFenceInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, true, "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter", "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType");
5367*b7893ccfSSadaf Ebrahimi if (pExternalFenceInfo != NULL)
5368*b7893ccfSSadaf Ebrahimi {
5369*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalFenceProperties", "pExternalFenceInfo->pNext", NULL, pExternalFenceInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext");
5370*b7893ccfSSadaf Ebrahimi
5371*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalFenceProperties", "pExternalFenceInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pExternalFenceInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter");
5372*b7893ccfSSadaf Ebrahimi }
5373*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalFenceProperties", "pExternalFenceProperties", "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", pExternalFenceProperties, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter", "VUID-VkExternalFenceProperties-sType-sType");
5374*b7893ccfSSadaf Ebrahimi if (pExternalFenceProperties != NULL)
5375*b7893ccfSSadaf Ebrahimi {
5376*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5377*b7893ccfSSadaf Ebrahimi }
5378*b7893ccfSSadaf Ebrahimi return skip;
5379*b7893ccfSSadaf Ebrahimi }
5380*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)5381*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalSemaphoreProperties(
5382*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5383*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
5384*b7893ccfSSadaf Ebrahimi VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
5385*b7893ccfSSadaf Ebrahimi bool skip = false;
5386*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalSemaphoreProperties", "pExternalSemaphoreInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", pExternalSemaphoreInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, true, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter", "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType");
5387*b7893ccfSSadaf Ebrahimi if (pExternalSemaphoreInfo != NULL)
5388*b7893ccfSSadaf Ebrahimi {
5389*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalSemaphoreProperties", "pExternalSemaphoreInfo->pNext", NULL, pExternalSemaphoreInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext");
5390*b7893ccfSSadaf Ebrahimi
5391*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalSemaphoreProperties", "pExternalSemaphoreInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pExternalSemaphoreInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter");
5392*b7893ccfSSadaf Ebrahimi }
5393*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalSemaphoreProperties", "pExternalSemaphoreProperties", "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", pExternalSemaphoreProperties, VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter", "VUID-VkExternalSemaphoreProperties-sType-sType");
5394*b7893ccfSSadaf Ebrahimi if (pExternalSemaphoreProperties != NULL)
5395*b7893ccfSSadaf Ebrahimi {
5396*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5397*b7893ccfSSadaf Ebrahimi }
5398*b7893ccfSSadaf Ebrahimi return skip;
5399*b7893ccfSSadaf Ebrahimi }
5400*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)5401*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDescriptorSetLayoutSupport(
5402*b7893ccfSSadaf Ebrahimi VkDevice device,
5403*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5404*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayoutSupport* pSupport) {
5405*b7893ccfSSadaf Ebrahimi bool skip = false;
5406*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDescriptorSetLayoutSupport", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, true, "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter", "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType");
5407*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5408*b7893ccfSSadaf Ebrahimi {
5409*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDescriptorSetLayoutCreateInfo[] = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT };
5410*b7893ccfSSadaf Ebrahimi
5411*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetDescriptorSetLayoutSupport", "pCreateInfo->pNext", "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDescriptorSetLayoutCreateInfo), allowed_structs_VkDescriptorSetLayoutCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext");
5412*b7893ccfSSadaf Ebrahimi
5413*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetDescriptorSetLayoutSupport", "pCreateInfo->flags", "VkDescriptorSetLayoutCreateFlagBits", AllVkDescriptorSetLayoutCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter");
5414*b7893ccfSSadaf Ebrahimi
5415*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetDescriptorSetLayoutSupport", "pCreateInfo->bindingCount", "pCreateInfo->pBindings", pCreateInfo->bindingCount, &pCreateInfo->pBindings, false, true, kVUIDUndefined, "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter");
5416*b7893ccfSSadaf Ebrahimi
5417*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pBindings != NULL)
5418*b7893ccfSSadaf Ebrahimi {
5419*b7893ccfSSadaf Ebrahimi for (uint32_t bindingIndex = 0; bindingIndex < pCreateInfo->bindingCount; ++bindingIndex)
5420*b7893ccfSSadaf Ebrahimi {
5421*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetDescriptorSetLayoutSupport", ParameterName("pCreateInfo->pBindings[%i].descriptorType", ParameterName::IndexVector{ bindingIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pBindings[bindingIndex].descriptorType, "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter");
5422*b7893ccfSSadaf Ebrahimi }
5423*b7893ccfSSadaf Ebrahimi }
5424*b7893ccfSSadaf Ebrahimi }
5425*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDescriptorSetLayoutSupport", "pSupport", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", pSupport, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, true, "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter", "VUID-VkDescriptorSetLayoutSupport-sType-sType");
5426*b7893ccfSSadaf Ebrahimi if (pSupport != NULL)
5427*b7893ccfSSadaf Ebrahimi {
5428*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5429*b7893ccfSSadaf Ebrahimi }
5430*b7893ccfSSadaf Ebrahimi return skip;
5431*b7893ccfSSadaf Ebrahimi }
5432*b7893ccfSSadaf Ebrahimi
5433*b7893ccfSSadaf Ebrahimi
5434*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)5435*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySurfaceKHR(
5436*b7893ccfSSadaf Ebrahimi VkInstance instance,
5437*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5438*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
5439*b7893ccfSSadaf Ebrahimi bool skip = false;
5440*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkDestroySurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5441*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5442*b7893ccfSSadaf Ebrahimi {
5443*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5444*b7893ccfSSadaf Ebrahimi
5445*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5446*b7893ccfSSadaf Ebrahimi
5447*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5448*b7893ccfSSadaf Ebrahimi
5449*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5450*b7893ccfSSadaf Ebrahimi {
5451*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5452*b7893ccfSSadaf Ebrahimi
5453*b7893ccfSSadaf Ebrahimi }
5454*b7893ccfSSadaf Ebrahimi
5455*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5456*b7893ccfSSadaf Ebrahimi {
5457*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5458*b7893ccfSSadaf Ebrahimi
5459*b7893ccfSSadaf Ebrahimi }
5460*b7893ccfSSadaf Ebrahimi }
5461*b7893ccfSSadaf Ebrahimi return skip;
5462*b7893ccfSSadaf Ebrahimi }
5463*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)5464*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceSupportKHR(
5465*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5466*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
5467*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5468*b7893ccfSSadaf Ebrahimi VkBool32* pSupported) {
5469*b7893ccfSSadaf Ebrahimi bool skip = false;
5470*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceSupportKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5471*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceSupportKHR", "surface", surface);
5472*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceSurfaceSupportKHR", "pSupported", pSupported, "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter");
5473*b7893ccfSSadaf Ebrahimi return skip;
5474*b7893ccfSSadaf Ebrahimi }
5475*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)5476*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceCapabilitiesKHR(
5477*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5478*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5479*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
5480*b7893ccfSSadaf Ebrahimi bool skip = false;
5481*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5482*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", "surface", surface);
5483*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", "pSurfaceCapabilities", pSurfaceCapabilities, "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter");
5484*b7893ccfSSadaf Ebrahimi if (pSurfaceCapabilities != NULL)
5485*b7893ccfSSadaf Ebrahimi {
5486*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5487*b7893ccfSSadaf Ebrahimi }
5488*b7893ccfSSadaf Ebrahimi return skip;
5489*b7893ccfSSadaf Ebrahimi }
5490*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)5491*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceFormatsKHR(
5492*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5493*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5494*b7893ccfSSadaf Ebrahimi uint32_t* pSurfaceFormatCount,
5495*b7893ccfSSadaf Ebrahimi VkSurfaceFormatKHR* pSurfaceFormats) {
5496*b7893ccfSSadaf Ebrahimi bool skip = false;
5497*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceFormatsKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5498*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceFormatsKHR", "surface", surface);
5499*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceSurfaceFormatsKHR", "pSurfaceFormatCount", "pSurfaceFormats", pSurfaceFormatCount, &pSurfaceFormats, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter");
5500*b7893ccfSSadaf Ebrahimi if (pSurfaceFormats != NULL)
5501*b7893ccfSSadaf Ebrahimi {
5502*b7893ccfSSadaf Ebrahimi for (uint32_t pSurfaceFormatIndex = 0; pSurfaceFormatIndex < *pSurfaceFormatCount; ++pSurfaceFormatIndex)
5503*b7893ccfSSadaf Ebrahimi {
5504*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5505*b7893ccfSSadaf Ebrahimi }
5506*b7893ccfSSadaf Ebrahimi }
5507*b7893ccfSSadaf Ebrahimi return skip;
5508*b7893ccfSSadaf Ebrahimi }
5509*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)5510*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfacePresentModesKHR(
5511*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5512*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5513*b7893ccfSSadaf Ebrahimi uint32_t* pPresentModeCount,
5514*b7893ccfSSadaf Ebrahimi VkPresentModeKHR* pPresentModes) {
5515*b7893ccfSSadaf Ebrahimi bool skip = false;
5516*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfacePresentModesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5517*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfacePresentModesKHR", "surface", surface);
5518*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceSurfacePresentModesKHR", "pPresentModeCount", "pPresentModes", pPresentModeCount, &pPresentModes, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter");
5519*b7893ccfSSadaf Ebrahimi return skip;
5520*b7893ccfSSadaf Ebrahimi }
5521*b7893ccfSSadaf Ebrahimi
5522*b7893ccfSSadaf Ebrahimi
5523*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)5524*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSwapchainKHR(
5525*b7893ccfSSadaf Ebrahimi VkDevice device,
5526*b7893ccfSSadaf Ebrahimi const VkSwapchainCreateInfoKHR* pCreateInfo,
5527*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5528*b7893ccfSSadaf Ebrahimi VkSwapchainKHR* pSwapchain) {
5529*b7893ccfSSadaf Ebrahimi bool skip = false;
5530*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateSwapchainKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5531*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkCreateSwapchainKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5532*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateSwapchainKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, true, "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter", "VUID-VkSwapchainCreateInfoKHR-sType-sType");
5533*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5534*b7893ccfSSadaf Ebrahimi {
5535*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSwapchainCreateInfoKHR[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD };
5536*b7893ccfSSadaf Ebrahimi
5537*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSwapchainKHR", "pCreateInfo->pNext", "VkDeviceGroupSwapchainCreateInfoKHR, VkImageFormatListCreateInfoKHR, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, VkSwapchainDisplayNativeHdrCreateInfoAMD", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkSwapchainCreateInfoKHR), allowed_structs_VkSwapchainCreateInfoKHR, GeneratedVulkanHeaderVersion, "VUID-VkSwapchainCreateInfoKHR-pNext-pNext");
5538*b7893ccfSSadaf Ebrahimi
5539*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSwapchainKHR", "pCreateInfo->flags", "VkSwapchainCreateFlagBitsKHR", AllVkSwapchainCreateFlagBitsKHR, pCreateInfo->flags, kOptionalFlags, "VUID-VkSwapchainCreateInfoKHR-flags-parameter");
5540*b7893ccfSSadaf Ebrahimi
5541*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateSwapchainKHR", "pCreateInfo->surface", pCreateInfo->surface);
5542*b7893ccfSSadaf Ebrahimi
5543*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSwapchainKHR", "pCreateInfo->imageFormat", "VkFormat", AllVkFormatEnums, pCreateInfo->imageFormat, "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter");
5544*b7893ccfSSadaf Ebrahimi
5545*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSwapchainKHR", "pCreateInfo->imageColorSpace", "VkColorSpaceKHR", AllVkColorSpaceKHREnums, pCreateInfo->imageColorSpace, "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter");
5546*b7893ccfSSadaf Ebrahimi
5547*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5548*b7893ccfSSadaf Ebrahimi
5549*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSwapchainKHR", "pCreateInfo->imageUsage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pCreateInfo->imageUsage, kRequiredFlags, "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter", "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask");
5550*b7893ccfSSadaf Ebrahimi
5551*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSwapchainKHR", "pCreateInfo->imageSharingMode", "VkSharingMode", AllVkSharingModeEnums, pCreateInfo->imageSharingMode, "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter");
5552*b7893ccfSSadaf Ebrahimi
5553*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSwapchainKHR", "pCreateInfo->preTransform", "VkSurfaceTransformFlagBitsKHR", AllVkSurfaceTransformFlagBitsKHR, pCreateInfo->preTransform, kRequiredSingleBit, "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter", "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter");
5554*b7893ccfSSadaf Ebrahimi
5555*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSwapchainKHR", "pCreateInfo->compositeAlpha", "VkCompositeAlphaFlagBitsKHR", AllVkCompositeAlphaFlagBitsKHR, pCreateInfo->compositeAlpha, kRequiredSingleBit, "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter", "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter");
5556*b7893ccfSSadaf Ebrahimi
5557*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSwapchainKHR", "pCreateInfo->presentMode", "VkPresentModeKHR", AllVkPresentModeKHREnums, pCreateInfo->presentMode, "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter");
5558*b7893ccfSSadaf Ebrahimi
5559*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSwapchainKHR", "pCreateInfo->clipped", pCreateInfo->clipped);
5560*b7893ccfSSadaf Ebrahimi }
5561*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5562*b7893ccfSSadaf Ebrahimi {
5563*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5564*b7893ccfSSadaf Ebrahimi
5565*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5566*b7893ccfSSadaf Ebrahimi
5567*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5568*b7893ccfSSadaf Ebrahimi
5569*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5570*b7893ccfSSadaf Ebrahimi {
5571*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5572*b7893ccfSSadaf Ebrahimi
5573*b7893ccfSSadaf Ebrahimi }
5574*b7893ccfSSadaf Ebrahimi
5575*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5576*b7893ccfSSadaf Ebrahimi {
5577*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5578*b7893ccfSSadaf Ebrahimi
5579*b7893ccfSSadaf Ebrahimi }
5580*b7893ccfSSadaf Ebrahimi }
5581*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSwapchainKHR", "pSwapchain", pSwapchain, "VUID-vkCreateSwapchainKHR-pSwapchain-parameter");
5582*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
5583*b7893ccfSSadaf Ebrahimi return skip;
5584*b7893ccfSSadaf Ebrahimi }
5585*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)5586*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySwapchainKHR(
5587*b7893ccfSSadaf Ebrahimi VkDevice device,
5588*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5589*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
5590*b7893ccfSSadaf Ebrahimi bool skip = false;
5591*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkDestroySwapchainKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5592*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkDestroySwapchainKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5593*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5594*b7893ccfSSadaf Ebrahimi {
5595*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySwapchainKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5596*b7893ccfSSadaf Ebrahimi
5597*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySwapchainKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5598*b7893ccfSSadaf Ebrahimi
5599*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySwapchainKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5600*b7893ccfSSadaf Ebrahimi
5601*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5602*b7893ccfSSadaf Ebrahimi {
5603*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySwapchainKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5604*b7893ccfSSadaf Ebrahimi
5605*b7893ccfSSadaf Ebrahimi }
5606*b7893ccfSSadaf Ebrahimi
5607*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5608*b7893ccfSSadaf Ebrahimi {
5609*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySwapchainKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5610*b7893ccfSSadaf Ebrahimi
5611*b7893ccfSSadaf Ebrahimi }
5612*b7893ccfSSadaf Ebrahimi }
5613*b7893ccfSSadaf Ebrahimi return skip;
5614*b7893ccfSSadaf Ebrahimi }
5615*b7893ccfSSadaf Ebrahimi
PreCallValidateGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)5616*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetSwapchainImagesKHR(
5617*b7893ccfSSadaf Ebrahimi VkDevice device,
5618*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5619*b7893ccfSSadaf Ebrahimi uint32_t* pSwapchainImageCount,
5620*b7893ccfSSadaf Ebrahimi VkImage* pSwapchainImages) {
5621*b7893ccfSSadaf Ebrahimi bool skip = false;
5622*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetSwapchainImagesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5623*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetSwapchainImagesKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5624*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetSwapchainImagesKHR", "swapchain", swapchain);
5625*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetSwapchainImagesKHR", "pSwapchainImageCount", "pSwapchainImages", pSwapchainImageCount, &pSwapchainImages, true, false, false, kVUIDUndefined, "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter");
5626*b7893ccfSSadaf Ebrahimi return skip;
5627*b7893ccfSSadaf Ebrahimi }
5628*b7893ccfSSadaf Ebrahimi
PreCallValidateAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)5629*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAcquireNextImageKHR(
5630*b7893ccfSSadaf Ebrahimi VkDevice device,
5631*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5632*b7893ccfSSadaf Ebrahimi uint64_t timeout,
5633*b7893ccfSSadaf Ebrahimi VkSemaphore semaphore,
5634*b7893ccfSSadaf Ebrahimi VkFence fence,
5635*b7893ccfSSadaf Ebrahimi uint32_t* pImageIndex) {
5636*b7893ccfSSadaf Ebrahimi bool skip = false;
5637*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkAcquireNextImageKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5638*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkAcquireNextImageKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5639*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAcquireNextImageKHR", "swapchain", swapchain);
5640*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAcquireNextImageKHR", "pImageIndex", pImageIndex, "VUID-vkAcquireNextImageKHR-pImageIndex-parameter");
5641*b7893ccfSSadaf Ebrahimi return skip;
5642*b7893ccfSSadaf Ebrahimi }
5643*b7893ccfSSadaf Ebrahimi
PreCallValidateQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)5644*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueuePresentKHR(
5645*b7893ccfSSadaf Ebrahimi VkQueue queue,
5646*b7893ccfSSadaf Ebrahimi const VkPresentInfoKHR* pPresentInfo) {
5647*b7893ccfSSadaf Ebrahimi bool skip = false;
5648*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkQueuePresentKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5649*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkQueuePresentKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5650*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkQueuePresentKHR", "pPresentInfo", "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR", pPresentInfo, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, true, "VUID-vkQueuePresentKHR-pPresentInfo-parameter", "VUID-VkPresentInfoKHR-sType-sType");
5651*b7893ccfSSadaf Ebrahimi if (pPresentInfo != NULL)
5652*b7893ccfSSadaf Ebrahimi {
5653*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPresentInfoKHR[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE };
5654*b7893ccfSSadaf Ebrahimi
5655*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkQueuePresentKHR", "pPresentInfo->pNext", "VkDeviceGroupPresentInfoKHR, VkDisplayPresentInfoKHR, VkPresentFrameTokenGGP, VkPresentRegionsKHR, VkPresentTimesInfoGOOGLE", pPresentInfo->pNext, ARRAY_SIZE(allowed_structs_VkPresentInfoKHR), allowed_structs_VkPresentInfoKHR, GeneratedVulkanHeaderVersion, "VUID-VkPresentInfoKHR-pNext-pNext");
5656*b7893ccfSSadaf Ebrahimi
5657*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueuePresentKHR", "pPresentInfo->waitSemaphoreCount", "pPresentInfo->pWaitSemaphores", pPresentInfo->waitSemaphoreCount, &pPresentInfo->pWaitSemaphores, false, true, kVUIDUndefined, "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter");
5658*b7893ccfSSadaf Ebrahimi
5659*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkQueuePresentKHR", "pPresentInfo->swapchainCount", "pPresentInfo->pSwapchains", pPresentInfo->swapchainCount, pPresentInfo->pSwapchains, true, true);
5660*b7893ccfSSadaf Ebrahimi
5661*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueuePresentKHR", "pPresentInfo->swapchainCount", "pPresentInfo->pImageIndices", pPresentInfo->swapchainCount, &pPresentInfo->pImageIndices, true, true, "VUID-VkPresentInfoKHR-swapchainCount-arraylength", "VUID-VkPresentInfoKHR-pImageIndices-parameter");
5662*b7893ccfSSadaf Ebrahimi
5663*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkQueuePresentKHR", "pPresentInfo->swapchainCount", "pPresentInfo->pResults", pPresentInfo->swapchainCount, &pPresentInfo->pResults, true, false, "VUID-VkPresentInfoKHR-swapchainCount-arraylength", "VUID-VkPresentInfoKHR-pResults-parameter");
5664*b7893ccfSSadaf Ebrahimi }
5665*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateQueuePresentKHR(queue, pPresentInfo);
5666*b7893ccfSSadaf Ebrahimi return skip;
5667*b7893ccfSSadaf Ebrahimi }
5668*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)5669*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceGroupPresentCapabilitiesKHR(
5670*b7893ccfSSadaf Ebrahimi VkDevice device,
5671*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
5672*b7893ccfSSadaf Ebrahimi bool skip = false;
5673*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetDeviceGroupPresentCapabilitiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5674*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetDeviceGroupPresentCapabilitiesKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5675*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDeviceGroupPresentCapabilitiesKHR", "pDeviceGroupPresentCapabilities", "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", pDeviceGroupPresentCapabilities, VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, true, "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter", "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType");
5676*b7893ccfSSadaf Ebrahimi if (pDeviceGroupPresentCapabilities != NULL)
5677*b7893ccfSSadaf Ebrahimi {
5678*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetDeviceGroupPresentCapabilitiesKHR", "pDeviceGroupPresentCapabilities->pNext", NULL, pDeviceGroupPresentCapabilities->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext");
5679*b7893ccfSSadaf Ebrahimi }
5680*b7893ccfSSadaf Ebrahimi return skip;
5681*b7893ccfSSadaf Ebrahimi }
5682*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)5683*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceGroupSurfacePresentModesKHR(
5684*b7893ccfSSadaf Ebrahimi VkDevice device,
5685*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5686*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentModeFlagsKHR* pModes) {
5687*b7893ccfSSadaf Ebrahimi bool skip = false;
5688*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetDeviceGroupSurfacePresentModesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5689*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetDeviceGroupSurfacePresentModesKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5690*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDeviceGroupSurfacePresentModesKHR", "surface", surface);
5691*b7893ccfSSadaf Ebrahimi return skip;
5692*b7893ccfSSadaf Ebrahimi }
5693*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)5694*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDevicePresentRectanglesKHR(
5695*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5696*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5697*b7893ccfSSadaf Ebrahimi uint32_t* pRectCount,
5698*b7893ccfSSadaf Ebrahimi VkRect2D* pRects) {
5699*b7893ccfSSadaf Ebrahimi bool skip = false;
5700*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDevicePresentRectanglesKHR", "surface", surface);
5701*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDevicePresentRectanglesKHR", "pRectCount", "pRects", pRectCount, &pRects, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter");
5702*b7893ccfSSadaf Ebrahimi return skip;
5703*b7893ccfSSadaf Ebrahimi }
5704*b7893ccfSSadaf Ebrahimi
PreCallValidateAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)5705*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAcquireNextImage2KHR(
5706*b7893ccfSSadaf Ebrahimi VkDevice device,
5707*b7893ccfSSadaf Ebrahimi const VkAcquireNextImageInfoKHR* pAcquireInfo,
5708*b7893ccfSSadaf Ebrahimi uint32_t* pImageIndex) {
5709*b7893ccfSSadaf Ebrahimi bool skip = false;
5710*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkAcquireNextImage2KHR", VK_KHR_SURFACE_EXTENSION_NAME);
5711*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkAcquireNextImage2KHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5712*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkAcquireNextImage2KHR", "pAcquireInfo", "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", pAcquireInfo, VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, true, "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter", "VUID-VkAcquireNextImageInfoKHR-sType-sType");
5713*b7893ccfSSadaf Ebrahimi if (pAcquireInfo != NULL)
5714*b7893ccfSSadaf Ebrahimi {
5715*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkAcquireNextImage2KHR", "pAcquireInfo->pNext", NULL, pAcquireInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAcquireNextImageInfoKHR-pNext-pNext");
5716*b7893ccfSSadaf Ebrahimi
5717*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAcquireNextImage2KHR", "pAcquireInfo->swapchain", pAcquireInfo->swapchain);
5718*b7893ccfSSadaf Ebrahimi }
5719*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAcquireNextImage2KHR", "pImageIndex", pImageIndex, "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter");
5720*b7893ccfSSadaf Ebrahimi return skip;
5721*b7893ccfSSadaf Ebrahimi }
5722*b7893ccfSSadaf Ebrahimi
5723*b7893ccfSSadaf Ebrahimi
5724*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)5725*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceDisplayPropertiesKHR(
5726*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5727*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
5728*b7893ccfSSadaf Ebrahimi VkDisplayPropertiesKHR* pProperties) {
5729*b7893ccfSSadaf Ebrahimi bool skip = false;
5730*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPropertiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5731*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPropertiesKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5732*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceDisplayPropertiesKHR", "pPropertyCount", "pProperties", pPropertyCount, &pProperties, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter");
5733*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
5734*b7893ccfSSadaf Ebrahimi {
5735*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
5736*b7893ccfSSadaf Ebrahimi {
5737*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5738*b7893ccfSSadaf Ebrahimi }
5739*b7893ccfSSadaf Ebrahimi }
5740*b7893ccfSSadaf Ebrahimi return skip;
5741*b7893ccfSSadaf Ebrahimi }
5742*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)5743*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceDisplayPlanePropertiesKHR(
5744*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5745*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
5746*b7893ccfSSadaf Ebrahimi VkDisplayPlanePropertiesKHR* pProperties) {
5747*b7893ccfSSadaf Ebrahimi bool skip = false;
5748*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPlanePropertiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5749*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPlanePropertiesKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5750*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceDisplayPlanePropertiesKHR", "pPropertyCount", "pProperties", pPropertyCount, &pProperties, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter");
5751*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
5752*b7893ccfSSadaf Ebrahimi {
5753*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
5754*b7893ccfSSadaf Ebrahimi {
5755*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5756*b7893ccfSSadaf Ebrahimi }
5757*b7893ccfSSadaf Ebrahimi }
5758*b7893ccfSSadaf Ebrahimi return skip;
5759*b7893ccfSSadaf Ebrahimi }
5760*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)5761*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDisplayPlaneSupportedDisplaysKHR(
5762*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5763*b7893ccfSSadaf Ebrahimi uint32_t planeIndex,
5764*b7893ccfSSadaf Ebrahimi uint32_t* pDisplayCount,
5765*b7893ccfSSadaf Ebrahimi VkDisplayKHR* pDisplays) {
5766*b7893ccfSSadaf Ebrahimi bool skip = false;
5767*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetDisplayPlaneSupportedDisplaysKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5768*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetDisplayPlaneSupportedDisplaysKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5769*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetDisplayPlaneSupportedDisplaysKHR", "pDisplayCount", "pDisplays", pDisplayCount, &pDisplays, true, false, false, kVUIDUndefined, "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter");
5770*b7893ccfSSadaf Ebrahimi return skip;
5771*b7893ccfSSadaf Ebrahimi }
5772*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)5773*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDisplayModePropertiesKHR(
5774*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5775*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
5776*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
5777*b7893ccfSSadaf Ebrahimi VkDisplayModePropertiesKHR* pProperties) {
5778*b7893ccfSSadaf Ebrahimi bool skip = false;
5779*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetDisplayModePropertiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5780*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetDisplayModePropertiesKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5781*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDisplayModePropertiesKHR", "display", display);
5782*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetDisplayModePropertiesKHR", "pPropertyCount", "pProperties", pPropertyCount, &pProperties, true, false, false, kVUIDUndefined, "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter");
5783*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
5784*b7893ccfSSadaf Ebrahimi {
5785*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
5786*b7893ccfSSadaf Ebrahimi {
5787*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5788*b7893ccfSSadaf Ebrahimi }
5789*b7893ccfSSadaf Ebrahimi }
5790*b7893ccfSSadaf Ebrahimi return skip;
5791*b7893ccfSSadaf Ebrahimi }
5792*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)5793*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDisplayModeKHR(
5794*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5795*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
5796*b7893ccfSSadaf Ebrahimi const VkDisplayModeCreateInfoKHR* pCreateInfo,
5797*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5798*b7893ccfSSadaf Ebrahimi VkDisplayModeKHR* pMode) {
5799*b7893ccfSSadaf Ebrahimi bool skip = false;
5800*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateDisplayModeKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5801*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkCreateDisplayModeKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5802*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateDisplayModeKHR", "display", display);
5803*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDisplayModeKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR, true, "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter", "VUID-VkDisplayModeCreateInfoKHR-sType-sType");
5804*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5805*b7893ccfSSadaf Ebrahimi {
5806*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDisplayModeKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext");
5807*b7893ccfSSadaf Ebrahimi
5808*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDisplayModeKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask");
5809*b7893ccfSSadaf Ebrahimi
5810*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5811*b7893ccfSSadaf Ebrahimi }
5812*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5813*b7893ccfSSadaf Ebrahimi {
5814*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5815*b7893ccfSSadaf Ebrahimi
5816*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5817*b7893ccfSSadaf Ebrahimi
5818*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5819*b7893ccfSSadaf Ebrahimi
5820*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5821*b7893ccfSSadaf Ebrahimi {
5822*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5823*b7893ccfSSadaf Ebrahimi
5824*b7893ccfSSadaf Ebrahimi }
5825*b7893ccfSSadaf Ebrahimi
5826*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5827*b7893ccfSSadaf Ebrahimi {
5828*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5829*b7893ccfSSadaf Ebrahimi
5830*b7893ccfSSadaf Ebrahimi }
5831*b7893ccfSSadaf Ebrahimi }
5832*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayModeKHR", "pMode", pMode, "VUID-vkCreateDisplayModeKHR-pMode-parameter");
5833*b7893ccfSSadaf Ebrahimi return skip;
5834*b7893ccfSSadaf Ebrahimi }
5835*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)5836*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDisplayPlaneCapabilitiesKHR(
5837*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5838*b7893ccfSSadaf Ebrahimi VkDisplayModeKHR mode,
5839*b7893ccfSSadaf Ebrahimi uint32_t planeIndex,
5840*b7893ccfSSadaf Ebrahimi VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
5841*b7893ccfSSadaf Ebrahimi bool skip = false;
5842*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetDisplayPlaneCapabilitiesKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5843*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetDisplayPlaneCapabilitiesKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5844*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDisplayPlaneCapabilitiesKHR", "mode", mode);
5845*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDisplayPlaneCapabilitiesKHR", "pCapabilities", pCapabilities, "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter");
5846*b7893ccfSSadaf Ebrahimi if (pCapabilities != NULL)
5847*b7893ccfSSadaf Ebrahimi {
5848*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5849*b7893ccfSSadaf Ebrahimi }
5850*b7893ccfSSadaf Ebrahimi return skip;
5851*b7893ccfSSadaf Ebrahimi }
5852*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5853*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDisplayPlaneSurfaceKHR(
5854*b7893ccfSSadaf Ebrahimi VkInstance instance,
5855*b7893ccfSSadaf Ebrahimi const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
5856*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5857*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
5858*b7893ccfSSadaf Ebrahimi bool skip = false;
5859*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateDisplayPlaneSurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5860*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkCreateDisplayPlaneSurfaceKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5861*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter", "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType");
5862*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5863*b7893ccfSSadaf Ebrahimi {
5864*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext");
5865*b7893ccfSSadaf Ebrahimi
5866*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask");
5867*b7893ccfSSadaf Ebrahimi
5868*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo->displayMode", pCreateInfo->displayMode);
5869*b7893ccfSSadaf Ebrahimi
5870*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo->transform", "VkSurfaceTransformFlagBitsKHR", AllVkSurfaceTransformFlagBitsKHR, pCreateInfo->transform, kRequiredSingleBit, "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter", "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter");
5871*b7893ccfSSadaf Ebrahimi
5872*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDisplayPlaneSurfaceKHR", "pCreateInfo->alphaMode", "VkDisplayPlaneAlphaFlagBitsKHR", AllVkDisplayPlaneAlphaFlagBitsKHR, pCreateInfo->alphaMode, kRequiredSingleBit, "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter", "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter");
5873*b7893ccfSSadaf Ebrahimi
5874*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5875*b7893ccfSSadaf Ebrahimi }
5876*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5877*b7893ccfSSadaf Ebrahimi {
5878*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5879*b7893ccfSSadaf Ebrahimi
5880*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5881*b7893ccfSSadaf Ebrahimi
5882*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5883*b7893ccfSSadaf Ebrahimi
5884*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5885*b7893ccfSSadaf Ebrahimi {
5886*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5887*b7893ccfSSadaf Ebrahimi
5888*b7893ccfSSadaf Ebrahimi }
5889*b7893ccfSSadaf Ebrahimi
5890*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5891*b7893ccfSSadaf Ebrahimi {
5892*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5893*b7893ccfSSadaf Ebrahimi
5894*b7893ccfSSadaf Ebrahimi }
5895*b7893ccfSSadaf Ebrahimi }
5896*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDisplayPlaneSurfaceKHR", "pSurface", pSurface, "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter");
5897*b7893ccfSSadaf Ebrahimi return skip;
5898*b7893ccfSSadaf Ebrahimi }
5899*b7893ccfSSadaf Ebrahimi
5900*b7893ccfSSadaf Ebrahimi
5901*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)5902*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSharedSwapchainsKHR(
5903*b7893ccfSSadaf Ebrahimi VkDevice device,
5904*b7893ccfSSadaf Ebrahimi uint32_t swapchainCount,
5905*b7893ccfSSadaf Ebrahimi const VkSwapchainCreateInfoKHR* pCreateInfos,
5906*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5907*b7893ccfSSadaf Ebrahimi VkSwapchainKHR* pSwapchains) {
5908*b7893ccfSSadaf Ebrahimi bool skip = false;
5909*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_display) skip |= OutputExtensionError("vkCreateSharedSwapchainsKHR", VK_KHR_DISPLAY_EXTENSION_NAME);
5910*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkCreateSharedSwapchainsKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
5911*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_display_swapchain) skip |= OutputExtensionError("vkCreateSharedSwapchainsKHR", VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME);
5912*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateSharedSwapchainsKHR", "swapchainCount", "pCreateInfos", "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", swapchainCount, pCreateInfos, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, true, true, "VUID-VkSwapchainCreateInfoKHR-sType-sType", "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter", "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength");
5913*b7893ccfSSadaf Ebrahimi if (pCreateInfos != NULL)
5914*b7893ccfSSadaf Ebrahimi {
5915*b7893ccfSSadaf Ebrahimi for (uint32_t swapchainIndex = 0; swapchainIndex < swapchainCount; ++swapchainIndex)
5916*b7893ccfSSadaf Ebrahimi {
5917*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSwapchainCreateInfoKHR[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD };
5918*b7893ccfSSadaf Ebrahimi
5919*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].pNext", ParameterName::IndexVector{ swapchainIndex }), "VkDeviceGroupSwapchainCreateInfoKHR, VkImageFormatListCreateInfoKHR, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, VkSwapchainDisplayNativeHdrCreateInfoAMD", pCreateInfos[swapchainIndex].pNext, ARRAY_SIZE(allowed_structs_VkSwapchainCreateInfoKHR), allowed_structs_VkSwapchainCreateInfoKHR, GeneratedVulkanHeaderVersion, "VUID-VkSwapchainCreateInfoKHR-pNext-pNext");
5920*b7893ccfSSadaf Ebrahimi
5921*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].flags", ParameterName::IndexVector{ swapchainIndex }), "VkSwapchainCreateFlagBitsKHR", AllVkSwapchainCreateFlagBitsKHR, pCreateInfos[swapchainIndex].flags, kOptionalFlags, "VUID-VkSwapchainCreateInfoKHR-flags-parameter");
5922*b7893ccfSSadaf Ebrahimi
5923*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].surface", ParameterName::IndexVector{ swapchainIndex }), pCreateInfos[swapchainIndex].surface);
5924*b7893ccfSSadaf Ebrahimi
5925*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].imageFormat", ParameterName::IndexVector{ swapchainIndex }), "VkFormat", AllVkFormatEnums, pCreateInfos[swapchainIndex].imageFormat, "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter");
5926*b7893ccfSSadaf Ebrahimi
5927*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].imageColorSpace", ParameterName::IndexVector{ swapchainIndex }), "VkColorSpaceKHR", AllVkColorSpaceKHREnums, pCreateInfos[swapchainIndex].imageColorSpace, "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter");
5928*b7893ccfSSadaf Ebrahimi
5929*b7893ccfSSadaf Ebrahimi // No xml-driven validation
5930*b7893ccfSSadaf Ebrahimi
5931*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].imageUsage", ParameterName::IndexVector{ swapchainIndex }), "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pCreateInfos[swapchainIndex].imageUsage, kRequiredFlags, "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter", "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask");
5932*b7893ccfSSadaf Ebrahimi
5933*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].imageSharingMode", ParameterName::IndexVector{ swapchainIndex }), "VkSharingMode", AllVkSharingModeEnums, pCreateInfos[swapchainIndex].imageSharingMode, "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter");
5934*b7893ccfSSadaf Ebrahimi
5935*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].preTransform", ParameterName::IndexVector{ swapchainIndex }), "VkSurfaceTransformFlagBitsKHR", AllVkSurfaceTransformFlagBitsKHR, pCreateInfos[swapchainIndex].preTransform, kRequiredSingleBit, "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter", "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter");
5936*b7893ccfSSadaf Ebrahimi
5937*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].compositeAlpha", ParameterName::IndexVector{ swapchainIndex }), "VkCompositeAlphaFlagBitsKHR", AllVkCompositeAlphaFlagBitsKHR, pCreateInfos[swapchainIndex].compositeAlpha, kRequiredSingleBit, "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter", "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter");
5938*b7893ccfSSadaf Ebrahimi
5939*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].presentMode", ParameterName::IndexVector{ swapchainIndex }), "VkPresentModeKHR", AllVkPresentModeKHREnums, pCreateInfos[swapchainIndex].presentMode, "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter");
5940*b7893ccfSSadaf Ebrahimi
5941*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSharedSwapchainsKHR", ParameterName("pCreateInfos[%i].clipped", ParameterName::IndexVector{ swapchainIndex }), pCreateInfos[swapchainIndex].clipped);
5942*b7893ccfSSadaf Ebrahimi }
5943*b7893ccfSSadaf Ebrahimi }
5944*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5945*b7893ccfSSadaf Ebrahimi {
5946*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSharedSwapchainsKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5947*b7893ccfSSadaf Ebrahimi
5948*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSharedSwapchainsKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5949*b7893ccfSSadaf Ebrahimi
5950*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSharedSwapchainsKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5951*b7893ccfSSadaf Ebrahimi
5952*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5953*b7893ccfSSadaf Ebrahimi {
5954*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSharedSwapchainsKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5955*b7893ccfSSadaf Ebrahimi
5956*b7893ccfSSadaf Ebrahimi }
5957*b7893ccfSSadaf Ebrahimi
5958*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
5959*b7893ccfSSadaf Ebrahimi {
5960*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSharedSwapchainsKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5961*b7893ccfSSadaf Ebrahimi
5962*b7893ccfSSadaf Ebrahimi }
5963*b7893ccfSSadaf Ebrahimi }
5964*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateSharedSwapchainsKHR", "swapchainCount", "pSwapchains", swapchainCount, &pSwapchains, true, true, "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength", "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter");
5965*b7893ccfSSadaf Ebrahimi return skip;
5966*b7893ccfSSadaf Ebrahimi }
5967*b7893ccfSSadaf Ebrahimi
5968*b7893ccfSSadaf Ebrahimi
5969*b7893ccfSSadaf Ebrahimi
5970*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR
5971*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5972*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateXlibSurfaceKHR(
5973*b7893ccfSSadaf Ebrahimi VkInstance instance,
5974*b7893ccfSSadaf Ebrahimi const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
5975*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5976*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
5977*b7893ccfSSadaf Ebrahimi bool skip = false;
5978*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateXlibSurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
5979*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_xlib_surface) skip |= OutputExtensionError("vkCreateXlibSurfaceKHR", VK_KHR_XLIB_SURFACE_EXTENSION_NAME);
5980*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateXlibSurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter", "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType");
5981*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
5982*b7893ccfSSadaf Ebrahimi {
5983*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateXlibSurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext");
5984*b7893ccfSSadaf Ebrahimi
5985*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateXlibSurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask");
5986*b7893ccfSSadaf Ebrahimi }
5987*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
5988*b7893ccfSSadaf Ebrahimi {
5989*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
5990*b7893ccfSSadaf Ebrahimi
5991*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
5992*b7893ccfSSadaf Ebrahimi
5993*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
5994*b7893ccfSSadaf Ebrahimi
5995*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
5996*b7893ccfSSadaf Ebrahimi {
5997*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
5998*b7893ccfSSadaf Ebrahimi
5999*b7893ccfSSadaf Ebrahimi }
6000*b7893ccfSSadaf Ebrahimi
6001*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6002*b7893ccfSSadaf Ebrahimi {
6003*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6004*b7893ccfSSadaf Ebrahimi
6005*b7893ccfSSadaf Ebrahimi }
6006*b7893ccfSSadaf Ebrahimi }
6007*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXlibSurfaceKHR", "pSurface", pSurface, "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter");
6008*b7893ccfSSadaf Ebrahimi return skip;
6009*b7893ccfSSadaf Ebrahimi }
6010*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)6011*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceXlibPresentationSupportKHR(
6012*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6013*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
6014*b7893ccfSSadaf Ebrahimi Display* dpy,
6015*b7893ccfSSadaf Ebrahimi VisualID visualID) {
6016*b7893ccfSSadaf Ebrahimi bool skip = false;
6017*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceXlibPresentationSupportKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6018*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_xlib_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceXlibPresentationSupportKHR", VK_KHR_XLIB_SURFACE_EXTENSION_NAME);
6019*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceXlibPresentationSupportKHR", "dpy", dpy, "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter");
6020*b7893ccfSSadaf Ebrahimi return skip;
6021*b7893ccfSSadaf Ebrahimi }
6022*b7893ccfSSadaf Ebrahimi
6023*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_KHR
6024*b7893ccfSSadaf Ebrahimi
6025*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR
6026*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6027*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateXcbSurfaceKHR(
6028*b7893ccfSSadaf Ebrahimi VkInstance instance,
6029*b7893ccfSSadaf Ebrahimi const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
6030*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6031*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
6032*b7893ccfSSadaf Ebrahimi bool skip = false;
6033*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateXcbSurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6034*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_xcb_surface) skip |= OutputExtensionError("vkCreateXcbSurfaceKHR", VK_KHR_XCB_SURFACE_EXTENSION_NAME);
6035*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateXcbSurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter", "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType");
6036*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6037*b7893ccfSSadaf Ebrahimi {
6038*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateXcbSurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext");
6039*b7893ccfSSadaf Ebrahimi
6040*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateXcbSurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask");
6041*b7893ccfSSadaf Ebrahimi }
6042*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6043*b7893ccfSSadaf Ebrahimi {
6044*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6045*b7893ccfSSadaf Ebrahimi
6046*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6047*b7893ccfSSadaf Ebrahimi
6048*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6049*b7893ccfSSadaf Ebrahimi
6050*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6051*b7893ccfSSadaf Ebrahimi {
6052*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6053*b7893ccfSSadaf Ebrahimi
6054*b7893ccfSSadaf Ebrahimi }
6055*b7893ccfSSadaf Ebrahimi
6056*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6057*b7893ccfSSadaf Ebrahimi {
6058*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6059*b7893ccfSSadaf Ebrahimi
6060*b7893ccfSSadaf Ebrahimi }
6061*b7893ccfSSadaf Ebrahimi }
6062*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateXcbSurfaceKHR", "pSurface", pSurface, "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter");
6063*b7893ccfSSadaf Ebrahimi return skip;
6064*b7893ccfSSadaf Ebrahimi }
6065*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)6066*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceXcbPresentationSupportKHR(
6067*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6068*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
6069*b7893ccfSSadaf Ebrahimi xcb_connection_t* connection,
6070*b7893ccfSSadaf Ebrahimi xcb_visualid_t visual_id) {
6071*b7893ccfSSadaf Ebrahimi bool skip = false;
6072*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceXcbPresentationSupportKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6073*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_xcb_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceXcbPresentationSupportKHR", VK_KHR_XCB_SURFACE_EXTENSION_NAME);
6074*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceXcbPresentationSupportKHR", "connection", connection, "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter");
6075*b7893ccfSSadaf Ebrahimi return skip;
6076*b7893ccfSSadaf Ebrahimi }
6077*b7893ccfSSadaf Ebrahimi
6078*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XCB_KHR
6079*b7893ccfSSadaf Ebrahimi
6080*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR
6081*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6082*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateWaylandSurfaceKHR(
6083*b7893ccfSSadaf Ebrahimi VkInstance instance,
6084*b7893ccfSSadaf Ebrahimi const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
6085*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6086*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
6087*b7893ccfSSadaf Ebrahimi bool skip = false;
6088*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateWaylandSurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6089*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_wayland_surface) skip |= OutputExtensionError("vkCreateWaylandSurfaceKHR", VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
6090*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateWaylandSurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter", "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType");
6091*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6092*b7893ccfSSadaf Ebrahimi {
6093*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateWaylandSurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext");
6094*b7893ccfSSadaf Ebrahimi
6095*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateWaylandSurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask");
6096*b7893ccfSSadaf Ebrahimi }
6097*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6098*b7893ccfSSadaf Ebrahimi {
6099*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6100*b7893ccfSSadaf Ebrahimi
6101*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6102*b7893ccfSSadaf Ebrahimi
6103*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6104*b7893ccfSSadaf Ebrahimi
6105*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6106*b7893ccfSSadaf Ebrahimi {
6107*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6108*b7893ccfSSadaf Ebrahimi
6109*b7893ccfSSadaf Ebrahimi }
6110*b7893ccfSSadaf Ebrahimi
6111*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6112*b7893ccfSSadaf Ebrahimi {
6113*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6114*b7893ccfSSadaf Ebrahimi
6115*b7893ccfSSadaf Ebrahimi }
6116*b7893ccfSSadaf Ebrahimi }
6117*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWaylandSurfaceKHR", "pSurface", pSurface, "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter");
6118*b7893ccfSSadaf Ebrahimi return skip;
6119*b7893ccfSSadaf Ebrahimi }
6120*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,struct wl_display * display)6121*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceWaylandPresentationSupportKHR(
6122*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6123*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
6124*b7893ccfSSadaf Ebrahimi struct wl_display* display) {
6125*b7893ccfSSadaf Ebrahimi bool skip = false;
6126*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceWaylandPresentationSupportKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6127*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_wayland_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceWaylandPresentationSupportKHR", VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
6128*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceWaylandPresentationSupportKHR", "display", display, "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter");
6129*b7893ccfSSadaf Ebrahimi return skip;
6130*b7893ccfSSadaf Ebrahimi }
6131*b7893ccfSSadaf Ebrahimi
6132*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WAYLAND_KHR
6133*b7893ccfSSadaf Ebrahimi
6134*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
6135*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6136*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateAndroidSurfaceKHR(
6137*b7893ccfSSadaf Ebrahimi VkInstance instance,
6138*b7893ccfSSadaf Ebrahimi const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
6139*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6140*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
6141*b7893ccfSSadaf Ebrahimi bool skip = false;
6142*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateAndroidSurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6143*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_android_surface) skip |= OutputExtensionError("vkCreateAndroidSurfaceKHR", VK_KHR_ANDROID_SURFACE_EXTENSION_NAME);
6144*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateAndroidSurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter", "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType");
6145*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6146*b7893ccfSSadaf Ebrahimi {
6147*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAndroidSurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext");
6148*b7893ccfSSadaf Ebrahimi
6149*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateAndroidSurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask");
6150*b7893ccfSSadaf Ebrahimi }
6151*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6152*b7893ccfSSadaf Ebrahimi {
6153*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6154*b7893ccfSSadaf Ebrahimi
6155*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6156*b7893ccfSSadaf Ebrahimi
6157*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6158*b7893ccfSSadaf Ebrahimi
6159*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6160*b7893ccfSSadaf Ebrahimi {
6161*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6162*b7893ccfSSadaf Ebrahimi
6163*b7893ccfSSadaf Ebrahimi }
6164*b7893ccfSSadaf Ebrahimi
6165*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6166*b7893ccfSSadaf Ebrahimi {
6167*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6168*b7893ccfSSadaf Ebrahimi
6169*b7893ccfSSadaf Ebrahimi }
6170*b7893ccfSSadaf Ebrahimi }
6171*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAndroidSurfaceKHR", "pSurface", pSurface, "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter");
6172*b7893ccfSSadaf Ebrahimi return skip;
6173*b7893ccfSSadaf Ebrahimi }
6174*b7893ccfSSadaf Ebrahimi
6175*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
6176*b7893ccfSSadaf Ebrahimi
6177*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6178*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateWin32SurfaceKHR(VkInstance instance,const VkWin32SurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6179*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateWin32SurfaceKHR(
6180*b7893ccfSSadaf Ebrahimi VkInstance instance,
6181*b7893ccfSSadaf Ebrahimi const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
6182*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6183*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
6184*b7893ccfSSadaf Ebrahimi bool skip = false;
6185*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateWin32SurfaceKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6186*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_win32_surface) skip |= OutputExtensionError("vkCreateWin32SurfaceKHR", VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
6187*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateWin32SurfaceKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", pCreateInfo, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR, true, "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter", "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType");
6188*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6189*b7893ccfSSadaf Ebrahimi {
6190*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateWin32SurfaceKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext");
6191*b7893ccfSSadaf Ebrahimi
6192*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateWin32SurfaceKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask");
6193*b7893ccfSSadaf Ebrahimi }
6194*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6195*b7893ccfSSadaf Ebrahimi {
6196*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6197*b7893ccfSSadaf Ebrahimi
6198*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6199*b7893ccfSSadaf Ebrahimi
6200*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6201*b7893ccfSSadaf Ebrahimi
6202*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6203*b7893ccfSSadaf Ebrahimi {
6204*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6205*b7893ccfSSadaf Ebrahimi
6206*b7893ccfSSadaf Ebrahimi }
6207*b7893ccfSSadaf Ebrahimi
6208*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6209*b7893ccfSSadaf Ebrahimi {
6210*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6211*b7893ccfSSadaf Ebrahimi
6212*b7893ccfSSadaf Ebrahimi }
6213*b7893ccfSSadaf Ebrahimi }
6214*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateWin32SurfaceKHR", "pSurface", pSurface, "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter");
6215*b7893ccfSSadaf Ebrahimi return skip;
6216*b7893ccfSSadaf Ebrahimi }
6217*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)6218*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceWin32PresentationSupportKHR(
6219*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6220*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex) {
6221*b7893ccfSSadaf Ebrahimi bool skip = false;
6222*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceWin32PresentationSupportKHR", VK_KHR_SURFACE_EXTENSION_NAME);
6223*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_win32_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceWin32PresentationSupportKHR", VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
6224*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6225*b7893ccfSSadaf Ebrahimi return skip;
6226*b7893ccfSSadaf Ebrahimi }
6227*b7893ccfSSadaf Ebrahimi
6228*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6229*b7893ccfSSadaf Ebrahimi
6230*b7893ccfSSadaf Ebrahimi
6231*b7893ccfSSadaf Ebrahimi
6232*b7893ccfSSadaf Ebrahimi
6233*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)6234*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFeatures2KHR(
6235*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6236*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures2* pFeatures) {
6237*b7893ccfSSadaf Ebrahimi bool skip = false;
6238*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceFeatures2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6239*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceFeatures2KHR", "pFeatures", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", pFeatures, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, true, "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter", "VUID-VkPhysicalDeviceFeatures2-sType-sType");
6240*b7893ccfSSadaf Ebrahimi return skip;
6241*b7893ccfSSadaf Ebrahimi }
6242*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)6243*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceProperties2KHR(
6244*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6245*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties2* pProperties) {
6246*b7893ccfSSadaf Ebrahimi bool skip = false;
6247*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6248*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceProperties2KHR", "pProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", pProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter", "VUID-VkPhysicalDeviceProperties2-sType-sType");
6249*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
6250*b7893ccfSSadaf Ebrahimi {
6251*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6252*b7893ccfSSadaf Ebrahimi }
6253*b7893ccfSSadaf Ebrahimi return skip;
6254*b7893ccfSSadaf Ebrahimi }
6255*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)6256*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceFormatProperties2KHR(
6257*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6258*b7893ccfSSadaf Ebrahimi VkFormat format,
6259*b7893ccfSSadaf Ebrahimi VkFormatProperties2* pFormatProperties) {
6260*b7893ccfSSadaf Ebrahimi bool skip = false;
6261*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceFormatProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6262*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceFormatProperties2KHR", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter");
6263*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceFormatProperties2KHR", "pFormatProperties", "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2", pFormatProperties, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter", "VUID-VkFormatProperties2-sType-sType");
6264*b7893ccfSSadaf Ebrahimi if (pFormatProperties != NULL)
6265*b7893ccfSSadaf Ebrahimi {
6266*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6267*b7893ccfSSadaf Ebrahimi }
6268*b7893ccfSSadaf Ebrahimi return skip;
6269*b7893ccfSSadaf Ebrahimi }
6270*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)6271*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceImageFormatProperties2KHR(
6272*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6273*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
6274*b7893ccfSSadaf Ebrahimi VkImageFormatProperties2* pImageFormatProperties) {
6275*b7893ccfSSadaf Ebrahimi bool skip = false;
6276*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceImageFormatProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6277*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", pImageFormatInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, true, "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter", "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType");
6278*b7893ccfSSadaf Ebrahimi if (pImageFormatInfo != NULL)
6279*b7893ccfSSadaf Ebrahimi {
6280*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPhysicalDeviceImageFormatInfo2[] = { VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT };
6281*b7893ccfSSadaf Ebrahimi
6282*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->pNext", "VkImageFormatListCreateInfoKHR, VkImageStencilUsageCreateInfoEXT, VkPhysicalDeviceExternalImageFormatInfo, VkPhysicalDeviceImageDrmFormatModifierInfoEXT, VkPhysicalDeviceImageViewImageFormatInfoEXT", pImageFormatInfo->pNext, ARRAY_SIZE(allowed_structs_VkPhysicalDeviceImageFormatInfo2), allowed_structs_VkPhysicalDeviceImageFormatInfo2, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext");
6283*b7893ccfSSadaf Ebrahimi
6284*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->format", "VkFormat", AllVkFormatEnums, pImageFormatInfo->format, "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter");
6285*b7893ccfSSadaf Ebrahimi
6286*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->type", "VkImageType", AllVkImageTypeEnums, pImageFormatInfo->type, "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter");
6287*b7893ccfSSadaf Ebrahimi
6288*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->tiling", "VkImageTiling", AllVkImageTilingEnums, pImageFormatInfo->tiling, "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter");
6289*b7893ccfSSadaf Ebrahimi
6290*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pImageFormatInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter", "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask");
6291*b7893ccfSSadaf Ebrahimi
6292*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatInfo->flags", "VkImageCreateFlagBits", AllVkImageCreateFlagBits, pImageFormatInfo->flags, kOptionalFlags, "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter");
6293*b7893ccfSSadaf Ebrahimi }
6294*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceImageFormatProperties2KHR", "pImageFormatProperties", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", pImageFormatProperties, VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter", "VUID-VkImageFormatProperties2-sType-sType");
6295*b7893ccfSSadaf Ebrahimi if (pImageFormatProperties != NULL)
6296*b7893ccfSSadaf Ebrahimi {
6297*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6298*b7893ccfSSadaf Ebrahimi }
6299*b7893ccfSSadaf Ebrahimi return skip;
6300*b7893ccfSSadaf Ebrahimi }
6301*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)6302*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceQueueFamilyProperties2KHR(
6303*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6304*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
6305*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties2* pQueueFamilyProperties) {
6306*b7893ccfSSadaf Ebrahimi bool skip = false;
6307*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceQueueFamilyProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6308*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceQueueFamilyProperties2KHR", "pQueueFamilyPropertyCount", "pQueueFamilyProperties", "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", pQueueFamilyPropertyCount, pQueueFamilyProperties, VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, true, false, false, "VUID-VkQueueFamilyProperties2-sType-sType", "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter", kVUIDUndefined);
6309*b7893ccfSSadaf Ebrahimi if (pQueueFamilyProperties != NULL)
6310*b7893ccfSSadaf Ebrahimi {
6311*b7893ccfSSadaf Ebrahimi for (uint32_t pQueueFamilyPropertyIndex = 0; pQueueFamilyPropertyIndex < *pQueueFamilyPropertyCount; ++pQueueFamilyPropertyIndex)
6312*b7893ccfSSadaf Ebrahimi {
6313*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6314*b7893ccfSSadaf Ebrahimi }
6315*b7893ccfSSadaf Ebrahimi }
6316*b7893ccfSSadaf Ebrahimi return skip;
6317*b7893ccfSSadaf Ebrahimi }
6318*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)6319*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceMemoryProperties2KHR(
6320*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6321*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
6322*b7893ccfSSadaf Ebrahimi bool skip = false;
6323*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceMemoryProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6324*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceMemoryProperties2KHR", "pMemoryProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", pMemoryProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, true, "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter", "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType");
6325*b7893ccfSSadaf Ebrahimi if (pMemoryProperties != NULL)
6326*b7893ccfSSadaf Ebrahimi {
6327*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6328*b7893ccfSSadaf Ebrahimi }
6329*b7893ccfSSadaf Ebrahimi return skip;
6330*b7893ccfSSadaf Ebrahimi }
6331*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)6332*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSparseImageFormatProperties2KHR(
6333*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6334*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
6335*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
6336*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties2* pProperties) {
6337*b7893ccfSSadaf Ebrahimi bool skip = false;
6338*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6339*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2", pFormatInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, true, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType");
6340*b7893ccfSSadaf Ebrahimi if (pFormatInfo != NULL)
6341*b7893ccfSSadaf Ebrahimi {
6342*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->pNext", NULL, pFormatInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext");
6343*b7893ccfSSadaf Ebrahimi
6344*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->format", "VkFormat", AllVkFormatEnums, pFormatInfo->format, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter");
6345*b7893ccfSSadaf Ebrahimi
6346*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->type", "VkImageType", AllVkImageTypeEnums, pFormatInfo->type, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter");
6347*b7893ccfSSadaf Ebrahimi
6348*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->samples", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pFormatInfo->samples, kRequiredSingleBit, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter");
6349*b7893ccfSSadaf Ebrahimi
6350*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, pFormatInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter", "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask");
6351*b7893ccfSSadaf Ebrahimi
6352*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pFormatInfo->tiling", "VkImageTiling", AllVkImageTilingEnums, pFormatInfo->tiling, "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter");
6353*b7893ccfSSadaf Ebrahimi }
6354*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, true, false, false, "VUID-VkSparseImageFormatProperties2-sType-sType", "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter", kVUIDUndefined);
6355*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
6356*b7893ccfSSadaf Ebrahimi {
6357*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
6358*b7893ccfSSadaf Ebrahimi {
6359*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6360*b7893ccfSSadaf Ebrahimi }
6361*b7893ccfSSadaf Ebrahimi }
6362*b7893ccfSSadaf Ebrahimi return skip;
6363*b7893ccfSSadaf Ebrahimi }
6364*b7893ccfSSadaf Ebrahimi
6365*b7893ccfSSadaf Ebrahimi
6366*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)6367*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDeviceGroupPeerMemoryFeaturesKHR(
6368*b7893ccfSSadaf Ebrahimi VkDevice device,
6369*b7893ccfSSadaf Ebrahimi uint32_t heapIndex,
6370*b7893ccfSSadaf Ebrahimi uint32_t localDeviceIndex,
6371*b7893ccfSSadaf Ebrahimi uint32_t remoteDeviceIndex,
6372*b7893ccfSSadaf Ebrahimi VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
6373*b7893ccfSSadaf Ebrahimi bool skip = false;
6374*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group_creation) skip |= OutputExtensionError("vkGetDeviceGroupPeerMemoryFeaturesKHR", VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME);
6375*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group) skip |= OutputExtensionError("vkGetDeviceGroupPeerMemoryFeaturesKHR", VK_KHR_DEVICE_GROUP_EXTENSION_NAME);
6376*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetDeviceGroupPeerMemoryFeaturesKHR", "pPeerMemoryFeatures", pPeerMemoryFeatures, "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter");
6377*b7893ccfSSadaf Ebrahimi return skip;
6378*b7893ccfSSadaf Ebrahimi }
6379*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)6380*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetDeviceMaskKHR(
6381*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6382*b7893ccfSSadaf Ebrahimi uint32_t deviceMask) {
6383*b7893ccfSSadaf Ebrahimi bool skip = false;
6384*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group_creation) skip |= OutputExtensionError("vkCmdSetDeviceMaskKHR", VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME);
6385*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group) skip |= OutputExtensionError("vkCmdSetDeviceMaskKHR", VK_KHR_DEVICE_GROUP_EXTENSION_NAME);
6386*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6387*b7893ccfSSadaf Ebrahimi return skip;
6388*b7893ccfSSadaf Ebrahimi }
6389*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)6390*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDispatchBaseKHR(
6391*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6392*b7893ccfSSadaf Ebrahimi uint32_t baseGroupX,
6393*b7893ccfSSadaf Ebrahimi uint32_t baseGroupY,
6394*b7893ccfSSadaf Ebrahimi uint32_t baseGroupZ,
6395*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
6396*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
6397*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ) {
6398*b7893ccfSSadaf Ebrahimi bool skip = false;
6399*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group_creation) skip |= OutputExtensionError("vkCmdDispatchBaseKHR", VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME);
6400*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_device_group) skip |= OutputExtensionError("vkCmdDispatchBaseKHR", VK_KHR_DEVICE_GROUP_EXTENSION_NAME);
6401*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6402*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
6403*b7893ccfSSadaf Ebrahimi return skip;
6404*b7893ccfSSadaf Ebrahimi }
6405*b7893ccfSSadaf Ebrahimi
6406*b7893ccfSSadaf Ebrahimi
6407*b7893ccfSSadaf Ebrahimi
6408*b7893ccfSSadaf Ebrahimi
6409*b7893ccfSSadaf Ebrahimi
PreCallValidateTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)6410*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateTrimCommandPoolKHR(
6411*b7893ccfSSadaf Ebrahimi VkDevice device,
6412*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
6413*b7893ccfSSadaf Ebrahimi VkCommandPoolTrimFlags flags) {
6414*b7893ccfSSadaf Ebrahimi bool skip = false;
6415*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance1) skip |= OutputExtensionError("vkTrimCommandPoolKHR", VK_KHR_MAINTENANCE1_EXTENSION_NAME);
6416*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkTrimCommandPoolKHR", "commandPool", commandPool);
6417*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkTrimCommandPoolKHR", "flags", flags, "VUID-vkTrimCommandPool-flags-zerobitmask");
6418*b7893ccfSSadaf Ebrahimi return skip;
6419*b7893ccfSSadaf Ebrahimi }
6420*b7893ccfSSadaf Ebrahimi
6421*b7893ccfSSadaf Ebrahimi
6422*b7893ccfSSadaf Ebrahimi
PreCallValidateEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)6423*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateEnumeratePhysicalDeviceGroupsKHR(
6424*b7893ccfSSadaf Ebrahimi VkInstance instance,
6425*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceGroupCount,
6426*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
6427*b7893ccfSSadaf Ebrahimi bool skip = false;
6428*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_device_group_creation) skip |= OutputExtensionError("vkEnumeratePhysicalDeviceGroupsKHR", VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME);
6429*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkEnumeratePhysicalDeviceGroupsKHR", "pPhysicalDeviceGroupCount", "pPhysicalDeviceGroupProperties", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, true, false, false, "VUID-VkPhysicalDeviceGroupProperties-sType-sType", "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter", kVUIDUndefined);
6430*b7893ccfSSadaf Ebrahimi if (pPhysicalDeviceGroupProperties != NULL)
6431*b7893ccfSSadaf Ebrahimi {
6432*b7893ccfSSadaf Ebrahimi for (uint32_t pPhysicalDeviceGroupIndex = 0; pPhysicalDeviceGroupIndex < *pPhysicalDeviceGroupCount; ++pPhysicalDeviceGroupIndex)
6433*b7893ccfSSadaf Ebrahimi {
6434*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6435*b7893ccfSSadaf Ebrahimi }
6436*b7893ccfSSadaf Ebrahimi }
6437*b7893ccfSSadaf Ebrahimi return skip;
6438*b7893ccfSSadaf Ebrahimi }
6439*b7893ccfSSadaf Ebrahimi
6440*b7893ccfSSadaf Ebrahimi
6441*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)6442*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalBufferPropertiesKHR(
6443*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6444*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
6445*b7893ccfSSadaf Ebrahimi VkExternalBufferProperties* pExternalBufferProperties) {
6446*b7893ccfSSadaf Ebrahimi bool skip = false;
6447*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalBufferPropertiesKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6448*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_external_memory_capabilities) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalBufferPropertiesKHR", VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
6449*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", pExternalBufferInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, true, "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType");
6450*b7893ccfSSadaf Ebrahimi if (pExternalBufferInfo != NULL)
6451*b7893ccfSSadaf Ebrahimi {
6452*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferInfo->pNext", NULL, pExternalBufferInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext");
6453*b7893ccfSSadaf Ebrahimi
6454*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferInfo->flags", "VkBufferCreateFlagBits", AllVkBufferCreateFlagBits, pExternalBufferInfo->flags, kOptionalFlags, "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter");
6455*b7893ccfSSadaf Ebrahimi
6456*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferInfo->usage", "VkBufferUsageFlagBits", AllVkBufferUsageFlagBits, pExternalBufferInfo->usage, kRequiredFlags, "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask");
6457*b7893ccfSSadaf Ebrahimi
6458*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferInfo->handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, pExternalBufferInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter");
6459*b7893ccfSSadaf Ebrahimi }
6460*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalBufferPropertiesKHR", "pExternalBufferProperties", "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", pExternalBufferProperties, VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter", "VUID-VkExternalBufferProperties-sType-sType");
6461*b7893ccfSSadaf Ebrahimi if (pExternalBufferProperties != NULL)
6462*b7893ccfSSadaf Ebrahimi {
6463*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6464*b7893ccfSSadaf Ebrahimi }
6465*b7893ccfSSadaf Ebrahimi return skip;
6466*b7893ccfSSadaf Ebrahimi }
6467*b7893ccfSSadaf Ebrahimi
6468*b7893ccfSSadaf Ebrahimi
6469*b7893ccfSSadaf Ebrahimi
6470*b7893ccfSSadaf Ebrahimi
6471*b7893ccfSSadaf Ebrahimi
6472*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6473*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)6474*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryWin32HandleKHR(
6475*b7893ccfSSadaf Ebrahimi VkDevice device,
6476*b7893ccfSSadaf Ebrahimi const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
6477*b7893ccfSSadaf Ebrahimi HANDLE* pHandle) {
6478*b7893ccfSSadaf Ebrahimi bool skip = false;
6479*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryWin32HandleKHR", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
6480*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory_win32) skip |= OutputExtensionError("vkGetMemoryWin32HandleKHR", VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME);
6481*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryWin32HandleKHR", "pGetWin32HandleInfo", "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR", pGetWin32HandleInfo, VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR, true, "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter", "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType");
6482*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo != NULL)
6483*b7893ccfSSadaf Ebrahimi {
6484*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetMemoryWin32HandleKHR", "pGetWin32HandleInfo->pNext", NULL, pGetWin32HandleInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext");
6485*b7893ccfSSadaf Ebrahimi
6486*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetMemoryWin32HandleKHR", "pGetWin32HandleInfo->memory", pGetWin32HandleInfo->memory);
6487*b7893ccfSSadaf Ebrahimi
6488*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryWin32HandleKHR", "pGetWin32HandleInfo->handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, pGetWin32HandleInfo->handleType, kRequiredSingleBit, "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter", "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter");
6489*b7893ccfSSadaf Ebrahimi }
6490*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetMemoryWin32HandleKHR", "pHandle", pHandle, "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter");
6491*b7893ccfSSadaf Ebrahimi return skip;
6492*b7893ccfSSadaf Ebrahimi }
6493*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)6494*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryWin32HandlePropertiesKHR(
6495*b7893ccfSSadaf Ebrahimi VkDevice device,
6496*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
6497*b7893ccfSSadaf Ebrahimi HANDLE handle,
6498*b7893ccfSSadaf Ebrahimi VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
6499*b7893ccfSSadaf Ebrahimi bool skip = false;
6500*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryWin32HandlePropertiesKHR", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
6501*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory_win32) skip |= OutputExtensionError("vkGetMemoryWin32HandlePropertiesKHR", VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME);
6502*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryWin32HandlePropertiesKHR", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, handleType, kRequiredSingleBit, "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter", "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter");
6503*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryWin32HandlePropertiesKHR", "pMemoryWin32HandleProperties", "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR", pMemoryWin32HandleProperties, VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR, true, "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter", "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType");
6504*b7893ccfSSadaf Ebrahimi if (pMemoryWin32HandleProperties != NULL)
6505*b7893ccfSSadaf Ebrahimi {
6506*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6507*b7893ccfSSadaf Ebrahimi }
6508*b7893ccfSSadaf Ebrahimi return skip;
6509*b7893ccfSSadaf Ebrahimi }
6510*b7893ccfSSadaf Ebrahimi
6511*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6512*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)6513*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryFdKHR(
6514*b7893ccfSSadaf Ebrahimi VkDevice device,
6515*b7893ccfSSadaf Ebrahimi const VkMemoryGetFdInfoKHR* pGetFdInfo,
6516*b7893ccfSSadaf Ebrahimi int* pFd) {
6517*b7893ccfSSadaf Ebrahimi bool skip = false;
6518*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryFdKHR", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
6519*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory_fd) skip |= OutputExtensionError("vkGetMemoryFdKHR", VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
6520*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryFdKHR", "pGetFdInfo", "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", pGetFdInfo, VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, true, "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter", "VUID-VkMemoryGetFdInfoKHR-sType-sType");
6521*b7893ccfSSadaf Ebrahimi if (pGetFdInfo != NULL)
6522*b7893ccfSSadaf Ebrahimi {
6523*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetMemoryFdKHR", "pGetFdInfo->pNext", NULL, pGetFdInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMemoryGetFdInfoKHR-pNext-pNext");
6524*b7893ccfSSadaf Ebrahimi
6525*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetMemoryFdKHR", "pGetFdInfo->memory", pGetFdInfo->memory);
6526*b7893ccfSSadaf Ebrahimi
6527*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryFdKHR", "pGetFdInfo->handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, pGetFdInfo->handleType, kRequiredSingleBit, "VUID-VkMemoryGetFdInfoKHR-handleType-parameter", "VUID-VkMemoryGetFdInfoKHR-handleType-parameter");
6528*b7893ccfSSadaf Ebrahimi }
6529*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetMemoryFdKHR", "pFd", pFd, "VUID-vkGetMemoryFdKHR-pFd-parameter");
6530*b7893ccfSSadaf Ebrahimi return skip;
6531*b7893ccfSSadaf Ebrahimi }
6532*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)6533*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryFdPropertiesKHR(
6534*b7893ccfSSadaf Ebrahimi VkDevice device,
6535*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
6536*b7893ccfSSadaf Ebrahimi int fd,
6537*b7893ccfSSadaf Ebrahimi VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
6538*b7893ccfSSadaf Ebrahimi bool skip = false;
6539*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryFdPropertiesKHR", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
6540*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory_fd) skip |= OutputExtensionError("vkGetMemoryFdPropertiesKHR", VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
6541*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryFdPropertiesKHR", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, handleType, kRequiredSingleBit, "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter", "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter");
6542*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryFdPropertiesKHR", "pMemoryFdProperties", "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR", pMemoryFdProperties, VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, true, "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter", "VUID-VkMemoryFdPropertiesKHR-sType-sType");
6543*b7893ccfSSadaf Ebrahimi if (pMemoryFdProperties != NULL)
6544*b7893ccfSSadaf Ebrahimi {
6545*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6546*b7893ccfSSadaf Ebrahimi }
6547*b7893ccfSSadaf Ebrahimi return skip;
6548*b7893ccfSSadaf Ebrahimi }
6549*b7893ccfSSadaf Ebrahimi
6550*b7893ccfSSadaf Ebrahimi
6551*b7893ccfSSadaf Ebrahimi
6552*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6553*b7893ccfSSadaf Ebrahimi
6554*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6555*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)6556*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalSemaphorePropertiesKHR(
6557*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6558*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
6559*b7893ccfSSadaf Ebrahimi VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
6560*b7893ccfSSadaf Ebrahimi bool skip = false;
6561*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6562*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_external_semaphore_capabilities) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME);
6563*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", "pExternalSemaphoreInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", pExternalSemaphoreInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, true, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter", "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType");
6564*b7893ccfSSadaf Ebrahimi if (pExternalSemaphoreInfo != NULL)
6565*b7893ccfSSadaf Ebrahimi {
6566*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", "pExternalSemaphoreInfo->pNext", NULL, pExternalSemaphoreInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext");
6567*b7893ccfSSadaf Ebrahimi
6568*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", "pExternalSemaphoreInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pExternalSemaphoreInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter");
6569*b7893ccfSSadaf Ebrahimi }
6570*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", "pExternalSemaphoreProperties", "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", pExternalSemaphoreProperties, VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter", "VUID-VkExternalSemaphoreProperties-sType-sType");
6571*b7893ccfSSadaf Ebrahimi if (pExternalSemaphoreProperties != NULL)
6572*b7893ccfSSadaf Ebrahimi {
6573*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6574*b7893ccfSSadaf Ebrahimi }
6575*b7893ccfSSadaf Ebrahimi return skip;
6576*b7893ccfSSadaf Ebrahimi }
6577*b7893ccfSSadaf Ebrahimi
6578*b7893ccfSSadaf Ebrahimi
6579*b7893ccfSSadaf Ebrahimi
6580*b7893ccfSSadaf Ebrahimi
6581*b7893ccfSSadaf Ebrahimi
6582*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6583*b7893ccfSSadaf Ebrahimi
PreCallValidateImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)6584*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateImportSemaphoreWin32HandleKHR(
6585*b7893ccfSSadaf Ebrahimi VkDevice device,
6586*b7893ccfSSadaf Ebrahimi const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
6587*b7893ccfSSadaf Ebrahimi bool skip = false;
6588*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore) skip |= OutputExtensionError("vkImportSemaphoreWin32HandleKHR", VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
6589*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore_win32) skip |= OutputExtensionError("vkImportSemaphoreWin32HandleKHR", VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME);
6590*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkImportSemaphoreWin32HandleKHR", "pImportSemaphoreWin32HandleInfo", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pImportSemaphoreWin32HandleInfo, VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, true, "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter", "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType");
6591*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreWin32HandleInfo != NULL)
6592*b7893ccfSSadaf Ebrahimi {
6593*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkImportSemaphoreWin32HandleKHR", "pImportSemaphoreWin32HandleInfo->pNext", NULL, pImportSemaphoreWin32HandleInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext");
6594*b7893ccfSSadaf Ebrahimi
6595*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkImportSemaphoreWin32HandleKHR", "pImportSemaphoreWin32HandleInfo->semaphore", pImportSemaphoreWin32HandleInfo->semaphore);
6596*b7893ccfSSadaf Ebrahimi
6597*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportSemaphoreWin32HandleKHR", "pImportSemaphoreWin32HandleInfo->flags", "VkSemaphoreImportFlagBits", AllVkSemaphoreImportFlagBits, pImportSemaphoreWin32HandleInfo->flags, kOptionalFlags, "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter");
6598*b7893ccfSSadaf Ebrahimi
6599*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportSemaphoreWin32HandleKHR", "pImportSemaphoreWin32HandleInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pImportSemaphoreWin32HandleInfo->handleType, kOptionalSingleBit, "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter");
6600*b7893ccfSSadaf Ebrahimi }
6601*b7893ccfSSadaf Ebrahimi return skip;
6602*b7893ccfSSadaf Ebrahimi }
6603*b7893ccfSSadaf Ebrahimi
PreCallValidateGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)6604*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetSemaphoreWin32HandleKHR(
6605*b7893ccfSSadaf Ebrahimi VkDevice device,
6606*b7893ccfSSadaf Ebrahimi const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
6607*b7893ccfSSadaf Ebrahimi HANDLE* pHandle) {
6608*b7893ccfSSadaf Ebrahimi bool skip = false;
6609*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore) skip |= OutputExtensionError("vkGetSemaphoreWin32HandleKHR", VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
6610*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore_win32) skip |= OutputExtensionError("vkGetSemaphoreWin32HandleKHR", VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME);
6611*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetSemaphoreWin32HandleKHR", "pGetWin32HandleInfo", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR", pGetWin32HandleInfo, VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR, true, "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter", "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType");
6612*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo != NULL)
6613*b7893ccfSSadaf Ebrahimi {
6614*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetSemaphoreWin32HandleKHR", "pGetWin32HandleInfo->pNext", NULL, pGetWin32HandleInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext");
6615*b7893ccfSSadaf Ebrahimi
6616*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetSemaphoreWin32HandleKHR", "pGetWin32HandleInfo->semaphore", pGetWin32HandleInfo->semaphore);
6617*b7893ccfSSadaf Ebrahimi
6618*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetSemaphoreWin32HandleKHR", "pGetWin32HandleInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pGetWin32HandleInfo->handleType, kRequiredSingleBit, "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter", "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter");
6619*b7893ccfSSadaf Ebrahimi }
6620*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetSemaphoreWin32HandleKHR", "pHandle", pHandle, "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter");
6621*b7893ccfSSadaf Ebrahimi return skip;
6622*b7893ccfSSadaf Ebrahimi }
6623*b7893ccfSSadaf Ebrahimi
6624*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6625*b7893ccfSSadaf Ebrahimi
PreCallValidateImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)6626*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateImportSemaphoreFdKHR(
6627*b7893ccfSSadaf Ebrahimi VkDevice device,
6628*b7893ccfSSadaf Ebrahimi const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
6629*b7893ccfSSadaf Ebrahimi bool skip = false;
6630*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore) skip |= OutputExtensionError("vkImportSemaphoreFdKHR", VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
6631*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore_fd) skip |= OutputExtensionError("vkImportSemaphoreFdKHR", VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
6632*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkImportSemaphoreFdKHR", "pImportSemaphoreFdInfo", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR", pImportSemaphoreFdInfo, VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, true, "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter", "VUID-VkImportSemaphoreFdInfoKHR-sType-sType");
6633*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreFdInfo != NULL)
6634*b7893ccfSSadaf Ebrahimi {
6635*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkImportSemaphoreFdKHR", "pImportSemaphoreFdInfo->pNext", NULL, pImportSemaphoreFdInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext");
6636*b7893ccfSSadaf Ebrahimi
6637*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkImportSemaphoreFdKHR", "pImportSemaphoreFdInfo->semaphore", pImportSemaphoreFdInfo->semaphore);
6638*b7893ccfSSadaf Ebrahimi
6639*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportSemaphoreFdKHR", "pImportSemaphoreFdInfo->flags", "VkSemaphoreImportFlagBits", AllVkSemaphoreImportFlagBits, pImportSemaphoreFdInfo->flags, kOptionalFlags, "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter");
6640*b7893ccfSSadaf Ebrahimi
6641*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportSemaphoreFdKHR", "pImportSemaphoreFdInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pImportSemaphoreFdInfo->handleType, kRequiredSingleBit, "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter", "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter");
6642*b7893ccfSSadaf Ebrahimi }
6643*b7893ccfSSadaf Ebrahimi return skip;
6644*b7893ccfSSadaf Ebrahimi }
6645*b7893ccfSSadaf Ebrahimi
PreCallValidateGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)6646*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetSemaphoreFdKHR(
6647*b7893ccfSSadaf Ebrahimi VkDevice device,
6648*b7893ccfSSadaf Ebrahimi const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
6649*b7893ccfSSadaf Ebrahimi int* pFd) {
6650*b7893ccfSSadaf Ebrahimi bool skip = false;
6651*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore) skip |= OutputExtensionError("vkGetSemaphoreFdKHR", VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
6652*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_semaphore_fd) skip |= OutputExtensionError("vkGetSemaphoreFdKHR", VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
6653*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetSemaphoreFdKHR", "pGetFdInfo", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR", pGetFdInfo, VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, true, "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter", "VUID-VkSemaphoreGetFdInfoKHR-sType-sType");
6654*b7893ccfSSadaf Ebrahimi if (pGetFdInfo != NULL)
6655*b7893ccfSSadaf Ebrahimi {
6656*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetSemaphoreFdKHR", "pGetFdInfo->pNext", NULL, pGetFdInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext");
6657*b7893ccfSSadaf Ebrahimi
6658*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetSemaphoreFdKHR", "pGetFdInfo->semaphore", pGetFdInfo->semaphore);
6659*b7893ccfSSadaf Ebrahimi
6660*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetSemaphoreFdKHR", "pGetFdInfo->handleType", "VkExternalSemaphoreHandleTypeFlagBits", AllVkExternalSemaphoreHandleTypeFlagBits, pGetFdInfo->handleType, kRequiredSingleBit, "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter", "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter");
6661*b7893ccfSSadaf Ebrahimi }
6662*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetSemaphoreFdKHR", "pFd", pFd, "VUID-vkGetSemaphoreFdKHR-pFd-parameter");
6663*b7893ccfSSadaf Ebrahimi return skip;
6664*b7893ccfSSadaf Ebrahimi }
6665*b7893ccfSSadaf Ebrahimi
6666*b7893ccfSSadaf Ebrahimi
6667*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)6668*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdPushDescriptorSetKHR(
6669*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6670*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
6671*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
6672*b7893ccfSSadaf Ebrahimi uint32_t set,
6673*b7893ccfSSadaf Ebrahimi uint32_t descriptorWriteCount,
6674*b7893ccfSSadaf Ebrahimi const VkWriteDescriptorSet* pDescriptorWrites) {
6675*b7893ccfSSadaf Ebrahimi bool skip = false;
6676*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdPushDescriptorSetKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6677*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_push_descriptor) skip |= OutputExtensionError("vkCmdPushDescriptorSetKHR", VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
6678*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdPushDescriptorSetKHR", "pipelineBindPoint", "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pipelineBindPoint, "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter");
6679*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPushDescriptorSetKHR", "layout", layout);
6680*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdPushDescriptorSetKHR", "descriptorWriteCount", "pDescriptorWrites", "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", descriptorWriteCount, pDescriptorWrites, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, true, true, "VUID-VkWriteDescriptorSet-sType-sType", "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter", "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength");
6681*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites != NULL)
6682*b7893ccfSSadaf Ebrahimi {
6683*b7893ccfSSadaf Ebrahimi for (uint32_t descriptorWriteIndex = 0; descriptorWriteIndex < descriptorWriteCount; ++descriptorWriteIndex)
6684*b7893ccfSSadaf Ebrahimi {
6685*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkWriteDescriptorSet[] = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT };
6686*b7893ccfSSadaf Ebrahimi
6687*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdPushDescriptorSetKHR", ParameterName("pDescriptorWrites[%i].pNext", ParameterName::IndexVector{ descriptorWriteIndex }), "VkWriteDescriptorSetAccelerationStructureNV, VkWriteDescriptorSetInlineUniformBlockEXT", pDescriptorWrites[descriptorWriteIndex].pNext, ARRAY_SIZE(allowed_structs_VkWriteDescriptorSet), allowed_structs_VkWriteDescriptorSet, GeneratedVulkanHeaderVersion, "VUID-VkWriteDescriptorSet-pNext-pNext");
6688*b7893ccfSSadaf Ebrahimi
6689*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdPushDescriptorSetKHR", ParameterName("pDescriptorWrites[%i].descriptorType", ParameterName::IndexVector{ descriptorWriteIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pDescriptorWrites[descriptorWriteIndex].descriptorType, "VUID-VkWriteDescriptorSet-descriptorType-parameter");
6690*b7893ccfSSadaf Ebrahimi }
6691*b7893ccfSSadaf Ebrahimi }
6692*b7893ccfSSadaf Ebrahimi return skip;
6693*b7893ccfSSadaf Ebrahimi }
6694*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)6695*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdPushDescriptorSetWithTemplateKHR(
6696*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6697*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate descriptorUpdateTemplate,
6698*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
6699*b7893ccfSSadaf Ebrahimi uint32_t set,
6700*b7893ccfSSadaf Ebrahimi const void* pData) {
6701*b7893ccfSSadaf Ebrahimi bool skip = false;
6702*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdPushDescriptorSetWithTemplateKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
6703*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_push_descriptor) skip |= OutputExtensionError("vkCmdPushDescriptorSetWithTemplateKHR", VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
6704*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPushDescriptorSetWithTemplateKHR", "descriptorUpdateTemplate", descriptorUpdateTemplate);
6705*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdPushDescriptorSetWithTemplateKHR", "layout", layout);
6706*b7893ccfSSadaf Ebrahimi return skip;
6707*b7893ccfSSadaf Ebrahimi }
6708*b7893ccfSSadaf Ebrahimi
6709*b7893ccfSSadaf Ebrahimi
6710*b7893ccfSSadaf Ebrahimi
6711*b7893ccfSSadaf Ebrahimi
6712*b7893ccfSSadaf Ebrahimi
6713*b7893ccfSSadaf Ebrahimi
6714*b7893ccfSSadaf Ebrahimi
6715*b7893ccfSSadaf Ebrahimi
6716*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)6717*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDescriptorUpdateTemplateKHR(
6718*b7893ccfSSadaf Ebrahimi VkDevice device,
6719*b7893ccfSSadaf Ebrahimi const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
6720*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6721*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
6722*b7893ccfSSadaf Ebrahimi bool skip = false;
6723*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_descriptor_update_template) skip |= OutputExtensionError("vkCreateDescriptorUpdateTemplateKHR", VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME);
6724*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDescriptorUpdateTemplateKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, true, "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter", "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType");
6725*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6726*b7893ccfSSadaf Ebrahimi {
6727*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDescriptorUpdateTemplateKHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext");
6728*b7893ccfSSadaf Ebrahimi
6729*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDescriptorUpdateTemplateKHR", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask");
6730*b7893ccfSSadaf Ebrahimi
6731*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateDescriptorUpdateTemplateKHR", "pCreateInfo->descriptorUpdateEntryCount", "pCreateInfo->pDescriptorUpdateEntries", pCreateInfo->descriptorUpdateEntryCount, &pCreateInfo->pDescriptorUpdateEntries, true, true, "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength", "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter");
6732*b7893ccfSSadaf Ebrahimi
6733*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pDescriptorUpdateEntries != NULL)
6734*b7893ccfSSadaf Ebrahimi {
6735*b7893ccfSSadaf Ebrahimi for (uint32_t descriptorUpdateEntryIndex = 0; descriptorUpdateEntryIndex < pCreateInfo->descriptorUpdateEntryCount; ++descriptorUpdateEntryIndex)
6736*b7893ccfSSadaf Ebrahimi {
6737*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorUpdateTemplateKHR", ParameterName("pCreateInfo->pDescriptorUpdateEntries[%i].descriptorType", ParameterName::IndexVector{ descriptorUpdateEntryIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pDescriptorUpdateEntries[descriptorUpdateEntryIndex].descriptorType, "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter");
6738*b7893ccfSSadaf Ebrahimi }
6739*b7893ccfSSadaf Ebrahimi }
6740*b7893ccfSSadaf Ebrahimi
6741*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateDescriptorUpdateTemplateKHR", "pCreateInfo->templateType", "VkDescriptorUpdateTemplateType", AllVkDescriptorUpdateTemplateTypeEnums, pCreateInfo->templateType, "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter");
6742*b7893ccfSSadaf Ebrahimi }
6743*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6744*b7893ccfSSadaf Ebrahimi {
6745*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6746*b7893ccfSSadaf Ebrahimi
6747*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6748*b7893ccfSSadaf Ebrahimi
6749*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6750*b7893ccfSSadaf Ebrahimi
6751*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6752*b7893ccfSSadaf Ebrahimi {
6753*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6754*b7893ccfSSadaf Ebrahimi
6755*b7893ccfSSadaf Ebrahimi }
6756*b7893ccfSSadaf Ebrahimi
6757*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6758*b7893ccfSSadaf Ebrahimi {
6759*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6760*b7893ccfSSadaf Ebrahimi
6761*b7893ccfSSadaf Ebrahimi }
6762*b7893ccfSSadaf Ebrahimi }
6763*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDescriptorUpdateTemplateKHR", "pDescriptorUpdateTemplate", pDescriptorUpdateTemplate, "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter");
6764*b7893ccfSSadaf Ebrahimi return skip;
6765*b7893ccfSSadaf Ebrahimi }
6766*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)6767*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDescriptorUpdateTemplateKHR(
6768*b7893ccfSSadaf Ebrahimi VkDevice device,
6769*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate descriptorUpdateTemplate,
6770*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
6771*b7893ccfSSadaf Ebrahimi bool skip = false;
6772*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_descriptor_update_template) skip |= OutputExtensionError("vkDestroyDescriptorUpdateTemplateKHR", VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME);
6773*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6774*b7893ccfSSadaf Ebrahimi {
6775*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplateKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6776*b7893ccfSSadaf Ebrahimi
6777*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplateKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6778*b7893ccfSSadaf Ebrahimi
6779*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplateKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6780*b7893ccfSSadaf Ebrahimi
6781*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6782*b7893ccfSSadaf Ebrahimi {
6783*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplateKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6784*b7893ccfSSadaf Ebrahimi
6785*b7893ccfSSadaf Ebrahimi }
6786*b7893ccfSSadaf Ebrahimi
6787*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6788*b7893ccfSSadaf Ebrahimi {
6789*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDescriptorUpdateTemplateKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6790*b7893ccfSSadaf Ebrahimi
6791*b7893ccfSSadaf Ebrahimi }
6792*b7893ccfSSadaf Ebrahimi }
6793*b7893ccfSSadaf Ebrahimi return skip;
6794*b7893ccfSSadaf Ebrahimi }
6795*b7893ccfSSadaf Ebrahimi
PreCallValidateUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)6796*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUpdateDescriptorSetWithTemplateKHR(
6797*b7893ccfSSadaf Ebrahimi VkDevice device,
6798*b7893ccfSSadaf Ebrahimi VkDescriptorSet descriptorSet,
6799*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplate descriptorUpdateTemplate,
6800*b7893ccfSSadaf Ebrahimi const void* pData) {
6801*b7893ccfSSadaf Ebrahimi bool skip = false;
6802*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_descriptor_update_template) skip |= OutputExtensionError("vkUpdateDescriptorSetWithTemplateKHR", VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME);
6803*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSetWithTemplateKHR", "descriptorSet", descriptorSet);
6804*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUpdateDescriptorSetWithTemplateKHR", "descriptorUpdateTemplate", descriptorUpdateTemplate);
6805*b7893ccfSSadaf Ebrahimi return skip;
6806*b7893ccfSSadaf Ebrahimi }
6807*b7893ccfSSadaf Ebrahimi
6808*b7893ccfSSadaf Ebrahimi
6809*b7893ccfSSadaf Ebrahimi
6810*b7893ccfSSadaf Ebrahimi
6811*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2KHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)6812*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateRenderPass2KHR(
6813*b7893ccfSSadaf Ebrahimi VkDevice device,
6814*b7893ccfSSadaf Ebrahimi const VkRenderPassCreateInfo2KHR* pCreateInfo,
6815*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6816*b7893ccfSSadaf Ebrahimi VkRenderPass* pRenderPass) {
6817*b7893ccfSSadaf Ebrahimi bool skip = false;
6818*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance2) skip |= OutputExtensionError("vkCreateRenderPass2KHR", VK_KHR_MAINTENANCE2_EXTENSION_NAME);
6819*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_multiview) skip |= OutputExtensionError("vkCreateRenderPass2KHR", VK_KHR_MULTIVIEW_EXTENSION_NAME);
6820*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_create_renderpass_2) skip |= OutputExtensionError("vkCreateRenderPass2KHR", VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME);
6821*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateRenderPass2KHR", "pCreateInfo", "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR", pCreateInfo, VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, true, "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter", "VUID-VkRenderPassCreateInfo2KHR-sType-sType");
6822*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
6823*b7893ccfSSadaf Ebrahimi {
6824*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateRenderPass2KHR", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext");
6825*b7893ccfSSadaf Ebrahimi
6826*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", "pCreateInfo->attachmentCount", "pCreateInfo->pAttachments", "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR", pCreateInfo->attachmentCount, pCreateInfo->pAttachments, VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, false, true, "VUID-VkAttachmentDescription2KHR-sType-sType", "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter", kVUIDUndefined);
6827*b7893ccfSSadaf Ebrahimi
6828*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pAttachments != NULL)
6829*b7893ccfSSadaf Ebrahimi {
6830*b7893ccfSSadaf Ebrahimi for (uint32_t attachmentIndex = 0; attachmentIndex < pCreateInfo->attachmentCount; ++attachmentIndex)
6831*b7893ccfSSadaf Ebrahimi {
6832*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].flags", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentDescriptionFlagBits", AllVkAttachmentDescriptionFlagBits, pCreateInfo->pAttachments[attachmentIndex].flags, kOptionalFlags, "VUID-VkAttachmentDescription2KHR-flags-parameter");
6833*b7893ccfSSadaf Ebrahimi
6834*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].format", ParameterName::IndexVector{ attachmentIndex }), "VkFormat", AllVkFormatEnums, pCreateInfo->pAttachments[attachmentIndex].format, "VUID-VkAttachmentDescription2KHR-format-parameter");
6835*b7893ccfSSadaf Ebrahimi
6836*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].samples", ParameterName::IndexVector{ attachmentIndex }), "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pCreateInfo->pAttachments[attachmentIndex].samples, kRequiredSingleBit, "VUID-VkAttachmentDescription2KHR-samples-parameter", "VUID-VkAttachmentDescription2KHR-samples-parameter");
6837*b7893ccfSSadaf Ebrahimi
6838*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].loadOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentLoadOp", AllVkAttachmentLoadOpEnums, pCreateInfo->pAttachments[attachmentIndex].loadOp, "VUID-VkAttachmentDescription2KHR-loadOp-parameter");
6839*b7893ccfSSadaf Ebrahimi
6840*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].storeOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentStoreOp", AllVkAttachmentStoreOpEnums, pCreateInfo->pAttachments[attachmentIndex].storeOp, "VUID-VkAttachmentDescription2KHR-storeOp-parameter");
6841*b7893ccfSSadaf Ebrahimi
6842*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].stencilLoadOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentLoadOp", AllVkAttachmentLoadOpEnums, pCreateInfo->pAttachments[attachmentIndex].stencilLoadOp, "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter");
6843*b7893ccfSSadaf Ebrahimi
6844*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].stencilStoreOp", ParameterName::IndexVector{ attachmentIndex }), "VkAttachmentStoreOp", AllVkAttachmentStoreOpEnums, pCreateInfo->pAttachments[attachmentIndex].stencilStoreOp, "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter");
6845*b7893ccfSSadaf Ebrahimi
6846*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].initialLayout", ParameterName::IndexVector{ attachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pAttachments[attachmentIndex].initialLayout, "VUID-VkAttachmentDescription2KHR-initialLayout-parameter");
6847*b7893ccfSSadaf Ebrahimi
6848*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pAttachments[%i].finalLayout", ParameterName::IndexVector{ attachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pAttachments[attachmentIndex].finalLayout, "VUID-VkAttachmentDescription2KHR-finalLayout-parameter");
6849*b7893ccfSSadaf Ebrahimi }
6850*b7893ccfSSadaf Ebrahimi }
6851*b7893ccfSSadaf Ebrahimi
6852*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", "pCreateInfo->subpassCount", "pCreateInfo->pSubpasses", "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR", pCreateInfo->subpassCount, pCreateInfo->pSubpasses, VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, true, true, "VUID-VkSubpassDescription2KHR-sType-sType", "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter", "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength");
6853*b7893ccfSSadaf Ebrahimi
6854*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses != NULL)
6855*b7893ccfSSadaf Ebrahimi {
6856*b7893ccfSSadaf Ebrahimi for (uint32_t subpassIndex = 0; subpassIndex < pCreateInfo->subpassCount; ++subpassIndex)
6857*b7893ccfSSadaf Ebrahimi {
6858*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].flags", ParameterName::IndexVector{ subpassIndex }), "VkSubpassDescriptionFlagBits", AllVkSubpassDescriptionFlagBits, pCreateInfo->pSubpasses[subpassIndex].flags, kOptionalFlags, "VUID-VkSubpassDescription2KHR-flags-parameter");
6859*b7893ccfSSadaf Ebrahimi
6860*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pipelineBindPoint", ParameterName::IndexVector{ subpassIndex }), "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pCreateInfo->pSubpasses[subpassIndex].pipelineBindPoint, "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter");
6861*b7893ccfSSadaf Ebrahimi
6862*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].inputAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pInputAttachments", ParameterName::IndexVector{ subpassIndex }), "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR", pCreateInfo->pSubpasses[subpassIndex].inputAttachmentCount, pCreateInfo->pSubpasses[subpassIndex].pInputAttachments, VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, false, true, "VUID-VkAttachmentReference2KHR-sType-sType", "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter", kVUIDUndefined);
6863*b7893ccfSSadaf Ebrahimi
6864*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pInputAttachments != NULL)
6865*b7893ccfSSadaf Ebrahimi {
6866*b7893ccfSSadaf Ebrahimi for (uint32_t inputAttachmentIndex = 0; inputAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].inputAttachmentCount; ++inputAttachmentIndex)
6867*b7893ccfSSadaf Ebrahimi {
6868*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pInputAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, inputAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pInputAttachments[inputAttachmentIndex].layout, "VUID-VkAttachmentReference2KHR-layout-parameter");
6869*b7893ccfSSadaf Ebrahimi }
6870*b7893ccfSSadaf Ebrahimi }
6871*b7893ccfSSadaf Ebrahimi
6872*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].colorAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pColorAttachments", ParameterName::IndexVector{ subpassIndex }), "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR", pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount, pCreateInfo->pSubpasses[subpassIndex].pColorAttachments, VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, false, true, "VUID-VkAttachmentReference2KHR-sType-sType", "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter", kVUIDUndefined);
6873*b7893ccfSSadaf Ebrahimi
6874*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pColorAttachments != NULL)
6875*b7893ccfSSadaf Ebrahimi {
6876*b7893ccfSSadaf Ebrahimi for (uint32_t colorAttachmentIndex = 0; colorAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount; ++colorAttachmentIndex)
6877*b7893ccfSSadaf Ebrahimi {
6878*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pColorAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, colorAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pColorAttachments[colorAttachmentIndex].layout, "VUID-VkAttachmentReference2KHR-layout-parameter");
6879*b7893ccfSSadaf Ebrahimi }
6880*b7893ccfSSadaf Ebrahimi }
6881*b7893ccfSSadaf Ebrahimi
6882*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].colorAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pResolveAttachments", ParameterName::IndexVector{ subpassIndex }), "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR", pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount, pCreateInfo->pSubpasses[subpassIndex].pResolveAttachments, VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, false, false, "VUID-VkAttachmentReference2KHR-sType-sType", "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter", kVUIDUndefined);
6883*b7893ccfSSadaf Ebrahimi
6884*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pResolveAttachments != NULL)
6885*b7893ccfSSadaf Ebrahimi {
6886*b7893ccfSSadaf Ebrahimi for (uint32_t colorAttachmentIndex = 0; colorAttachmentIndex < pCreateInfo->pSubpasses[subpassIndex].colorAttachmentCount; ++colorAttachmentIndex)
6887*b7893ccfSSadaf Ebrahimi {
6888*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pResolveAttachments[%i].layout", ParameterName::IndexVector{ subpassIndex, colorAttachmentIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pResolveAttachments[colorAttachmentIndex].layout, "VUID-VkAttachmentReference2KHR-layout-parameter");
6889*b7893ccfSSadaf Ebrahimi }
6890*b7893ccfSSadaf Ebrahimi }
6891*b7893ccfSSadaf Ebrahimi
6892*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pDepthStencilAttachment", ParameterName::IndexVector{ subpassIndex }), "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR", pCreateInfo->pSubpasses[subpassIndex].pDepthStencilAttachment, VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, false, "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter", "VUID-VkAttachmentReference2KHR-sType-sType");
6893*b7893ccfSSadaf Ebrahimi
6894*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpassIndex].pDepthStencilAttachment != NULL)
6895*b7893ccfSSadaf Ebrahimi {
6896*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].pDepthStencilAttachment->layout", ParameterName::IndexVector{ subpassIndex }), "VkImageLayout", AllVkImageLayoutEnums, pCreateInfo->pSubpasses[subpassIndex].pDepthStencilAttachment->layout, "VUID-VkAttachmentReference2KHR-layout-parameter");
6897*b7893ccfSSadaf Ebrahimi }
6898*b7893ccfSSadaf Ebrahimi
6899*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pSubpasses[%i].preserveAttachmentCount", ParameterName::IndexVector{ subpassIndex }), ParameterName("pCreateInfo->pSubpasses[%i].pPreserveAttachments", ParameterName::IndexVector{ subpassIndex }), pCreateInfo->pSubpasses[subpassIndex].preserveAttachmentCount, &pCreateInfo->pSubpasses[subpassIndex].pPreserveAttachments, false, true, kVUIDUndefined, "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter");
6900*b7893ccfSSadaf Ebrahimi }
6901*b7893ccfSSadaf Ebrahimi }
6902*b7893ccfSSadaf Ebrahimi
6903*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRenderPass2KHR", "pCreateInfo->dependencyCount", "pCreateInfo->pDependencies", "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR", pCreateInfo->dependencyCount, pCreateInfo->pDependencies, VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR, false, true, "VUID-VkSubpassDependency2KHR-sType-sType", "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter", kVUIDUndefined);
6904*b7893ccfSSadaf Ebrahimi
6905*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pDependencies != NULL)
6906*b7893ccfSSadaf Ebrahimi {
6907*b7893ccfSSadaf Ebrahimi for (uint32_t dependencyIndex = 0; dependencyIndex < pCreateInfo->dependencyCount; ++dependencyIndex)
6908*b7893ccfSSadaf Ebrahimi {
6909*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pDependencies[%i].srcStageMask", ParameterName::IndexVector{ dependencyIndex }), "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pCreateInfo->pDependencies[dependencyIndex].srcStageMask, kRequiredFlags, "VUID-VkSubpassDependency2KHR-srcStageMask-parameter", "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask");
6910*b7893ccfSSadaf Ebrahimi
6911*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pDependencies[%i].dstStageMask", ParameterName::IndexVector{ dependencyIndex }), "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pCreateInfo->pDependencies[dependencyIndex].dstStageMask, kRequiredFlags, "VUID-VkSubpassDependency2KHR-dstStageMask-parameter", "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask");
6912*b7893ccfSSadaf Ebrahimi
6913*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pDependencies[%i].srcAccessMask", ParameterName::IndexVector{ dependencyIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pCreateInfo->pDependencies[dependencyIndex].srcAccessMask, kOptionalFlags, "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter");
6914*b7893ccfSSadaf Ebrahimi
6915*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pDependencies[%i].dstAccessMask", ParameterName::IndexVector{ dependencyIndex }), "VkAccessFlagBits", AllVkAccessFlagBits, pCreateInfo->pDependencies[dependencyIndex].dstAccessMask, kOptionalFlags, "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter");
6916*b7893ccfSSadaf Ebrahimi
6917*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRenderPass2KHR", ParameterName("pCreateInfo->pDependencies[%i].dependencyFlags", ParameterName::IndexVector{ dependencyIndex }), "VkDependencyFlagBits", AllVkDependencyFlagBits, pCreateInfo->pDependencies[dependencyIndex].dependencyFlags, kOptionalFlags, "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter");
6918*b7893ccfSSadaf Ebrahimi }
6919*b7893ccfSSadaf Ebrahimi }
6920*b7893ccfSSadaf Ebrahimi
6921*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRenderPass2KHR", "pCreateInfo->correlatedViewMaskCount", "pCreateInfo->pCorrelatedViewMasks", pCreateInfo->correlatedViewMaskCount, &pCreateInfo->pCorrelatedViewMasks, false, true, kVUIDUndefined, "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter");
6922*b7893ccfSSadaf Ebrahimi }
6923*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
6924*b7893ccfSSadaf Ebrahimi {
6925*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
6926*b7893ccfSSadaf Ebrahimi
6927*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
6928*b7893ccfSSadaf Ebrahimi
6929*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
6930*b7893ccfSSadaf Ebrahimi
6931*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
6932*b7893ccfSSadaf Ebrahimi {
6933*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6934*b7893ccfSSadaf Ebrahimi
6935*b7893ccfSSadaf Ebrahimi }
6936*b7893ccfSSadaf Ebrahimi
6937*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
6938*b7893ccfSSadaf Ebrahimi {
6939*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
6940*b7893ccfSSadaf Ebrahimi
6941*b7893ccfSSadaf Ebrahimi }
6942*b7893ccfSSadaf Ebrahimi }
6943*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRenderPass2KHR", "pRenderPass", pRenderPass, "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter");
6944*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
6945*b7893ccfSSadaf Ebrahimi return skip;
6946*b7893ccfSSadaf Ebrahimi }
6947*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfoKHR * pSubpassBeginInfo)6948*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginRenderPass2KHR(
6949*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6950*b7893ccfSSadaf Ebrahimi const VkRenderPassBeginInfo* pRenderPassBegin,
6951*b7893ccfSSadaf Ebrahimi const VkSubpassBeginInfoKHR* pSubpassBeginInfo) {
6952*b7893ccfSSadaf Ebrahimi bool skip = false;
6953*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance2) skip |= OutputExtensionError("vkCmdBeginRenderPass2KHR", VK_KHR_MAINTENANCE2_EXTENSION_NAME);
6954*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_multiview) skip |= OutputExtensionError("vkCmdBeginRenderPass2KHR", VK_KHR_MULTIVIEW_EXTENSION_NAME);
6955*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_create_renderpass_2) skip |= OutputExtensionError("vkCmdBeginRenderPass2KHR", VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME);
6956*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBeginRenderPass2KHR", "pRenderPassBegin", "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", pRenderPassBegin, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, true, "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter", "VUID-VkRenderPassBeginInfo-sType-sType");
6957*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin != NULL)
6958*b7893ccfSSadaf Ebrahimi {
6959*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkRenderPassBeginInfo[] = { VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT };
6960*b7893ccfSSadaf Ebrahimi
6961*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBeginRenderPass2KHR", "pRenderPassBegin->pNext", "VkDeviceGroupRenderPassBeginInfo, VkRenderPassAttachmentBeginInfoKHR, VkRenderPassSampleLocationsBeginInfoEXT", pRenderPassBegin->pNext, ARRAY_SIZE(allowed_structs_VkRenderPassBeginInfo), allowed_structs_VkRenderPassBeginInfo, GeneratedVulkanHeaderVersion, "VUID-VkRenderPassBeginInfo-pNext-pNext");
6962*b7893ccfSSadaf Ebrahimi
6963*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginRenderPass2KHR", "pRenderPassBegin->renderPass", pRenderPassBegin->renderPass);
6964*b7893ccfSSadaf Ebrahimi
6965*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginRenderPass2KHR", "pRenderPassBegin->framebuffer", pRenderPassBegin->framebuffer);
6966*b7893ccfSSadaf Ebrahimi
6967*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6968*b7893ccfSSadaf Ebrahimi
6969*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6970*b7893ccfSSadaf Ebrahimi
6971*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBeginRenderPass2KHR", "pRenderPassBegin->clearValueCount", "pRenderPassBegin->pClearValues", pRenderPassBegin->clearValueCount, &pRenderPassBegin->pClearValues, false, true, kVUIDUndefined, "VUID-VkRenderPassBeginInfo-pClearValues-parameter");
6972*b7893ccfSSadaf Ebrahimi
6973*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->pClearValues != NULL)
6974*b7893ccfSSadaf Ebrahimi {
6975*b7893ccfSSadaf Ebrahimi for (uint32_t clearValueIndex = 0; clearValueIndex < pRenderPassBegin->clearValueCount; ++clearValueIndex)
6976*b7893ccfSSadaf Ebrahimi {
6977*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6978*b7893ccfSSadaf Ebrahimi
6979*b7893ccfSSadaf Ebrahimi // No xml-driven validation
6980*b7893ccfSSadaf Ebrahimi }
6981*b7893ccfSSadaf Ebrahimi }
6982*b7893ccfSSadaf Ebrahimi }
6983*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBeginRenderPass2KHR", "pSubpassBeginInfo", "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR", pSubpassBeginInfo, VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, true, "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter", "VUID-VkSubpassBeginInfoKHR-sType-sType");
6984*b7893ccfSSadaf Ebrahimi if (pSubpassBeginInfo != NULL)
6985*b7893ccfSSadaf Ebrahimi {
6986*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBeginRenderPass2KHR", "pSubpassBeginInfo->pNext", NULL, pSubpassBeginInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSubpassBeginInfoKHR-pNext-pNext");
6987*b7893ccfSSadaf Ebrahimi
6988*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBeginRenderPass2KHR", "pSubpassBeginInfo->contents", "VkSubpassContents", AllVkSubpassContentsEnums, pSubpassBeginInfo->contents, "VUID-VkSubpassBeginInfoKHR-contents-parameter");
6989*b7893ccfSSadaf Ebrahimi }
6990*b7893ccfSSadaf Ebrahimi return skip;
6991*b7893ccfSSadaf Ebrahimi }
6992*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfoKHR * pSubpassBeginInfo,const VkSubpassEndInfoKHR * pSubpassEndInfo)6993*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdNextSubpass2KHR(
6994*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6995*b7893ccfSSadaf Ebrahimi const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
6996*b7893ccfSSadaf Ebrahimi const VkSubpassEndInfoKHR* pSubpassEndInfo) {
6997*b7893ccfSSadaf Ebrahimi bool skip = false;
6998*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance2) skip |= OutputExtensionError("vkCmdNextSubpass2KHR", VK_KHR_MAINTENANCE2_EXTENSION_NAME);
6999*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_multiview) skip |= OutputExtensionError("vkCmdNextSubpass2KHR", VK_KHR_MULTIVIEW_EXTENSION_NAME);
7000*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_create_renderpass_2) skip |= OutputExtensionError("vkCmdNextSubpass2KHR", VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME);
7001*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdNextSubpass2KHR", "pSubpassBeginInfo", "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR", pSubpassBeginInfo, VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, true, "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter", "VUID-VkSubpassBeginInfoKHR-sType-sType");
7002*b7893ccfSSadaf Ebrahimi if (pSubpassBeginInfo != NULL)
7003*b7893ccfSSadaf Ebrahimi {
7004*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdNextSubpass2KHR", "pSubpassBeginInfo->pNext", NULL, pSubpassBeginInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSubpassBeginInfoKHR-pNext-pNext");
7005*b7893ccfSSadaf Ebrahimi
7006*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdNextSubpass2KHR", "pSubpassBeginInfo->contents", "VkSubpassContents", AllVkSubpassContentsEnums, pSubpassBeginInfo->contents, "VUID-VkSubpassBeginInfoKHR-contents-parameter");
7007*b7893ccfSSadaf Ebrahimi }
7008*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdNextSubpass2KHR", "pSubpassEndInfo", "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR", pSubpassEndInfo, VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, true, "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter", "VUID-VkSubpassEndInfoKHR-sType-sType");
7009*b7893ccfSSadaf Ebrahimi if (pSubpassEndInfo != NULL)
7010*b7893ccfSSadaf Ebrahimi {
7011*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdNextSubpass2KHR", "pSubpassEndInfo->pNext", NULL, pSubpassEndInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSubpassEndInfoKHR-pNext-pNext");
7012*b7893ccfSSadaf Ebrahimi }
7013*b7893ccfSSadaf Ebrahimi return skip;
7014*b7893ccfSSadaf Ebrahimi }
7015*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfoKHR * pSubpassEndInfo)7016*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndRenderPass2KHR(
7017*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7018*b7893ccfSSadaf Ebrahimi const VkSubpassEndInfoKHR* pSubpassEndInfo) {
7019*b7893ccfSSadaf Ebrahimi bool skip = false;
7020*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance2) skip |= OutputExtensionError("vkCmdEndRenderPass2KHR", VK_KHR_MAINTENANCE2_EXTENSION_NAME);
7021*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_multiview) skip |= OutputExtensionError("vkCmdEndRenderPass2KHR", VK_KHR_MULTIVIEW_EXTENSION_NAME);
7022*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_create_renderpass_2) skip |= OutputExtensionError("vkCmdEndRenderPass2KHR", VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME);
7023*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdEndRenderPass2KHR", "pSubpassEndInfo", "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR", pSubpassEndInfo, VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, true, "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter", "VUID-VkSubpassEndInfoKHR-sType-sType");
7024*b7893ccfSSadaf Ebrahimi if (pSubpassEndInfo != NULL)
7025*b7893ccfSSadaf Ebrahimi {
7026*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdEndRenderPass2KHR", "pSubpassEndInfo->pNext", NULL, pSubpassEndInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkSubpassEndInfoKHR-pNext-pNext");
7027*b7893ccfSSadaf Ebrahimi }
7028*b7893ccfSSadaf Ebrahimi return skip;
7029*b7893ccfSSadaf Ebrahimi }
7030*b7893ccfSSadaf Ebrahimi
7031*b7893ccfSSadaf Ebrahimi
7032*b7893ccfSSadaf Ebrahimi
PreCallValidateGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)7033*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetSwapchainStatusKHR(
7034*b7893ccfSSadaf Ebrahimi VkDevice device,
7035*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain) {
7036*b7893ccfSSadaf Ebrahimi bool skip = false;
7037*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkGetSwapchainStatusKHR", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
7038*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetSwapchainStatusKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7039*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetSwapchainStatusKHR", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
7040*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_shared_presentable_image) skip |= OutputExtensionError("vkGetSwapchainStatusKHR", VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME);
7041*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetSwapchainStatusKHR", "swapchain", swapchain);
7042*b7893ccfSSadaf Ebrahimi return skip;
7043*b7893ccfSSadaf Ebrahimi }
7044*b7893ccfSSadaf Ebrahimi
7045*b7893ccfSSadaf Ebrahimi
7046*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)7047*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalFencePropertiesKHR(
7048*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7049*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
7050*b7893ccfSSadaf Ebrahimi VkExternalFenceProperties* pExternalFenceProperties) {
7051*b7893ccfSSadaf Ebrahimi bool skip = false;
7052*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalFencePropertiesKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7053*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_external_fence_capabilities) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalFencePropertiesKHR", VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME);
7054*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalFencePropertiesKHR", "pExternalFenceInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", pExternalFenceInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, true, "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter", "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType");
7055*b7893ccfSSadaf Ebrahimi if (pExternalFenceInfo != NULL)
7056*b7893ccfSSadaf Ebrahimi {
7057*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceExternalFencePropertiesKHR", "pExternalFenceInfo->pNext", NULL, pExternalFenceInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext");
7058*b7893ccfSSadaf Ebrahimi
7059*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalFencePropertiesKHR", "pExternalFenceInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pExternalFenceInfo->handleType, kRequiredSingleBit, "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter", "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter");
7060*b7893ccfSSadaf Ebrahimi }
7061*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceExternalFencePropertiesKHR", "pExternalFenceProperties", "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", pExternalFenceProperties, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, true, "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter", "VUID-VkExternalFenceProperties-sType-sType");
7062*b7893ccfSSadaf Ebrahimi if (pExternalFenceProperties != NULL)
7063*b7893ccfSSadaf Ebrahimi {
7064*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7065*b7893ccfSSadaf Ebrahimi }
7066*b7893ccfSSadaf Ebrahimi return skip;
7067*b7893ccfSSadaf Ebrahimi }
7068*b7893ccfSSadaf Ebrahimi
7069*b7893ccfSSadaf Ebrahimi
7070*b7893ccfSSadaf Ebrahimi
7071*b7893ccfSSadaf Ebrahimi
7072*b7893ccfSSadaf Ebrahimi
7073*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
7074*b7893ccfSSadaf Ebrahimi
PreCallValidateImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)7075*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateImportFenceWin32HandleKHR(
7076*b7893ccfSSadaf Ebrahimi VkDevice device,
7077*b7893ccfSSadaf Ebrahimi const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
7078*b7893ccfSSadaf Ebrahimi bool skip = false;
7079*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence) skip |= OutputExtensionError("vkImportFenceWin32HandleKHR", VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME);
7080*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence_win32) skip |= OutputExtensionError("vkImportFenceWin32HandleKHR", VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME);
7081*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkImportFenceWin32HandleKHR", "pImportFenceWin32HandleInfo", "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR", pImportFenceWin32HandleInfo, VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR, true, "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter", "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType");
7082*b7893ccfSSadaf Ebrahimi if (pImportFenceWin32HandleInfo != NULL)
7083*b7893ccfSSadaf Ebrahimi {
7084*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkImportFenceWin32HandleKHR", "pImportFenceWin32HandleInfo->pNext", NULL, pImportFenceWin32HandleInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext");
7085*b7893ccfSSadaf Ebrahimi
7086*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkImportFenceWin32HandleKHR", "pImportFenceWin32HandleInfo->fence", pImportFenceWin32HandleInfo->fence);
7087*b7893ccfSSadaf Ebrahimi
7088*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportFenceWin32HandleKHR", "pImportFenceWin32HandleInfo->flags", "VkFenceImportFlagBits", AllVkFenceImportFlagBits, pImportFenceWin32HandleInfo->flags, kOptionalFlags, "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter");
7089*b7893ccfSSadaf Ebrahimi
7090*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportFenceWin32HandleKHR", "pImportFenceWin32HandleInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pImportFenceWin32HandleInfo->handleType, kOptionalSingleBit, "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter");
7091*b7893ccfSSadaf Ebrahimi }
7092*b7893ccfSSadaf Ebrahimi return skip;
7093*b7893ccfSSadaf Ebrahimi }
7094*b7893ccfSSadaf Ebrahimi
PreCallValidateGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)7095*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetFenceWin32HandleKHR(
7096*b7893ccfSSadaf Ebrahimi VkDevice device,
7097*b7893ccfSSadaf Ebrahimi const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
7098*b7893ccfSSadaf Ebrahimi HANDLE* pHandle) {
7099*b7893ccfSSadaf Ebrahimi bool skip = false;
7100*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence) skip |= OutputExtensionError("vkGetFenceWin32HandleKHR", VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME);
7101*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence_win32) skip |= OutputExtensionError("vkGetFenceWin32HandleKHR", VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME);
7102*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetFenceWin32HandleKHR", "pGetWin32HandleInfo", "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR", pGetWin32HandleInfo, VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR, true, "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter", "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType");
7103*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo != NULL)
7104*b7893ccfSSadaf Ebrahimi {
7105*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetFenceWin32HandleKHR", "pGetWin32HandleInfo->pNext", NULL, pGetWin32HandleInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext");
7106*b7893ccfSSadaf Ebrahimi
7107*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetFenceWin32HandleKHR", "pGetWin32HandleInfo->fence", pGetWin32HandleInfo->fence);
7108*b7893ccfSSadaf Ebrahimi
7109*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetFenceWin32HandleKHR", "pGetWin32HandleInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pGetWin32HandleInfo->handleType, kRequiredSingleBit, "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter", "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter");
7110*b7893ccfSSadaf Ebrahimi }
7111*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetFenceWin32HandleKHR", "pHandle", pHandle, "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter");
7112*b7893ccfSSadaf Ebrahimi return skip;
7113*b7893ccfSSadaf Ebrahimi }
7114*b7893ccfSSadaf Ebrahimi
7115*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
7116*b7893ccfSSadaf Ebrahimi
PreCallValidateImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)7117*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateImportFenceFdKHR(
7118*b7893ccfSSadaf Ebrahimi VkDevice device,
7119*b7893ccfSSadaf Ebrahimi const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
7120*b7893ccfSSadaf Ebrahimi bool skip = false;
7121*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence) skip |= OutputExtensionError("vkImportFenceFdKHR", VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME);
7122*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence_fd) skip |= OutputExtensionError("vkImportFenceFdKHR", VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME);
7123*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkImportFenceFdKHR", "pImportFenceFdInfo", "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR", pImportFenceFdInfo, VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, true, "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter", "VUID-VkImportFenceFdInfoKHR-sType-sType");
7124*b7893ccfSSadaf Ebrahimi if (pImportFenceFdInfo != NULL)
7125*b7893ccfSSadaf Ebrahimi {
7126*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkImportFenceFdKHR", "pImportFenceFdInfo->pNext", NULL, pImportFenceFdInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImportFenceFdInfoKHR-pNext-pNext");
7127*b7893ccfSSadaf Ebrahimi
7128*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkImportFenceFdKHR", "pImportFenceFdInfo->fence", pImportFenceFdInfo->fence);
7129*b7893ccfSSadaf Ebrahimi
7130*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportFenceFdKHR", "pImportFenceFdInfo->flags", "VkFenceImportFlagBits", AllVkFenceImportFlagBits, pImportFenceFdInfo->flags, kOptionalFlags, "VUID-VkImportFenceFdInfoKHR-flags-parameter");
7131*b7893ccfSSadaf Ebrahimi
7132*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkImportFenceFdKHR", "pImportFenceFdInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pImportFenceFdInfo->handleType, kRequiredSingleBit, "VUID-VkImportFenceFdInfoKHR-handleType-parameter", "VUID-VkImportFenceFdInfoKHR-handleType-parameter");
7133*b7893ccfSSadaf Ebrahimi }
7134*b7893ccfSSadaf Ebrahimi return skip;
7135*b7893ccfSSadaf Ebrahimi }
7136*b7893ccfSSadaf Ebrahimi
PreCallValidateGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)7137*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetFenceFdKHR(
7138*b7893ccfSSadaf Ebrahimi VkDevice device,
7139*b7893ccfSSadaf Ebrahimi const VkFenceGetFdInfoKHR* pGetFdInfo,
7140*b7893ccfSSadaf Ebrahimi int* pFd) {
7141*b7893ccfSSadaf Ebrahimi bool skip = false;
7142*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence) skip |= OutputExtensionError("vkGetFenceFdKHR", VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME);
7143*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_fence_fd) skip |= OutputExtensionError("vkGetFenceFdKHR", VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME);
7144*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetFenceFdKHR", "pGetFdInfo", "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR", pGetFdInfo, VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, true, "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter", "VUID-VkFenceGetFdInfoKHR-sType-sType");
7145*b7893ccfSSadaf Ebrahimi if (pGetFdInfo != NULL)
7146*b7893ccfSSadaf Ebrahimi {
7147*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetFenceFdKHR", "pGetFdInfo->pNext", NULL, pGetFdInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkFenceGetFdInfoKHR-pNext-pNext");
7148*b7893ccfSSadaf Ebrahimi
7149*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetFenceFdKHR", "pGetFdInfo->fence", pGetFdInfo->fence);
7150*b7893ccfSSadaf Ebrahimi
7151*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetFenceFdKHR", "pGetFdInfo->handleType", "VkExternalFenceHandleTypeFlagBits", AllVkExternalFenceHandleTypeFlagBits, pGetFdInfo->handleType, kRequiredSingleBit, "VUID-VkFenceGetFdInfoKHR-handleType-parameter", "VUID-VkFenceGetFdInfoKHR-handleType-parameter");
7152*b7893ccfSSadaf Ebrahimi }
7153*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetFenceFdKHR", "pFd", pFd, "VUID-vkGetFenceFdKHR-pFd-parameter");
7154*b7893ccfSSadaf Ebrahimi return skip;
7155*b7893ccfSSadaf Ebrahimi }
7156*b7893ccfSSadaf Ebrahimi
7157*b7893ccfSSadaf Ebrahimi
7158*b7893ccfSSadaf Ebrahimi
7159*b7893ccfSSadaf Ebrahimi
7160*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)7161*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceCapabilities2KHR(
7162*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7163*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7164*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7165*b7893ccfSSadaf Ebrahimi bool skip = false;
7166*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceCapabilities2KHR", VK_KHR_SURFACE_EXTENSION_NAME);
7167*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceCapabilities2KHR", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
7168*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSurfaceCapabilities2KHR", "pSurfaceInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pSurfaceInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, true, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter", "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType");
7169*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo != NULL)
7170*b7893ccfSSadaf Ebrahimi {
7171*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR[] = { VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT };
7172*b7893ccfSSadaf Ebrahimi
7173*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceSurfaceCapabilities2KHR", "pSurfaceInfo->pNext", "VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT", pSurfaceInfo->pNext, ARRAY_SIZE(allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR), allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext");
7174*b7893ccfSSadaf Ebrahimi
7175*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceCapabilities2KHR", "pSurfaceInfo->surface", pSurfaceInfo->surface);
7176*b7893ccfSSadaf Ebrahimi }
7177*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSurfaceCapabilities2KHR", "pSurfaceCapabilities", "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", pSurfaceCapabilities, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, true, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter", "VUID-VkSurfaceCapabilities2KHR-sType-sType");
7178*b7893ccfSSadaf Ebrahimi if (pSurfaceCapabilities != NULL)
7179*b7893ccfSSadaf Ebrahimi {
7180*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7181*b7893ccfSSadaf Ebrahimi }
7182*b7893ccfSSadaf Ebrahimi return skip;
7183*b7893ccfSSadaf Ebrahimi }
7184*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)7185*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceFormats2KHR(
7186*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7187*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7188*b7893ccfSSadaf Ebrahimi uint32_t* pSurfaceFormatCount,
7189*b7893ccfSSadaf Ebrahimi VkSurfaceFormat2KHR* pSurfaceFormats) {
7190*b7893ccfSSadaf Ebrahimi bool skip = false;
7191*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceFormats2KHR", VK_KHR_SURFACE_EXTENSION_NAME);
7192*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceFormats2KHR", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
7193*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSurfaceFormats2KHR", "pSurfaceInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pSurfaceInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, true, "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter", "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType");
7194*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo != NULL)
7195*b7893ccfSSadaf Ebrahimi {
7196*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR[] = { VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT };
7197*b7893ccfSSadaf Ebrahimi
7198*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceSurfaceFormats2KHR", "pSurfaceInfo->pNext", "VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT", pSurfaceInfo->pNext, ARRAY_SIZE(allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR), allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext");
7199*b7893ccfSSadaf Ebrahimi
7200*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceFormats2KHR", "pSurfaceInfo->surface", pSurfaceInfo->surface);
7201*b7893ccfSSadaf Ebrahimi }
7202*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceSurfaceFormats2KHR", "pSurfaceFormatCount", "pSurfaceFormats", "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", pSurfaceFormatCount, pSurfaceFormats, VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, true, false, false, "VUID-VkSurfaceFormat2KHR-sType-sType", "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter", kVUIDUndefined);
7203*b7893ccfSSadaf Ebrahimi if (pSurfaceFormats != NULL)
7204*b7893ccfSSadaf Ebrahimi {
7205*b7893ccfSSadaf Ebrahimi for (uint32_t pSurfaceFormatIndex = 0; pSurfaceFormatIndex < *pSurfaceFormatCount; ++pSurfaceFormatIndex)
7206*b7893ccfSSadaf Ebrahimi {
7207*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7208*b7893ccfSSadaf Ebrahimi }
7209*b7893ccfSSadaf Ebrahimi }
7210*b7893ccfSSadaf Ebrahimi return skip;
7211*b7893ccfSSadaf Ebrahimi }
7212*b7893ccfSSadaf Ebrahimi
7213*b7893ccfSSadaf Ebrahimi
7214*b7893ccfSSadaf Ebrahimi
7215*b7893ccfSSadaf Ebrahimi
7216*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)7217*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceDisplayProperties2KHR(
7218*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7219*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
7220*b7893ccfSSadaf Ebrahimi VkDisplayProperties2KHR* pProperties) {
7221*b7893ccfSSadaf Ebrahimi bool skip = false;
7222*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayProperties2KHR", VK_KHR_DISPLAY_EXTENSION_NAME);
7223*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_display_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayProperties2KHR", VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
7224*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceDisplayProperties2KHR", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, true, false, false, "VUID-VkDisplayProperties2KHR-sType-sType", "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter", kVUIDUndefined);
7225*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
7226*b7893ccfSSadaf Ebrahimi {
7227*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
7228*b7893ccfSSadaf Ebrahimi {
7229*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7230*b7893ccfSSadaf Ebrahimi }
7231*b7893ccfSSadaf Ebrahimi }
7232*b7893ccfSSadaf Ebrahimi return skip;
7233*b7893ccfSSadaf Ebrahimi }
7234*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)7235*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceDisplayPlaneProperties2KHR(
7236*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7237*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
7238*b7893ccfSSadaf Ebrahimi VkDisplayPlaneProperties2KHR* pProperties) {
7239*b7893ccfSSadaf Ebrahimi bool skip = false;
7240*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPlaneProperties2KHR", VK_KHR_DISPLAY_EXTENSION_NAME);
7241*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_display_properties_2) skip |= OutputExtensionError("vkGetPhysicalDeviceDisplayPlaneProperties2KHR", VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
7242*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceDisplayPlaneProperties2KHR", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, true, false, false, "VUID-VkDisplayPlaneProperties2KHR-sType-sType", "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter", kVUIDUndefined);
7243*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
7244*b7893ccfSSadaf Ebrahimi {
7245*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
7246*b7893ccfSSadaf Ebrahimi {
7247*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7248*b7893ccfSSadaf Ebrahimi }
7249*b7893ccfSSadaf Ebrahimi }
7250*b7893ccfSSadaf Ebrahimi return skip;
7251*b7893ccfSSadaf Ebrahimi }
7252*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)7253*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDisplayModeProperties2KHR(
7254*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7255*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
7256*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
7257*b7893ccfSSadaf Ebrahimi VkDisplayModeProperties2KHR* pProperties) {
7258*b7893ccfSSadaf Ebrahimi bool skip = false;
7259*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetDisplayModeProperties2KHR", VK_KHR_DISPLAY_EXTENSION_NAME);
7260*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_display_properties_2) skip |= OutputExtensionError("vkGetDisplayModeProperties2KHR", VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
7261*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDisplayModeProperties2KHR", "display", display);
7262*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetDisplayModeProperties2KHR", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, true, false, false, "VUID-VkDisplayModeProperties2KHR-sType-sType", "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter", kVUIDUndefined);
7263*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
7264*b7893ccfSSadaf Ebrahimi {
7265*b7893ccfSSadaf Ebrahimi for (uint32_t pPropertyIndex = 0; pPropertyIndex < *pPropertyCount; ++pPropertyIndex)
7266*b7893ccfSSadaf Ebrahimi {
7267*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7268*b7893ccfSSadaf Ebrahimi }
7269*b7893ccfSSadaf Ebrahimi }
7270*b7893ccfSSadaf Ebrahimi return skip;
7271*b7893ccfSSadaf Ebrahimi }
7272*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)7273*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDisplayPlaneCapabilities2KHR(
7274*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
7275*b7893ccfSSadaf Ebrahimi const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
7276*b7893ccfSSadaf Ebrahimi VkDisplayPlaneCapabilities2KHR* pCapabilities) {
7277*b7893ccfSSadaf Ebrahimi bool skip = false;
7278*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetDisplayPlaneCapabilities2KHR", VK_KHR_DISPLAY_EXTENSION_NAME);
7279*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_get_display_properties_2) skip |= OutputExtensionError("vkGetDisplayPlaneCapabilities2KHR", VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME);
7280*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDisplayPlaneCapabilities2KHR", "pDisplayPlaneInfo", "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR", pDisplayPlaneInfo, VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, true, "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter", "VUID-VkDisplayPlaneInfo2KHR-sType-sType");
7281*b7893ccfSSadaf Ebrahimi if (pDisplayPlaneInfo != NULL)
7282*b7893ccfSSadaf Ebrahimi {
7283*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetDisplayPlaneCapabilities2KHR", "pDisplayPlaneInfo->pNext", NULL, pDisplayPlaneInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext");
7284*b7893ccfSSadaf Ebrahimi
7285*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetDisplayPlaneCapabilities2KHR", "pDisplayPlaneInfo->mode", pDisplayPlaneInfo->mode);
7286*b7893ccfSSadaf Ebrahimi }
7287*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDisplayPlaneCapabilities2KHR", "pCapabilities", "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR", pCapabilities, VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, true, "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter", "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType");
7288*b7893ccfSSadaf Ebrahimi if (pCapabilities != NULL)
7289*b7893ccfSSadaf Ebrahimi {
7290*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7291*b7893ccfSSadaf Ebrahimi }
7292*b7893ccfSSadaf Ebrahimi return skip;
7293*b7893ccfSSadaf Ebrahimi }
7294*b7893ccfSSadaf Ebrahimi
7295*b7893ccfSSadaf Ebrahimi
7296*b7893ccfSSadaf Ebrahimi
7297*b7893ccfSSadaf Ebrahimi
7298*b7893ccfSSadaf Ebrahimi
7299*b7893ccfSSadaf Ebrahimi
7300*b7893ccfSSadaf Ebrahimi
7301*b7893ccfSSadaf Ebrahimi
7302*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7303*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageMemoryRequirements2KHR(
7304*b7893ccfSSadaf Ebrahimi VkDevice device,
7305*b7893ccfSSadaf Ebrahimi const VkImageMemoryRequirementsInfo2* pInfo,
7306*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements) {
7307*b7893ccfSSadaf Ebrahimi bool skip = false;
7308*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetImageMemoryRequirements2KHR", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
7309*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageMemoryRequirements2KHR", "pInfo", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetImageMemoryRequirements2-pInfo-parameter", "VUID-VkImageMemoryRequirementsInfo2-sType-sType");
7310*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
7311*b7893ccfSSadaf Ebrahimi {
7312*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkImageMemoryRequirementsInfo2[] = { VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO };
7313*b7893ccfSSadaf Ebrahimi
7314*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetImageMemoryRequirements2KHR", "pInfo->pNext", "VkImagePlaneMemoryRequirementsInfo", pInfo->pNext, ARRAY_SIZE(allowed_structs_VkImageMemoryRequirementsInfo2), allowed_structs_VkImageMemoryRequirementsInfo2, GeneratedVulkanHeaderVersion, "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext");
7315*b7893ccfSSadaf Ebrahimi
7316*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageMemoryRequirements2KHR", "pInfo->image", pInfo->image);
7317*b7893ccfSSadaf Ebrahimi }
7318*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageMemoryRequirements2KHR", "pMemoryRequirements", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pMemoryRequirements, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, true, "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter", "VUID-VkMemoryRequirements2-sType-sType");
7319*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
7320*b7893ccfSSadaf Ebrahimi {
7321*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7322*b7893ccfSSadaf Ebrahimi }
7323*b7893ccfSSadaf Ebrahimi return skip;
7324*b7893ccfSSadaf Ebrahimi }
7325*b7893ccfSSadaf Ebrahimi
PreCallValidateGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7326*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetBufferMemoryRequirements2KHR(
7327*b7893ccfSSadaf Ebrahimi VkDevice device,
7328*b7893ccfSSadaf Ebrahimi const VkBufferMemoryRequirementsInfo2* pInfo,
7329*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements) {
7330*b7893ccfSSadaf Ebrahimi bool skip = false;
7331*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetBufferMemoryRequirements2KHR", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
7332*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetBufferMemoryRequirements2KHR", "pInfo", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter", "VUID-VkBufferMemoryRequirementsInfo2-sType-sType");
7333*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
7334*b7893ccfSSadaf Ebrahimi {
7335*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetBufferMemoryRequirements2KHR", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext");
7336*b7893ccfSSadaf Ebrahimi
7337*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetBufferMemoryRequirements2KHR", "pInfo->buffer", pInfo->buffer);
7338*b7893ccfSSadaf Ebrahimi }
7339*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetBufferMemoryRequirements2KHR", "pMemoryRequirements", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pMemoryRequirements, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, true, "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter", "VUID-VkMemoryRequirements2-sType-sType");
7340*b7893ccfSSadaf Ebrahimi if (pMemoryRequirements != NULL)
7341*b7893ccfSSadaf Ebrahimi {
7342*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7343*b7893ccfSSadaf Ebrahimi }
7344*b7893ccfSSadaf Ebrahimi return skip;
7345*b7893ccfSSadaf Ebrahimi }
7346*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)7347*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageSparseMemoryRequirements2KHR(
7348*b7893ccfSSadaf Ebrahimi VkDevice device,
7349*b7893ccfSSadaf Ebrahimi const VkImageSparseMemoryRequirementsInfo2* pInfo,
7350*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
7351*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
7352*b7893ccfSSadaf Ebrahimi bool skip = false;
7353*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetImageSparseMemoryRequirements2KHR", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
7354*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageSparseMemoryRequirements2KHR", "pInfo", "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2", pInfo, VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, true, "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter", "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType");
7355*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
7356*b7893ccfSSadaf Ebrahimi {
7357*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetImageSparseMemoryRequirements2KHR", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext");
7358*b7893ccfSSadaf Ebrahimi
7359*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageSparseMemoryRequirements2KHR", "pInfo->image", pInfo->image);
7360*b7893ccfSSadaf Ebrahimi }
7361*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetImageSparseMemoryRequirements2KHR", "pSparseMemoryRequirementCount", "pSparseMemoryRequirements", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2", pSparseMemoryRequirementCount, pSparseMemoryRequirements, VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, true, false, false, "VUID-VkSparseImageMemoryRequirements2-sType-sType", "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter", kVUIDUndefined);
7362*b7893ccfSSadaf Ebrahimi if (pSparseMemoryRequirements != NULL)
7363*b7893ccfSSadaf Ebrahimi {
7364*b7893ccfSSadaf Ebrahimi for (uint32_t pSparseMemoryRequirementIndex = 0; pSparseMemoryRequirementIndex < *pSparseMemoryRequirementCount; ++pSparseMemoryRequirementIndex)
7365*b7893ccfSSadaf Ebrahimi {
7366*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7367*b7893ccfSSadaf Ebrahimi }
7368*b7893ccfSSadaf Ebrahimi }
7369*b7893ccfSSadaf Ebrahimi return skip;
7370*b7893ccfSSadaf Ebrahimi }
7371*b7893ccfSSadaf Ebrahimi
7372*b7893ccfSSadaf Ebrahimi
7373*b7893ccfSSadaf Ebrahimi
7374*b7893ccfSSadaf Ebrahimi
7375*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)7376*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateSamplerYcbcrConversionKHR(
7377*b7893ccfSSadaf Ebrahimi VkDevice device,
7378*b7893ccfSSadaf Ebrahimi const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
7379*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
7380*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion* pYcbcrConversion) {
7381*b7893ccfSSadaf Ebrahimi bool skip = false;
7382*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCreateSamplerYcbcrConversionKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7383*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCreateSamplerYcbcrConversionKHR", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
7384*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_bind_memory_2) skip |= OutputExtensionError("vkCreateSamplerYcbcrConversionKHR", VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
7385*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance1) skip |= OutputExtensionError("vkCreateSamplerYcbcrConversionKHR", VK_KHR_MAINTENANCE1_EXTENSION_NAME);
7386*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_sampler_ycbcr_conversion) skip |= OutputExtensionError("vkCreateSamplerYcbcrConversionKHR", VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
7387*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, true, "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter", "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType");
7388*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
7389*b7893ccfSSadaf Ebrahimi {
7390*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkSamplerYcbcrConversionCreateInfo[] = { VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID };
7391*b7893ccfSSadaf Ebrahimi
7392*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->pNext", "VkExternalFormatANDROID", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkSamplerYcbcrConversionCreateInfo), allowed_structs_VkSamplerYcbcrConversionCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext");
7393*b7893ccfSSadaf Ebrahimi
7394*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->format", "VkFormat", AllVkFormatEnums, pCreateInfo->format, "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter");
7395*b7893ccfSSadaf Ebrahimi
7396*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->ycbcrModel", "VkSamplerYcbcrModelConversion", AllVkSamplerYcbcrModelConversionEnums, pCreateInfo->ycbcrModel, "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter");
7397*b7893ccfSSadaf Ebrahimi
7398*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->ycbcrRange", "VkSamplerYcbcrRange", AllVkSamplerYcbcrRangeEnums, pCreateInfo->ycbcrRange, "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter");
7399*b7893ccfSSadaf Ebrahimi
7400*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->components.r", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.r, "VUID-VkComponentMapping-r-parameter");
7401*b7893ccfSSadaf Ebrahimi
7402*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->components.g", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.g, "VUID-VkComponentMapping-g-parameter");
7403*b7893ccfSSadaf Ebrahimi
7404*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->components.b", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.b, "VUID-VkComponentMapping-b-parameter");
7405*b7893ccfSSadaf Ebrahimi
7406*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->components.a", "VkComponentSwizzle", AllVkComponentSwizzleEnums, pCreateInfo->components.a, "VUID-VkComponentMapping-a-parameter");
7407*b7893ccfSSadaf Ebrahimi
7408*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->xChromaOffset", "VkChromaLocation", AllVkChromaLocationEnums, pCreateInfo->xChromaOffset, "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter");
7409*b7893ccfSSadaf Ebrahimi
7410*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->yChromaOffset", "VkChromaLocation", AllVkChromaLocationEnums, pCreateInfo->yChromaOffset, "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter");
7411*b7893ccfSSadaf Ebrahimi
7412*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->chromaFilter", "VkFilter", AllVkFilterEnums, pCreateInfo->chromaFilter, "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter");
7413*b7893ccfSSadaf Ebrahimi
7414*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCreateSamplerYcbcrConversionKHR", "pCreateInfo->forceExplicitReconstruction", pCreateInfo->forceExplicitReconstruction);
7415*b7893ccfSSadaf Ebrahimi }
7416*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
7417*b7893ccfSSadaf Ebrahimi {
7418*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
7419*b7893ccfSSadaf Ebrahimi
7420*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
7421*b7893ccfSSadaf Ebrahimi
7422*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
7423*b7893ccfSSadaf Ebrahimi
7424*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
7425*b7893ccfSSadaf Ebrahimi {
7426*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7427*b7893ccfSSadaf Ebrahimi
7428*b7893ccfSSadaf Ebrahimi }
7429*b7893ccfSSadaf Ebrahimi
7430*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
7431*b7893ccfSSadaf Ebrahimi {
7432*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7433*b7893ccfSSadaf Ebrahimi
7434*b7893ccfSSadaf Ebrahimi }
7435*b7893ccfSSadaf Ebrahimi }
7436*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateSamplerYcbcrConversionKHR", "pYcbcrConversion", pYcbcrConversion, "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter");
7437*b7893ccfSSadaf Ebrahimi return skip;
7438*b7893ccfSSadaf Ebrahimi }
7439*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)7440*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroySamplerYcbcrConversionKHR(
7441*b7893ccfSSadaf Ebrahimi VkDevice device,
7442*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion ycbcrConversion,
7443*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
7444*b7893ccfSSadaf Ebrahimi bool skip = false;
7445*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkDestroySamplerYcbcrConversionKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7446*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkDestroySamplerYcbcrConversionKHR", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
7447*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_bind_memory_2) skip |= OutputExtensionError("vkDestroySamplerYcbcrConversionKHR", VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
7448*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance1) skip |= OutputExtensionError("vkDestroySamplerYcbcrConversionKHR", VK_KHR_MAINTENANCE1_EXTENSION_NAME);
7449*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_sampler_ycbcr_conversion) skip |= OutputExtensionError("vkDestroySamplerYcbcrConversionKHR", VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
7450*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
7451*b7893ccfSSadaf Ebrahimi {
7452*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversionKHR", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
7453*b7893ccfSSadaf Ebrahimi
7454*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversionKHR", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
7455*b7893ccfSSadaf Ebrahimi
7456*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversionKHR", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
7457*b7893ccfSSadaf Ebrahimi
7458*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
7459*b7893ccfSSadaf Ebrahimi {
7460*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversionKHR", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7461*b7893ccfSSadaf Ebrahimi
7462*b7893ccfSSadaf Ebrahimi }
7463*b7893ccfSSadaf Ebrahimi
7464*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
7465*b7893ccfSSadaf Ebrahimi {
7466*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroySamplerYcbcrConversionKHR", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7467*b7893ccfSSadaf Ebrahimi
7468*b7893ccfSSadaf Ebrahimi }
7469*b7893ccfSSadaf Ebrahimi }
7470*b7893ccfSSadaf Ebrahimi return skip;
7471*b7893ccfSSadaf Ebrahimi }
7472*b7893ccfSSadaf Ebrahimi
7473*b7893ccfSSadaf Ebrahimi
7474*b7893ccfSSadaf Ebrahimi
PreCallValidateBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)7475*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindBufferMemory2KHR(
7476*b7893ccfSSadaf Ebrahimi VkDevice device,
7477*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
7478*b7893ccfSSadaf Ebrahimi const VkBindBufferMemoryInfo* pBindInfos) {
7479*b7893ccfSSadaf Ebrahimi bool skip = false;
7480*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_bind_memory_2) skip |= OutputExtensionError("vkBindBufferMemory2KHR", VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
7481*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkBindBufferMemory2KHR", "bindInfoCount", "pBindInfos", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", bindInfoCount, pBindInfos, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, true, true, "VUID-VkBindBufferMemoryInfo-sType-sType", "VUID-vkBindBufferMemory2-pBindInfos-parameter", "VUID-vkBindBufferMemory2-bindInfoCount-arraylength");
7482*b7893ccfSSadaf Ebrahimi if (pBindInfos != NULL)
7483*b7893ccfSSadaf Ebrahimi {
7484*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
7485*b7893ccfSSadaf Ebrahimi {
7486*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBindBufferMemoryInfo[] = { VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO };
7487*b7893ccfSSadaf Ebrahimi
7488*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBindBufferMemory2KHR", ParameterName("pBindInfos[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), "VkBindBufferMemoryDeviceGroupInfo", pBindInfos[bindInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkBindBufferMemoryInfo), allowed_structs_VkBindBufferMemoryInfo, GeneratedVulkanHeaderVersion, "VUID-VkBindBufferMemoryInfo-pNext-pNext");
7489*b7893ccfSSadaf Ebrahimi
7490*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory2KHR", ParameterName("pBindInfos[%i].buffer", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].buffer);
7491*b7893ccfSSadaf Ebrahimi
7492*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindBufferMemory2KHR", ParameterName("pBindInfos[%i].memory", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].memory);
7493*b7893ccfSSadaf Ebrahimi }
7494*b7893ccfSSadaf Ebrahimi }
7495*b7893ccfSSadaf Ebrahimi return skip;
7496*b7893ccfSSadaf Ebrahimi }
7497*b7893ccfSSadaf Ebrahimi
PreCallValidateBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)7498*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindImageMemory2KHR(
7499*b7893ccfSSadaf Ebrahimi VkDevice device,
7500*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
7501*b7893ccfSSadaf Ebrahimi const VkBindImageMemoryInfo* pBindInfos) {
7502*b7893ccfSSadaf Ebrahimi bool skip = false;
7503*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_bind_memory_2) skip |= OutputExtensionError("vkBindImageMemory2KHR", VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
7504*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkBindImageMemory2KHR", "bindInfoCount", "pBindInfos", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", bindInfoCount, pBindInfos, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, true, true, "VUID-VkBindImageMemoryInfo-sType-sType", "VUID-vkBindImageMemory2-pBindInfos-parameter", "VUID-vkBindImageMemory2-bindInfoCount-arraylength");
7505*b7893ccfSSadaf Ebrahimi if (pBindInfos != NULL)
7506*b7893ccfSSadaf Ebrahimi {
7507*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
7508*b7893ccfSSadaf Ebrahimi {
7509*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkBindImageMemoryInfo[] = { VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO };
7510*b7893ccfSSadaf Ebrahimi
7511*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBindImageMemory2KHR", ParameterName("pBindInfos[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), "VkBindImageMemoryDeviceGroupInfo, VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo", pBindInfos[bindInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkBindImageMemoryInfo), allowed_structs_VkBindImageMemoryInfo, GeneratedVulkanHeaderVersion, "VUID-VkBindImageMemoryInfo-pNext-pNext");
7512*b7893ccfSSadaf Ebrahimi
7513*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindImageMemory2KHR", ParameterName("pBindInfos[%i].image", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].image);
7514*b7893ccfSSadaf Ebrahimi }
7515*b7893ccfSSadaf Ebrahimi }
7516*b7893ccfSSadaf Ebrahimi return skip;
7517*b7893ccfSSadaf Ebrahimi }
7518*b7893ccfSSadaf Ebrahimi
7519*b7893ccfSSadaf Ebrahimi
7520*b7893ccfSSadaf Ebrahimi
PreCallValidateGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)7521*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetDescriptorSetLayoutSupportKHR(
7522*b7893ccfSSadaf Ebrahimi VkDevice device,
7523*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
7524*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayoutSupport* pSupport) {
7525*b7893ccfSSadaf Ebrahimi bool skip = false;
7526*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetDescriptorSetLayoutSupportKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7527*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_maintenance3) skip |= OutputExtensionError("vkGetDescriptorSetLayoutSupportKHR", VK_KHR_MAINTENANCE3_EXTENSION_NAME);
7528*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDescriptorSetLayoutSupportKHR", "pCreateInfo", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, true, "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter", "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType");
7529*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
7530*b7893ccfSSadaf Ebrahimi {
7531*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkDescriptorSetLayoutCreateInfo[] = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT };
7532*b7893ccfSSadaf Ebrahimi
7533*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetDescriptorSetLayoutSupportKHR", "pCreateInfo->pNext", "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDescriptorSetLayoutCreateInfo), allowed_structs_VkDescriptorSetLayoutCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext");
7534*b7893ccfSSadaf Ebrahimi
7535*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetDescriptorSetLayoutSupportKHR", "pCreateInfo->flags", "VkDescriptorSetLayoutCreateFlagBits", AllVkDescriptorSetLayoutCreateFlagBits, pCreateInfo->flags, kOptionalFlags, "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter");
7536*b7893ccfSSadaf Ebrahimi
7537*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetDescriptorSetLayoutSupportKHR", "pCreateInfo->bindingCount", "pCreateInfo->pBindings", pCreateInfo->bindingCount, &pCreateInfo->pBindings, false, true, kVUIDUndefined, "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter");
7538*b7893ccfSSadaf Ebrahimi
7539*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pBindings != NULL)
7540*b7893ccfSSadaf Ebrahimi {
7541*b7893ccfSSadaf Ebrahimi for (uint32_t bindingIndex = 0; bindingIndex < pCreateInfo->bindingCount; ++bindingIndex)
7542*b7893ccfSSadaf Ebrahimi {
7543*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetDescriptorSetLayoutSupportKHR", ParameterName("pCreateInfo->pBindings[%i].descriptorType", ParameterName::IndexVector{ bindingIndex }), "VkDescriptorType", AllVkDescriptorTypeEnums, pCreateInfo->pBindings[bindingIndex].descriptorType, "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter");
7544*b7893ccfSSadaf Ebrahimi }
7545*b7893ccfSSadaf Ebrahimi }
7546*b7893ccfSSadaf Ebrahimi }
7547*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetDescriptorSetLayoutSupportKHR", "pSupport", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", pSupport, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, true, "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter", "VUID-VkDescriptorSetLayoutSupport-sType-sType");
7548*b7893ccfSSadaf Ebrahimi if (pSupport != NULL)
7549*b7893ccfSSadaf Ebrahimi {
7550*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7551*b7893ccfSSadaf Ebrahimi }
7552*b7893ccfSSadaf Ebrahimi return skip;
7553*b7893ccfSSadaf Ebrahimi }
7554*b7893ccfSSadaf Ebrahimi
7555*b7893ccfSSadaf Ebrahimi
7556*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)7557*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndirectCountKHR(
7558*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7559*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
7560*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
7561*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
7562*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
7563*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
7564*b7893ccfSSadaf Ebrahimi uint32_t stride) {
7565*b7893ccfSSadaf Ebrahimi bool skip = false;
7566*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_draw_indirect_count) skip |= OutputExtensionError("vkCmdDrawIndirectCountKHR", VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME);
7567*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirectCountKHR", "buffer", buffer);
7568*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirectCountKHR", "countBuffer", countBuffer);
7569*b7893ccfSSadaf Ebrahimi return skip;
7570*b7893ccfSSadaf Ebrahimi }
7571*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)7572*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndexedIndirectCountKHR(
7573*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7574*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
7575*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
7576*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
7577*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
7578*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
7579*b7893ccfSSadaf Ebrahimi uint32_t stride) {
7580*b7893ccfSSadaf Ebrahimi bool skip = false;
7581*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_draw_indirect_count) skip |= OutputExtensionError("vkCmdDrawIndexedIndirectCountKHR", VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME);
7582*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndexedIndirectCountKHR", "buffer", buffer);
7583*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndexedIndirectCountKHR", "countBuffer", countBuffer);
7584*b7893ccfSSadaf Ebrahimi return skip;
7585*b7893ccfSSadaf Ebrahimi }
7586*b7893ccfSSadaf Ebrahimi
7587*b7893ccfSSadaf Ebrahimi
7588*b7893ccfSSadaf Ebrahimi
7589*b7893ccfSSadaf Ebrahimi
7590*b7893ccfSSadaf Ebrahimi
7591*b7893ccfSSadaf Ebrahimi
7592*b7893ccfSSadaf Ebrahimi
7593*b7893ccfSSadaf Ebrahimi
7594*b7893ccfSSadaf Ebrahimi
7595*b7893ccfSSadaf Ebrahimi
7596*b7893ccfSSadaf Ebrahimi
7597*b7893ccfSSadaf Ebrahimi
7598*b7893ccfSSadaf Ebrahimi
7599*b7893ccfSSadaf Ebrahimi
7600*b7893ccfSSadaf Ebrahimi
7601*b7893ccfSSadaf Ebrahimi
7602*b7893ccfSSadaf Ebrahimi
7603*b7893ccfSSadaf Ebrahimi
7604*b7893ccfSSadaf Ebrahimi
7605*b7893ccfSSadaf Ebrahimi
7606*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)7607*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPipelineExecutablePropertiesKHR(
7608*b7893ccfSSadaf Ebrahimi VkDevice device,
7609*b7893ccfSSadaf Ebrahimi const VkPipelineInfoKHR* pPipelineInfo,
7610*b7893ccfSSadaf Ebrahimi uint32_t* pExecutableCount,
7611*b7893ccfSSadaf Ebrahimi VkPipelineExecutablePropertiesKHR* pProperties) {
7612*b7893ccfSSadaf Ebrahimi bool skip = false;
7613*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutablePropertiesKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME);
7614*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPipelineExecutablePropertiesKHR", "pPipelineInfo", "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR", pPipelineInfo, VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, true, "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter", "VUID-VkPipelineInfoKHR-sType-sType");
7615*b7893ccfSSadaf Ebrahimi if (pPipelineInfo != NULL)
7616*b7893ccfSSadaf Ebrahimi {
7617*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPipelineExecutablePropertiesKHR", "pPipelineInfo->pNext", NULL, pPipelineInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineInfoKHR-pNext-pNext");
7618*b7893ccfSSadaf Ebrahimi
7619*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPipelineExecutablePropertiesKHR", "pPipelineInfo->pipeline", pPipelineInfo->pipeline);
7620*b7893ccfSSadaf Ebrahimi }
7621*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPipelineExecutablePropertiesKHR", "pExecutableCount", "pProperties", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR", pExecutableCount, pProperties, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, true, false, false, "VUID-VkPipelineExecutablePropertiesKHR-sType-sType", "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter", kVUIDUndefined);
7622*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
7623*b7893ccfSSadaf Ebrahimi {
7624*b7893ccfSSadaf Ebrahimi for (uint32_t pExecutableIndex = 0; pExecutableIndex < *pExecutableCount; ++pExecutableIndex)
7625*b7893ccfSSadaf Ebrahimi {
7626*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7627*b7893ccfSSadaf Ebrahimi }
7628*b7893ccfSSadaf Ebrahimi }
7629*b7893ccfSSadaf Ebrahimi return skip;
7630*b7893ccfSSadaf Ebrahimi }
7631*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)7632*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPipelineExecutableStatisticsKHR(
7633*b7893ccfSSadaf Ebrahimi VkDevice device,
7634*b7893ccfSSadaf Ebrahimi const VkPipelineExecutableInfoKHR* pExecutableInfo,
7635*b7893ccfSSadaf Ebrahimi uint32_t* pStatisticCount,
7636*b7893ccfSSadaf Ebrahimi VkPipelineExecutableStatisticKHR* pStatistics) {
7637*b7893ccfSSadaf Ebrahimi bool skip = false;
7638*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutableStatisticsKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME);
7639*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPipelineExecutableStatisticsKHR", "pExecutableInfo", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pExecutableInfo, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, true, "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter", "VUID-VkPipelineExecutableInfoKHR-sType-sType");
7640*b7893ccfSSadaf Ebrahimi if (pExecutableInfo != NULL)
7641*b7893ccfSSadaf Ebrahimi {
7642*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPipelineExecutableStatisticsKHR", "pExecutableInfo->pNext", NULL, pExecutableInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineExecutableInfoKHR-pNext-pNext");
7643*b7893ccfSSadaf Ebrahimi
7644*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPipelineExecutableStatisticsKHR", "pExecutableInfo->pipeline", pExecutableInfo->pipeline);
7645*b7893ccfSSadaf Ebrahimi }
7646*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPipelineExecutableStatisticsKHR", "pStatisticCount", "pStatistics", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR", pStatisticCount, pStatistics, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, true, false, false, "VUID-VkPipelineExecutableStatisticKHR-sType-sType", "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter", kVUIDUndefined);
7647*b7893ccfSSadaf Ebrahimi if (pStatistics != NULL)
7648*b7893ccfSSadaf Ebrahimi {
7649*b7893ccfSSadaf Ebrahimi for (uint32_t pStatisticIndex = 0; pStatisticIndex < *pStatisticCount; ++pStatisticIndex)
7650*b7893ccfSSadaf Ebrahimi {
7651*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7652*b7893ccfSSadaf Ebrahimi }
7653*b7893ccfSSadaf Ebrahimi }
7654*b7893ccfSSadaf Ebrahimi return skip;
7655*b7893ccfSSadaf Ebrahimi }
7656*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)7657*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPipelineExecutableInternalRepresentationsKHR(
7658*b7893ccfSSadaf Ebrahimi VkDevice device,
7659*b7893ccfSSadaf Ebrahimi const VkPipelineExecutableInfoKHR* pExecutableInfo,
7660*b7893ccfSSadaf Ebrahimi uint32_t* pInternalRepresentationCount,
7661*b7893ccfSSadaf Ebrahimi VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
7662*b7893ccfSSadaf Ebrahimi bool skip = false;
7663*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutableInternalRepresentationsKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME);
7664*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPipelineExecutableInternalRepresentationsKHR", "pExecutableInfo", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pExecutableInfo, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, true, "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter", "VUID-VkPipelineExecutableInfoKHR-sType-sType");
7665*b7893ccfSSadaf Ebrahimi if (pExecutableInfo != NULL)
7666*b7893ccfSSadaf Ebrahimi {
7667*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPipelineExecutableInternalRepresentationsKHR", "pExecutableInfo->pNext", NULL, pExecutableInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPipelineExecutableInfoKHR-pNext-pNext");
7668*b7893ccfSSadaf Ebrahimi
7669*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPipelineExecutableInternalRepresentationsKHR", "pExecutableInfo->pipeline", pExecutableInfo->pipeline);
7670*b7893ccfSSadaf Ebrahimi }
7671*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPipelineExecutableInternalRepresentationsKHR", "pInternalRepresentationCount", "pInternalRepresentations", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR", pInternalRepresentationCount, pInternalRepresentations, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, true, false, false, "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType", "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter", kVUIDUndefined);
7672*b7893ccfSSadaf Ebrahimi return skip;
7673*b7893ccfSSadaf Ebrahimi }
7674*b7893ccfSSadaf Ebrahimi
7675*b7893ccfSSadaf Ebrahimi
7676*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)7677*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDebugReportCallbackEXT(
7678*b7893ccfSSadaf Ebrahimi VkInstance instance,
7679*b7893ccfSSadaf Ebrahimi const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7680*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
7681*b7893ccfSSadaf Ebrahimi VkDebugReportCallbackEXT* pCallback) {
7682*b7893ccfSSadaf Ebrahimi bool skip = false;
7683*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkCreateDebugReportCallbackEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7684*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDebugReportCallbackEXT", "pCreateInfo", "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT", pCreateInfo, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, true, "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter", "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType");
7685*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
7686*b7893ccfSSadaf Ebrahimi {
7687*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDebugReportCallbackEXT", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, kVUIDUndefined);
7688*b7893ccfSSadaf Ebrahimi
7689*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDebugReportCallbackEXT", "pCreateInfo->flags", "VkDebugReportFlagBitsEXT", AllVkDebugReportFlagBitsEXT, pCreateInfo->flags, kOptionalFlags, "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter");
7690*b7893ccfSSadaf Ebrahimi
7691*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pCreateInfo->pfnCallback", reinterpret_cast<const void*>(pCreateInfo->pfnCallback), "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter");
7692*b7893ccfSSadaf Ebrahimi }
7693*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
7694*b7893ccfSSadaf Ebrahimi {
7695*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
7696*b7893ccfSSadaf Ebrahimi
7697*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
7698*b7893ccfSSadaf Ebrahimi
7699*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
7700*b7893ccfSSadaf Ebrahimi
7701*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
7702*b7893ccfSSadaf Ebrahimi {
7703*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7704*b7893ccfSSadaf Ebrahimi
7705*b7893ccfSSadaf Ebrahimi }
7706*b7893ccfSSadaf Ebrahimi
7707*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
7708*b7893ccfSSadaf Ebrahimi {
7709*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7710*b7893ccfSSadaf Ebrahimi
7711*b7893ccfSSadaf Ebrahimi }
7712*b7893ccfSSadaf Ebrahimi }
7713*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugReportCallbackEXT", "pCallback", pCallback, "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter");
7714*b7893ccfSSadaf Ebrahimi return skip;
7715*b7893ccfSSadaf Ebrahimi }
7716*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)7717*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDebugReportCallbackEXT(
7718*b7893ccfSSadaf Ebrahimi VkInstance instance,
7719*b7893ccfSSadaf Ebrahimi VkDebugReportCallbackEXT callback,
7720*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
7721*b7893ccfSSadaf Ebrahimi bool skip = false;
7722*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkDestroyDebugReportCallbackEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7723*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDestroyDebugReportCallbackEXT", "callback", callback);
7724*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
7725*b7893ccfSSadaf Ebrahimi {
7726*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugReportCallbackEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
7727*b7893ccfSSadaf Ebrahimi
7728*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugReportCallbackEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
7729*b7893ccfSSadaf Ebrahimi
7730*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugReportCallbackEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
7731*b7893ccfSSadaf Ebrahimi
7732*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
7733*b7893ccfSSadaf Ebrahimi {
7734*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugReportCallbackEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7735*b7893ccfSSadaf Ebrahimi
7736*b7893ccfSSadaf Ebrahimi }
7737*b7893ccfSSadaf Ebrahimi
7738*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
7739*b7893ccfSSadaf Ebrahimi {
7740*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugReportCallbackEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
7741*b7893ccfSSadaf Ebrahimi
7742*b7893ccfSSadaf Ebrahimi }
7743*b7893ccfSSadaf Ebrahimi }
7744*b7893ccfSSadaf Ebrahimi return skip;
7745*b7893ccfSSadaf Ebrahimi }
7746*b7893ccfSSadaf Ebrahimi
PreCallValidateDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)7747*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDebugReportMessageEXT(
7748*b7893ccfSSadaf Ebrahimi VkInstance instance,
7749*b7893ccfSSadaf Ebrahimi VkDebugReportFlagsEXT flags,
7750*b7893ccfSSadaf Ebrahimi VkDebugReportObjectTypeEXT objectType,
7751*b7893ccfSSadaf Ebrahimi uint64_t object,
7752*b7893ccfSSadaf Ebrahimi size_t location,
7753*b7893ccfSSadaf Ebrahimi int32_t messageCode,
7754*b7893ccfSSadaf Ebrahimi const char* pLayerPrefix,
7755*b7893ccfSSadaf Ebrahimi const char* pMessage) {
7756*b7893ccfSSadaf Ebrahimi bool skip = false;
7757*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkDebugReportMessageEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7758*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkDebugReportMessageEXT", "flags", "VkDebugReportFlagBitsEXT", AllVkDebugReportFlagBitsEXT, flags, kRequiredFlags, "VUID-vkDebugReportMessageEXT-flags-parameter", "VUID-vkDebugReportMessageEXT-flags-requiredbitmask");
7759*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkDebugReportMessageEXT", "objectType", "VkDebugReportObjectTypeEXT", AllVkDebugReportObjectTypeEXTEnums, objectType, "VUID-vkDebugReportMessageEXT-objectType-parameter");
7760*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDebugReportMessageEXT", "pLayerPrefix", pLayerPrefix, "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter");
7761*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDebugReportMessageEXT", "pMessage", pMessage, "VUID-vkDebugReportMessageEXT-pMessage-parameter");
7762*b7893ccfSSadaf Ebrahimi return skip;
7763*b7893ccfSSadaf Ebrahimi }
7764*b7893ccfSSadaf Ebrahimi
7765*b7893ccfSSadaf Ebrahimi
7766*b7893ccfSSadaf Ebrahimi
7767*b7893ccfSSadaf Ebrahimi
7768*b7893ccfSSadaf Ebrahimi
7769*b7893ccfSSadaf Ebrahimi
7770*b7893ccfSSadaf Ebrahimi
7771*b7893ccfSSadaf Ebrahimi
7772*b7893ccfSSadaf Ebrahimi
7773*b7893ccfSSadaf Ebrahimi
7774*b7893ccfSSadaf Ebrahimi
7775*b7893ccfSSadaf Ebrahimi
7776*b7893ccfSSadaf Ebrahimi
7777*b7893ccfSSadaf Ebrahimi
7778*b7893ccfSSadaf Ebrahimi
PreCallValidateDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)7779*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDebugMarkerSetObjectTagEXT(
7780*b7893ccfSSadaf Ebrahimi VkDevice device,
7781*b7893ccfSSadaf Ebrahimi const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
7782*b7893ccfSSadaf Ebrahimi bool skip = false;
7783*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkDebugMarkerSetObjectTagEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7784*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_marker) skip |= OutputExtensionError("vkDebugMarkerSetObjectTagEXT", VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
7785*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkDebugMarkerSetObjectTagEXT", "pTagInfo", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT", pTagInfo, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT, true, "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter", "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType");
7786*b7893ccfSSadaf Ebrahimi if (pTagInfo != NULL)
7787*b7893ccfSSadaf Ebrahimi {
7788*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkDebugMarkerSetObjectTagEXT", "pTagInfo->pNext", NULL, pTagInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext");
7789*b7893ccfSSadaf Ebrahimi
7790*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkDebugMarkerSetObjectTagEXT", "pTagInfo->objectType", "VkDebugReportObjectTypeEXT", AllVkDebugReportObjectTypeEXTEnums, pTagInfo->objectType, "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter");
7791*b7893ccfSSadaf Ebrahimi
7792*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkDebugMarkerSetObjectTagEXT", "pTagInfo->tagSize", "pTagInfo->pTag", pTagInfo->tagSize, &pTagInfo->pTag, true, true, "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength", "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter");
7793*b7893ccfSSadaf Ebrahimi }
7794*b7893ccfSSadaf Ebrahimi return skip;
7795*b7893ccfSSadaf Ebrahimi }
7796*b7893ccfSSadaf Ebrahimi
PreCallValidateDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)7797*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDebugMarkerSetObjectNameEXT(
7798*b7893ccfSSadaf Ebrahimi VkDevice device,
7799*b7893ccfSSadaf Ebrahimi const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
7800*b7893ccfSSadaf Ebrahimi bool skip = false;
7801*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkDebugMarkerSetObjectNameEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7802*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_marker) skip |= OutputExtensionError("vkDebugMarkerSetObjectNameEXT", VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
7803*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkDebugMarkerSetObjectNameEXT", "pNameInfo", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT", pNameInfo, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, true, "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter", "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType");
7804*b7893ccfSSadaf Ebrahimi if (pNameInfo != NULL)
7805*b7893ccfSSadaf Ebrahimi {
7806*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkDebugMarkerSetObjectNameEXT", "pNameInfo->pNext", NULL, pNameInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext");
7807*b7893ccfSSadaf Ebrahimi
7808*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkDebugMarkerSetObjectNameEXT", "pNameInfo->objectType", "VkDebugReportObjectTypeEXT", AllVkDebugReportObjectTypeEXTEnums, pNameInfo->objectType, "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter");
7809*b7893ccfSSadaf Ebrahimi
7810*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDebugMarkerSetObjectNameEXT", "pNameInfo->pObjectName", pNameInfo->pObjectName, "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter");
7811*b7893ccfSSadaf Ebrahimi }
7812*b7893ccfSSadaf Ebrahimi return skip;
7813*b7893ccfSSadaf Ebrahimi }
7814*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)7815*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDebugMarkerBeginEXT(
7816*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7817*b7893ccfSSadaf Ebrahimi const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7818*b7893ccfSSadaf Ebrahimi bool skip = false;
7819*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkCmdDebugMarkerBeginEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7820*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_marker) skip |= OutputExtensionError("vkCmdDebugMarkerBeginEXT", VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
7821*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdDebugMarkerBeginEXT", "pMarkerInfo", "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", pMarkerInfo, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, true, "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter", "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType");
7822*b7893ccfSSadaf Ebrahimi if (pMarkerInfo != NULL)
7823*b7893ccfSSadaf Ebrahimi {
7824*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdDebugMarkerBeginEXT", "pMarkerInfo->pNext", NULL, pMarkerInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext");
7825*b7893ccfSSadaf Ebrahimi
7826*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdDebugMarkerBeginEXT", "pMarkerInfo->pMarkerName", pMarkerInfo->pMarkerName, "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter");
7827*b7893ccfSSadaf Ebrahimi }
7828*b7893ccfSSadaf Ebrahimi return skip;
7829*b7893ccfSSadaf Ebrahimi }
7830*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)7831*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDebugMarkerEndEXT(
7832*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer) {
7833*b7893ccfSSadaf Ebrahimi bool skip = false;
7834*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkCmdDebugMarkerEndEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7835*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_marker) skip |= OutputExtensionError("vkCmdDebugMarkerEndEXT", VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
7836*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7837*b7893ccfSSadaf Ebrahimi return skip;
7838*b7893ccfSSadaf Ebrahimi }
7839*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)7840*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDebugMarkerInsertEXT(
7841*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7842*b7893ccfSSadaf Ebrahimi const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7843*b7893ccfSSadaf Ebrahimi bool skip = false;
7844*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_report) skip |= OutputExtensionError("vkCmdDebugMarkerInsertEXT", VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
7845*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_marker) skip |= OutputExtensionError("vkCmdDebugMarkerInsertEXT", VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
7846*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdDebugMarkerInsertEXT", "pMarkerInfo", "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", pMarkerInfo, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, true, "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter", "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType");
7847*b7893ccfSSadaf Ebrahimi if (pMarkerInfo != NULL)
7848*b7893ccfSSadaf Ebrahimi {
7849*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdDebugMarkerInsertEXT", "pMarkerInfo->pNext", NULL, pMarkerInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext");
7850*b7893ccfSSadaf Ebrahimi
7851*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdDebugMarkerInsertEXT", "pMarkerInfo->pMarkerName", pMarkerInfo->pMarkerName, "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter");
7852*b7893ccfSSadaf Ebrahimi }
7853*b7893ccfSSadaf Ebrahimi return skip;
7854*b7893ccfSSadaf Ebrahimi }
7855*b7893ccfSSadaf Ebrahimi
7856*b7893ccfSSadaf Ebrahimi
7857*b7893ccfSSadaf Ebrahimi
7858*b7893ccfSSadaf Ebrahimi
7859*b7893ccfSSadaf Ebrahimi
7860*b7893ccfSSadaf Ebrahimi
7861*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)7862*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindTransformFeedbackBuffersEXT(
7863*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7864*b7893ccfSSadaf Ebrahimi uint32_t firstBinding,
7865*b7893ccfSSadaf Ebrahimi uint32_t bindingCount,
7866*b7893ccfSSadaf Ebrahimi const VkBuffer* pBuffers,
7867*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pOffsets,
7868*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pSizes) {
7869*b7893ccfSSadaf Ebrahimi bool skip = false;
7870*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdBindTransformFeedbackBuffersEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7871*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdBindTransformFeedbackBuffersEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7872*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdBindTransformFeedbackBuffersEXT", "bindingCount", "pBuffers", bindingCount, pBuffers, true, true);
7873*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBindTransformFeedbackBuffersEXT", "bindingCount", "pOffsets", bindingCount, &pOffsets, true, true, "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength", "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter");
7874*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdBindTransformFeedbackBuffersEXT", "bindingCount", "pSizes", bindingCount, &pSizes, true, false, "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength", "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter");
7875*b7893ccfSSadaf Ebrahimi return skip;
7876*b7893ccfSSadaf Ebrahimi }
7877*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)7878*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginTransformFeedbackEXT(
7879*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7880*b7893ccfSSadaf Ebrahimi uint32_t firstCounterBuffer,
7881*b7893ccfSSadaf Ebrahimi uint32_t counterBufferCount,
7882*b7893ccfSSadaf Ebrahimi const VkBuffer* pCounterBuffers,
7883*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pCounterBufferOffsets) {
7884*b7893ccfSSadaf Ebrahimi bool skip = false;
7885*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdBeginTransformFeedbackEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7886*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdBeginTransformFeedbackEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7887*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7888*b7893ccfSSadaf Ebrahimi return skip;
7889*b7893ccfSSadaf Ebrahimi }
7890*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)7891*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndTransformFeedbackEXT(
7892*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7893*b7893ccfSSadaf Ebrahimi uint32_t firstCounterBuffer,
7894*b7893ccfSSadaf Ebrahimi uint32_t counterBufferCount,
7895*b7893ccfSSadaf Ebrahimi const VkBuffer* pCounterBuffers,
7896*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pCounterBufferOffsets) {
7897*b7893ccfSSadaf Ebrahimi bool skip = false;
7898*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdEndTransformFeedbackEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7899*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdEndTransformFeedbackEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7900*b7893ccfSSadaf Ebrahimi // No xml-driven validation
7901*b7893ccfSSadaf Ebrahimi return skip;
7902*b7893ccfSSadaf Ebrahimi }
7903*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)7904*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginQueryIndexedEXT(
7905*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7906*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
7907*b7893ccfSSadaf Ebrahimi uint32_t query,
7908*b7893ccfSSadaf Ebrahimi VkQueryControlFlags flags,
7909*b7893ccfSSadaf Ebrahimi uint32_t index) {
7910*b7893ccfSSadaf Ebrahimi bool skip = false;
7911*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdBeginQueryIndexedEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7912*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdBeginQueryIndexedEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7913*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginQueryIndexedEXT", "queryPool", queryPool);
7914*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBeginQueryIndexedEXT", "flags", "VkQueryControlFlagBits", AllVkQueryControlFlagBits, flags, kOptionalFlags, "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter");
7915*b7893ccfSSadaf Ebrahimi return skip;
7916*b7893ccfSSadaf Ebrahimi }
7917*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)7918*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndQueryIndexedEXT(
7919*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7920*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
7921*b7893ccfSSadaf Ebrahimi uint32_t query,
7922*b7893ccfSSadaf Ebrahimi uint32_t index) {
7923*b7893ccfSSadaf Ebrahimi bool skip = false;
7924*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdEndQueryIndexedEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7925*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdEndQueryIndexedEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7926*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdEndQueryIndexedEXT", "queryPool", queryPool);
7927*b7893ccfSSadaf Ebrahimi return skip;
7928*b7893ccfSSadaf Ebrahimi }
7929*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)7930*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndirectByteCountEXT(
7931*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7932*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
7933*b7893ccfSSadaf Ebrahimi uint32_t firstInstance,
7934*b7893ccfSSadaf Ebrahimi VkBuffer counterBuffer,
7935*b7893ccfSSadaf Ebrahimi VkDeviceSize counterBufferOffset,
7936*b7893ccfSSadaf Ebrahimi uint32_t counterOffset,
7937*b7893ccfSSadaf Ebrahimi uint32_t vertexStride) {
7938*b7893ccfSSadaf Ebrahimi bool skip = false;
7939*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdDrawIndirectByteCountEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
7940*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_transform_feedback) skip |= OutputExtensionError("vkCmdDrawIndirectByteCountEXT", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME);
7941*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirectByteCountEXT", "counterBuffer", counterBuffer);
7942*b7893ccfSSadaf Ebrahimi return skip;
7943*b7893ccfSSadaf Ebrahimi }
7944*b7893ccfSSadaf Ebrahimi
7945*b7893ccfSSadaf Ebrahimi
7946*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)7947*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageViewHandleNVX(
7948*b7893ccfSSadaf Ebrahimi VkDevice device,
7949*b7893ccfSSadaf Ebrahimi const VkImageViewHandleInfoNVX* pInfo) {
7950*b7893ccfSSadaf Ebrahimi bool skip = false;
7951*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_image_view_handle) skip |= OutputExtensionError("vkGetImageViewHandleNVX", VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME);
7952*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageViewHandleNVX", "pInfo", "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX", pInfo, VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX, true, "VUID-vkGetImageViewHandleNVX-pInfo-parameter", "VUID-VkImageViewHandleInfoNVX-sType-sType");
7953*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
7954*b7893ccfSSadaf Ebrahimi {
7955*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetImageViewHandleNVX", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImageViewHandleInfoNVX-pNext-pNext");
7956*b7893ccfSSadaf Ebrahimi
7957*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageViewHandleNVX", "pInfo->imageView", pInfo->imageView);
7958*b7893ccfSSadaf Ebrahimi
7959*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetImageViewHandleNVX", "pInfo->descriptorType", "VkDescriptorType", AllVkDescriptorTypeEnums, pInfo->descriptorType, "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter");
7960*b7893ccfSSadaf Ebrahimi }
7961*b7893ccfSSadaf Ebrahimi return skip;
7962*b7893ccfSSadaf Ebrahimi }
7963*b7893ccfSSadaf Ebrahimi
7964*b7893ccfSSadaf Ebrahimi
7965*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)7966*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndirectCountAMD(
7967*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7968*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
7969*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
7970*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
7971*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
7972*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
7973*b7893ccfSSadaf Ebrahimi uint32_t stride) {
7974*b7893ccfSSadaf Ebrahimi bool skip = false;
7975*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_amd_draw_indirect_count) skip |= OutputExtensionError("vkCmdDrawIndirectCountAMD", VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME);
7976*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirectCountAMD", "buffer", buffer);
7977*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndirectCountAMD", "countBuffer", countBuffer);
7978*b7893ccfSSadaf Ebrahimi return skip;
7979*b7893ccfSSadaf Ebrahimi }
7980*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)7981*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawIndexedIndirectCountAMD(
7982*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
7983*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
7984*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
7985*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
7986*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
7987*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
7988*b7893ccfSSadaf Ebrahimi uint32_t stride) {
7989*b7893ccfSSadaf Ebrahimi bool skip = false;
7990*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_amd_draw_indirect_count) skip |= OutputExtensionError("vkCmdDrawIndexedIndirectCountAMD", VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME);
7991*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndexedIndirectCountAMD", "buffer", buffer);
7992*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawIndexedIndirectCountAMD", "countBuffer", countBuffer);
7993*b7893ccfSSadaf Ebrahimi return skip;
7994*b7893ccfSSadaf Ebrahimi }
7995*b7893ccfSSadaf Ebrahimi
7996*b7893ccfSSadaf Ebrahimi
7997*b7893ccfSSadaf Ebrahimi
7998*b7893ccfSSadaf Ebrahimi
7999*b7893ccfSSadaf Ebrahimi
8000*b7893ccfSSadaf Ebrahimi
8001*b7893ccfSSadaf Ebrahimi
8002*b7893ccfSSadaf Ebrahimi
8003*b7893ccfSSadaf Ebrahimi
8004*b7893ccfSSadaf Ebrahimi
8005*b7893ccfSSadaf Ebrahimi
PreCallValidateGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)8006*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetShaderInfoAMD(
8007*b7893ccfSSadaf Ebrahimi VkDevice device,
8008*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
8009*b7893ccfSSadaf Ebrahimi VkShaderStageFlagBits shaderStage,
8010*b7893ccfSSadaf Ebrahimi VkShaderInfoTypeAMD infoType,
8011*b7893ccfSSadaf Ebrahimi size_t* pInfoSize,
8012*b7893ccfSSadaf Ebrahimi void* pInfo) {
8013*b7893ccfSSadaf Ebrahimi bool skip = false;
8014*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_amd_shader_info) skip |= OutputExtensionError("vkGetShaderInfoAMD", VK_AMD_SHADER_INFO_EXTENSION_NAME);
8015*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetShaderInfoAMD", "pipeline", pipeline);
8016*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetShaderInfoAMD", "shaderStage", "VkShaderStageFlagBits", AllVkShaderStageFlagBits, shaderStage, kRequiredSingleBit, "VUID-vkGetShaderInfoAMD-shaderStage-parameter", "VUID-vkGetShaderInfoAMD-shaderStage-parameter");
8017*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetShaderInfoAMD", "infoType", "VkShaderInfoTypeAMD", AllVkShaderInfoTypeAMDEnums, infoType, "VUID-vkGetShaderInfoAMD-infoType-parameter");
8018*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetShaderInfoAMD", "pInfoSize", "pInfo", pInfoSize, &pInfo, true, false, false, kVUIDUndefined, "VUID-vkGetShaderInfoAMD-pInfo-parameter");
8019*b7893ccfSSadaf Ebrahimi return skip;
8020*b7893ccfSSadaf Ebrahimi }
8021*b7893ccfSSadaf Ebrahimi
8022*b7893ccfSSadaf Ebrahimi
8023*b7893ccfSSadaf Ebrahimi
8024*b7893ccfSSadaf Ebrahimi
8025*b7893ccfSSadaf Ebrahimi
8026*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP
8027*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateStreamDescriptorSurfaceGGP(VkInstance instance,const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8028*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateStreamDescriptorSurfaceGGP(
8029*b7893ccfSSadaf Ebrahimi VkInstance instance,
8030*b7893ccfSSadaf Ebrahimi const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
8031*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8032*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
8033*b7893ccfSSadaf Ebrahimi bool skip = false;
8034*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateStreamDescriptorSurfaceGGP", VK_KHR_SURFACE_EXTENSION_NAME);
8035*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ggp_stream_descriptor_surface) skip |= OutputExtensionError("vkCreateStreamDescriptorSurfaceGGP", VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME);
8036*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateStreamDescriptorSurfaceGGP", "pCreateInfo", "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP", pCreateInfo, VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, true, "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter", "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType");
8037*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8038*b7893ccfSSadaf Ebrahimi {
8039*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateStreamDescriptorSurfaceGGP", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext");
8040*b7893ccfSSadaf Ebrahimi
8041*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateStreamDescriptorSurfaceGGP", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask");
8042*b7893ccfSSadaf Ebrahimi }
8043*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8044*b7893ccfSSadaf Ebrahimi {
8045*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8046*b7893ccfSSadaf Ebrahimi
8047*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8048*b7893ccfSSadaf Ebrahimi
8049*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8050*b7893ccfSSadaf Ebrahimi
8051*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8052*b7893ccfSSadaf Ebrahimi {
8053*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8054*b7893ccfSSadaf Ebrahimi
8055*b7893ccfSSadaf Ebrahimi }
8056*b7893ccfSSadaf Ebrahimi
8057*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8058*b7893ccfSSadaf Ebrahimi {
8059*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8060*b7893ccfSSadaf Ebrahimi
8061*b7893ccfSSadaf Ebrahimi }
8062*b7893ccfSSadaf Ebrahimi }
8063*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateStreamDescriptorSurfaceGGP", "pSurface", pSurface, "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter");
8064*b7893ccfSSadaf Ebrahimi return skip;
8065*b7893ccfSSadaf Ebrahimi }
8066*b7893ccfSSadaf Ebrahimi
8067*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_GGP
8068*b7893ccfSSadaf Ebrahimi
8069*b7893ccfSSadaf Ebrahimi
8070*b7893ccfSSadaf Ebrahimi
8071*b7893ccfSSadaf Ebrahimi
8072*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)8073*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceExternalImageFormatPropertiesNV(
8074*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8075*b7893ccfSSadaf Ebrahimi VkFormat format,
8076*b7893ccfSSadaf Ebrahimi VkImageType type,
8077*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
8078*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
8079*b7893ccfSSadaf Ebrahimi VkImageCreateFlags flags,
8080*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagsNV externalHandleType,
8081*b7893ccfSSadaf Ebrahimi VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
8082*b7893ccfSSadaf Ebrahimi bool skip = false;
8083*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_nv_external_memory_capabilities) skip |= OutputExtensionError("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
8084*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "format", "VkFormat", AllVkFormatEnums, format, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter");
8085*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "type", "VkImageType", AllVkImageTypeEnums, type, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter");
8086*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "tiling", "VkImageTiling", AllVkImageTilingEnums, tiling, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter");
8087*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "usage", "VkImageUsageFlagBits", AllVkImageUsageFlagBits, usage, kRequiredFlags, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter", "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask");
8088*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "flags", "VkImageCreateFlagBits", AllVkImageCreateFlagBits, flags, kOptionalFlags, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter");
8089*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "externalHandleType", "VkExternalMemoryHandleTypeFlagBitsNV", AllVkExternalMemoryHandleTypeFlagBitsNV, externalHandleType, kOptionalFlags, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter");
8090*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "pExternalImageFormatProperties", pExternalImageFormatProperties, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter");
8091*b7893ccfSSadaf Ebrahimi if (pExternalImageFormatProperties != NULL)
8092*b7893ccfSSadaf Ebrahimi {
8093*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8094*b7893ccfSSadaf Ebrahimi }
8095*b7893ccfSSadaf Ebrahimi return skip;
8096*b7893ccfSSadaf Ebrahimi }
8097*b7893ccfSSadaf Ebrahimi
8098*b7893ccfSSadaf Ebrahimi
8099*b7893ccfSSadaf Ebrahimi
8100*b7893ccfSSadaf Ebrahimi
8101*b7893ccfSSadaf Ebrahimi
8102*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
8103*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)8104*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryWin32HandleNV(
8105*b7893ccfSSadaf Ebrahimi VkDevice device,
8106*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
8107*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagsNV handleType,
8108*b7893ccfSSadaf Ebrahimi HANDLE* pHandle) {
8109*b7893ccfSSadaf Ebrahimi bool skip = false;
8110*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_external_memory) skip |= OutputExtensionError("vkGetMemoryWin32HandleNV", VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME);
8111*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_external_memory_win32) skip |= OutputExtensionError("vkGetMemoryWin32HandleNV", VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME);
8112*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetMemoryWin32HandleNV", "memory", memory);
8113*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryWin32HandleNV", "handleType", "VkExternalMemoryHandleTypeFlagBitsNV", AllVkExternalMemoryHandleTypeFlagBitsNV, handleType, kRequiredFlags, "VUID-vkGetMemoryWin32HandleNV-handleType-parameter", "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask");
8114*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetMemoryWin32HandleNV", "pHandle", pHandle, "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter");
8115*b7893ccfSSadaf Ebrahimi return skip;
8116*b7893ccfSSadaf Ebrahimi }
8117*b7893ccfSSadaf Ebrahimi
8118*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
8119*b7893ccfSSadaf Ebrahimi
8120*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
8121*b7893ccfSSadaf Ebrahimi
8122*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
8123*b7893ccfSSadaf Ebrahimi
8124*b7893ccfSSadaf Ebrahimi
8125*b7893ccfSSadaf Ebrahimi
8126*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_VI_NN
8127*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8128*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateViSurfaceNN(
8129*b7893ccfSSadaf Ebrahimi VkInstance instance,
8130*b7893ccfSSadaf Ebrahimi const VkViSurfaceCreateInfoNN* pCreateInfo,
8131*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8132*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
8133*b7893ccfSSadaf Ebrahimi bool skip = false;
8134*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateViSurfaceNN", VK_KHR_SURFACE_EXTENSION_NAME);
8135*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_nn_vi_surface) skip |= OutputExtensionError("vkCreateViSurfaceNN", VK_NN_VI_SURFACE_EXTENSION_NAME);
8136*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateViSurfaceNN", "pCreateInfo", "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN", pCreateInfo, VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN, true, "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter", "VUID-VkViSurfaceCreateInfoNN-sType-sType");
8137*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8138*b7893ccfSSadaf Ebrahimi {
8139*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateViSurfaceNN", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkViSurfaceCreateInfoNN-pNext-pNext");
8140*b7893ccfSSadaf Ebrahimi
8141*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateViSurfaceNN", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask");
8142*b7893ccfSSadaf Ebrahimi }
8143*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8144*b7893ccfSSadaf Ebrahimi {
8145*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8146*b7893ccfSSadaf Ebrahimi
8147*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8148*b7893ccfSSadaf Ebrahimi
8149*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8150*b7893ccfSSadaf Ebrahimi
8151*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8152*b7893ccfSSadaf Ebrahimi {
8153*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8154*b7893ccfSSadaf Ebrahimi
8155*b7893ccfSSadaf Ebrahimi }
8156*b7893ccfSSadaf Ebrahimi
8157*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8158*b7893ccfSSadaf Ebrahimi {
8159*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8160*b7893ccfSSadaf Ebrahimi
8161*b7893ccfSSadaf Ebrahimi }
8162*b7893ccfSSadaf Ebrahimi }
8163*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateViSurfaceNN", "pSurface", pSurface, "VUID-vkCreateViSurfaceNN-pSurface-parameter");
8164*b7893ccfSSadaf Ebrahimi return skip;
8165*b7893ccfSSadaf Ebrahimi }
8166*b7893ccfSSadaf Ebrahimi
8167*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_VI_NN
8168*b7893ccfSSadaf Ebrahimi
8169*b7893ccfSSadaf Ebrahimi
8170*b7893ccfSSadaf Ebrahimi
8171*b7893ccfSSadaf Ebrahimi
8172*b7893ccfSSadaf Ebrahimi
8173*b7893ccfSSadaf Ebrahimi
8174*b7893ccfSSadaf Ebrahimi
8175*b7893ccfSSadaf Ebrahimi
8176*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)8177*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginConditionalRenderingEXT(
8178*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8179*b7893ccfSSadaf Ebrahimi const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
8180*b7893ccfSSadaf Ebrahimi bool skip = false;
8181*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_conditional_rendering) skip |= OutputExtensionError("vkCmdBeginConditionalRenderingEXT", VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME);
8182*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBeginConditionalRenderingEXT", "pConditionalRenderingBegin", "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT", pConditionalRenderingBegin, VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, true, "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter", "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType");
8183*b7893ccfSSadaf Ebrahimi if (pConditionalRenderingBegin != NULL)
8184*b7893ccfSSadaf Ebrahimi {
8185*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBeginConditionalRenderingEXT", "pConditionalRenderingBegin->pNext", NULL, pConditionalRenderingBegin->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext");
8186*b7893ccfSSadaf Ebrahimi
8187*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBeginConditionalRenderingEXT", "pConditionalRenderingBegin->buffer", pConditionalRenderingBegin->buffer);
8188*b7893ccfSSadaf Ebrahimi
8189*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBeginConditionalRenderingEXT", "pConditionalRenderingBegin->flags", "VkConditionalRenderingFlagBitsEXT", AllVkConditionalRenderingFlagBitsEXT, pConditionalRenderingBegin->flags, kOptionalFlags, "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter");
8190*b7893ccfSSadaf Ebrahimi }
8191*b7893ccfSSadaf Ebrahimi return skip;
8192*b7893ccfSSadaf Ebrahimi }
8193*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)8194*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndConditionalRenderingEXT(
8195*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer) {
8196*b7893ccfSSadaf Ebrahimi bool skip = false;
8197*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_conditional_rendering) skip |= OutputExtensionError("vkCmdEndConditionalRenderingEXT", VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME);
8198*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8199*b7893ccfSSadaf Ebrahimi return skip;
8200*b7893ccfSSadaf Ebrahimi }
8201*b7893ccfSSadaf Ebrahimi
8202*b7893ccfSSadaf Ebrahimi
8203*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdProcessCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdProcessCommandsInfoNVX * pProcessCommandsInfo)8204*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdProcessCommandsNVX(
8205*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8206*b7893ccfSSadaf Ebrahimi const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
8207*b7893ccfSSadaf Ebrahimi bool skip = false;
8208*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkCmdProcessCommandsNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8209*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdProcessCommandsNVX", "pProcessCommandsInfo", "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX", pProcessCommandsInfo, VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX, true, "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter", "VUID-VkCmdProcessCommandsInfoNVX-sType-sType");
8210*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo != NULL)
8211*b7893ccfSSadaf Ebrahimi {
8212*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdProcessCommandsNVX", "pProcessCommandsInfo->pNext", NULL, pProcessCommandsInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext");
8213*b7893ccfSSadaf Ebrahimi
8214*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdProcessCommandsNVX", "pProcessCommandsInfo->objectTable", pProcessCommandsInfo->objectTable);
8215*b7893ccfSSadaf Ebrahimi
8216*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdProcessCommandsNVX", "pProcessCommandsInfo->indirectCommandsLayout", pProcessCommandsInfo->indirectCommandsLayout);
8217*b7893ccfSSadaf Ebrahimi
8218*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdProcessCommandsNVX", "pProcessCommandsInfo->indirectCommandsTokenCount", "pProcessCommandsInfo->pIndirectCommandsTokens", pProcessCommandsInfo->indirectCommandsTokenCount, &pProcessCommandsInfo->pIndirectCommandsTokens, true, true, "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength", "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter");
8219*b7893ccfSSadaf Ebrahimi
8220*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->pIndirectCommandsTokens != NULL)
8221*b7893ccfSSadaf Ebrahimi {
8222*b7893ccfSSadaf Ebrahimi for (uint32_t indirectCommandsTokenIndex = 0; indirectCommandsTokenIndex < pProcessCommandsInfo->indirectCommandsTokenCount; ++indirectCommandsTokenIndex)
8223*b7893ccfSSadaf Ebrahimi {
8224*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdProcessCommandsNVX", ParameterName("pProcessCommandsInfo->pIndirectCommandsTokens[%i].tokenType", ParameterName::IndexVector{ indirectCommandsTokenIndex }), "VkIndirectCommandsTokenTypeNVX", AllVkIndirectCommandsTokenTypeNVXEnums, pProcessCommandsInfo->pIndirectCommandsTokens[indirectCommandsTokenIndex].tokenType, "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter");
8225*b7893ccfSSadaf Ebrahimi
8226*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdProcessCommandsNVX", ParameterName("pProcessCommandsInfo->pIndirectCommandsTokens[%i].buffer", ParameterName::IndexVector{ indirectCommandsTokenIndex }), pProcessCommandsInfo->pIndirectCommandsTokens[indirectCommandsTokenIndex].buffer);
8227*b7893ccfSSadaf Ebrahimi }
8228*b7893ccfSSadaf Ebrahimi }
8229*b7893ccfSSadaf Ebrahimi }
8230*b7893ccfSSadaf Ebrahimi return skip;
8231*b7893ccfSSadaf Ebrahimi }
8232*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdReserveSpaceForCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdReserveSpaceForCommandsInfoNVX * pReserveSpaceInfo)8233*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdReserveSpaceForCommandsNVX(
8234*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8235*b7893ccfSSadaf Ebrahimi const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
8236*b7893ccfSSadaf Ebrahimi bool skip = false;
8237*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkCmdReserveSpaceForCommandsNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8238*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdReserveSpaceForCommandsNVX", "pReserveSpaceInfo", "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX", pReserveSpaceInfo, VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX, true, "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter", "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType");
8239*b7893ccfSSadaf Ebrahimi if (pReserveSpaceInfo != NULL)
8240*b7893ccfSSadaf Ebrahimi {
8241*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdReserveSpaceForCommandsNVX", "pReserveSpaceInfo->pNext", NULL, pReserveSpaceInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext");
8242*b7893ccfSSadaf Ebrahimi
8243*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdReserveSpaceForCommandsNVX", "pReserveSpaceInfo->objectTable", pReserveSpaceInfo->objectTable);
8244*b7893ccfSSadaf Ebrahimi
8245*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdReserveSpaceForCommandsNVX", "pReserveSpaceInfo->indirectCommandsLayout", pReserveSpaceInfo->indirectCommandsLayout);
8246*b7893ccfSSadaf Ebrahimi }
8247*b7893ccfSSadaf Ebrahimi return skip;
8248*b7893ccfSSadaf Ebrahimi }
8249*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateIndirectCommandsLayoutNVX(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNVX * pIndirectCommandsLayout)8250*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateIndirectCommandsLayoutNVX(
8251*b7893ccfSSadaf Ebrahimi VkDevice device,
8252*b7893ccfSSadaf Ebrahimi const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
8253*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8254*b7893ccfSSadaf Ebrahimi VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
8255*b7893ccfSSadaf Ebrahimi bool skip = false;
8256*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkCreateIndirectCommandsLayoutNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8257*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateIndirectCommandsLayoutNVX", "pCreateInfo", "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX", pCreateInfo, VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX, true, "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter", "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType");
8258*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8259*b7893ccfSSadaf Ebrahimi {
8260*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateIndirectCommandsLayoutNVX", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext");
8261*b7893ccfSSadaf Ebrahimi
8262*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateIndirectCommandsLayoutNVX", "pCreateInfo->pipelineBindPoint", "VkPipelineBindPoint", AllVkPipelineBindPointEnums, pCreateInfo->pipelineBindPoint, "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter");
8263*b7893ccfSSadaf Ebrahimi
8264*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateIndirectCommandsLayoutNVX", "pCreateInfo->flags", "VkIndirectCommandsLayoutUsageFlagBitsNVX", AllVkIndirectCommandsLayoutUsageFlagBitsNVX, pCreateInfo->flags, kRequiredFlags, "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter", "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask");
8265*b7893ccfSSadaf Ebrahimi
8266*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateIndirectCommandsLayoutNVX", "pCreateInfo->tokenCount", "pCreateInfo->pTokens", pCreateInfo->tokenCount, &pCreateInfo->pTokens, true, true, "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength", "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter");
8267*b7893ccfSSadaf Ebrahimi
8268*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pTokens != NULL)
8269*b7893ccfSSadaf Ebrahimi {
8270*b7893ccfSSadaf Ebrahimi for (uint32_t tokenIndex = 0; tokenIndex < pCreateInfo->tokenCount; ++tokenIndex)
8271*b7893ccfSSadaf Ebrahimi {
8272*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateIndirectCommandsLayoutNVX", ParameterName("pCreateInfo->pTokens[%i].tokenType", ParameterName::IndexVector{ tokenIndex }), "VkIndirectCommandsTokenTypeNVX", AllVkIndirectCommandsTokenTypeNVXEnums, pCreateInfo->pTokens[tokenIndex].tokenType, "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter");
8273*b7893ccfSSadaf Ebrahimi }
8274*b7893ccfSSadaf Ebrahimi }
8275*b7893ccfSSadaf Ebrahimi }
8276*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8277*b7893ccfSSadaf Ebrahimi {
8278*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8279*b7893ccfSSadaf Ebrahimi
8280*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8281*b7893ccfSSadaf Ebrahimi
8282*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8283*b7893ccfSSadaf Ebrahimi
8284*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8285*b7893ccfSSadaf Ebrahimi {
8286*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8287*b7893ccfSSadaf Ebrahimi
8288*b7893ccfSSadaf Ebrahimi }
8289*b7893ccfSSadaf Ebrahimi
8290*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8291*b7893ccfSSadaf Ebrahimi {
8292*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8293*b7893ccfSSadaf Ebrahimi
8294*b7893ccfSSadaf Ebrahimi }
8295*b7893ccfSSadaf Ebrahimi }
8296*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIndirectCommandsLayoutNVX", "pIndirectCommandsLayout", pIndirectCommandsLayout, "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter");
8297*b7893ccfSSadaf Ebrahimi return skip;
8298*b7893ccfSSadaf Ebrahimi }
8299*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyIndirectCommandsLayoutNVX(VkDevice device,VkIndirectCommandsLayoutNVX indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)8300*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyIndirectCommandsLayoutNVX(
8301*b7893ccfSSadaf Ebrahimi VkDevice device,
8302*b7893ccfSSadaf Ebrahimi VkIndirectCommandsLayoutNVX indirectCommandsLayout,
8303*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
8304*b7893ccfSSadaf Ebrahimi bool skip = false;
8305*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkDestroyIndirectCommandsLayoutNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8306*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDestroyIndirectCommandsLayoutNVX", "indirectCommandsLayout", indirectCommandsLayout);
8307*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8308*b7893ccfSSadaf Ebrahimi {
8309*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyIndirectCommandsLayoutNVX", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8310*b7893ccfSSadaf Ebrahimi
8311*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyIndirectCommandsLayoutNVX", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8312*b7893ccfSSadaf Ebrahimi
8313*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyIndirectCommandsLayoutNVX", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8314*b7893ccfSSadaf Ebrahimi
8315*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8316*b7893ccfSSadaf Ebrahimi {
8317*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyIndirectCommandsLayoutNVX", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8318*b7893ccfSSadaf Ebrahimi
8319*b7893ccfSSadaf Ebrahimi }
8320*b7893ccfSSadaf Ebrahimi
8321*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8322*b7893ccfSSadaf Ebrahimi {
8323*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyIndirectCommandsLayoutNVX", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8324*b7893ccfSSadaf Ebrahimi
8325*b7893ccfSSadaf Ebrahimi }
8326*b7893ccfSSadaf Ebrahimi }
8327*b7893ccfSSadaf Ebrahimi return skip;
8328*b7893ccfSSadaf Ebrahimi }
8329*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateObjectTableNVX(VkDevice device,const VkObjectTableCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkObjectTableNVX * pObjectTable)8330*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateObjectTableNVX(
8331*b7893ccfSSadaf Ebrahimi VkDevice device,
8332*b7893ccfSSadaf Ebrahimi const VkObjectTableCreateInfoNVX* pCreateInfo,
8333*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8334*b7893ccfSSadaf Ebrahimi VkObjectTableNVX* pObjectTable) {
8335*b7893ccfSSadaf Ebrahimi bool skip = false;
8336*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkCreateObjectTableNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8337*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateObjectTableNVX", "pCreateInfo", "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX", pCreateInfo, VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX, true, "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter", "VUID-VkObjectTableCreateInfoNVX-sType-sType");
8338*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8339*b7893ccfSSadaf Ebrahimi {
8340*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateObjectTableNVX", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkObjectTableCreateInfoNVX-pNext-pNext");
8341*b7893ccfSSadaf Ebrahimi
8342*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("vkCreateObjectTableNVX", "pCreateInfo->objectCount", "pCreateInfo->pObjectEntryTypes", "VkObjectEntryTypeNVX", AllVkObjectEntryTypeNVXEnums, pCreateInfo->objectCount, pCreateInfo->pObjectEntryTypes, true, true);
8343*b7893ccfSSadaf Ebrahimi
8344*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateObjectTableNVX", "pCreateInfo->objectCount", "pCreateInfo->pObjectEntryCounts", pCreateInfo->objectCount, &pCreateInfo->pObjectEntryCounts, true, true, "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength", "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter");
8345*b7893ccfSSadaf Ebrahimi
8346*b7893ccfSSadaf Ebrahimi skip |= validate_flags_array("vkCreateObjectTableNVX", "pCreateInfo->objectCount", "pCreateInfo->pObjectEntryUsageFlags", "VkObjectEntryUsageFlagBitsNVX", AllVkObjectEntryUsageFlagBitsNVX, pCreateInfo->objectCount, pCreateInfo->pObjectEntryUsageFlags, true, true);
8347*b7893ccfSSadaf Ebrahimi }
8348*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8349*b7893ccfSSadaf Ebrahimi {
8350*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8351*b7893ccfSSadaf Ebrahimi
8352*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8353*b7893ccfSSadaf Ebrahimi
8354*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8355*b7893ccfSSadaf Ebrahimi
8356*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8357*b7893ccfSSadaf Ebrahimi {
8358*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8359*b7893ccfSSadaf Ebrahimi
8360*b7893ccfSSadaf Ebrahimi }
8361*b7893ccfSSadaf Ebrahimi
8362*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8363*b7893ccfSSadaf Ebrahimi {
8364*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8365*b7893ccfSSadaf Ebrahimi
8366*b7893ccfSSadaf Ebrahimi }
8367*b7893ccfSSadaf Ebrahimi }
8368*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateObjectTableNVX", "pObjectTable", pObjectTable, "VUID-vkCreateObjectTableNVX-pObjectTable-parameter");
8369*b7893ccfSSadaf Ebrahimi return skip;
8370*b7893ccfSSadaf Ebrahimi }
8371*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyObjectTableNVX(VkDevice device,VkObjectTableNVX objectTable,const VkAllocationCallbacks * pAllocator)8372*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyObjectTableNVX(
8373*b7893ccfSSadaf Ebrahimi VkDevice device,
8374*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
8375*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
8376*b7893ccfSSadaf Ebrahimi bool skip = false;
8377*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkDestroyObjectTableNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8378*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDestroyObjectTableNVX", "objectTable", objectTable);
8379*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8380*b7893ccfSSadaf Ebrahimi {
8381*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyObjectTableNVX", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8382*b7893ccfSSadaf Ebrahimi
8383*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyObjectTableNVX", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8384*b7893ccfSSadaf Ebrahimi
8385*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyObjectTableNVX", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8386*b7893ccfSSadaf Ebrahimi
8387*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8388*b7893ccfSSadaf Ebrahimi {
8389*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyObjectTableNVX", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8390*b7893ccfSSadaf Ebrahimi
8391*b7893ccfSSadaf Ebrahimi }
8392*b7893ccfSSadaf Ebrahimi
8393*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8394*b7893ccfSSadaf Ebrahimi {
8395*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyObjectTableNVX", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8396*b7893ccfSSadaf Ebrahimi
8397*b7893ccfSSadaf Ebrahimi }
8398*b7893ccfSSadaf Ebrahimi }
8399*b7893ccfSSadaf Ebrahimi return skip;
8400*b7893ccfSSadaf Ebrahimi }
8401*b7893ccfSSadaf Ebrahimi
PreCallValidateRegisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectTableEntryNVX * const * ppObjectTableEntries,const uint32_t * pObjectIndices)8402*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateRegisterObjectsNVX(
8403*b7893ccfSSadaf Ebrahimi VkDevice device,
8404*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
8405*b7893ccfSSadaf Ebrahimi uint32_t objectCount,
8406*b7893ccfSSadaf Ebrahimi const VkObjectTableEntryNVX* const* ppObjectTableEntries,
8407*b7893ccfSSadaf Ebrahimi const uint32_t* pObjectIndices) {
8408*b7893ccfSSadaf Ebrahimi bool skip = false;
8409*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkRegisterObjectsNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8410*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkRegisterObjectsNVX", "objectTable", objectTable);
8411*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkRegisterObjectsNVX", "objectCount", "ppObjectTableEntries", objectCount, &ppObjectTableEntries, true, true, "VUID-vkRegisterObjectsNVX-objectCount-arraylength", "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter");
8412*b7893ccfSSadaf Ebrahimi if (ppObjectTableEntries != NULL)
8413*b7893ccfSSadaf Ebrahimi {
8414*b7893ccfSSadaf Ebrahimi for (uint32_t objectIndex = 0; objectIndex < objectCount; ++objectIndex)
8415*b7893ccfSSadaf Ebrahimi {
8416*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkRegisterObjectsNVX", ParameterName("ppObjectTableEntries[%i]->type", ParameterName::IndexVector{ objectIndex }), "VkObjectEntryTypeNVX", AllVkObjectEntryTypeNVXEnums, ppObjectTableEntries[objectIndex]->type, "VUID-VkObjectTableEntryNVX-type-parameter");
8417*b7893ccfSSadaf Ebrahimi
8418*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkRegisterObjectsNVX", ParameterName("ppObjectTableEntries[%i]->flags", ParameterName::IndexVector{ objectIndex }), "VkObjectEntryUsageFlagBitsNVX", AllVkObjectEntryUsageFlagBitsNVX, ppObjectTableEntries[objectIndex]->flags, kRequiredFlags, "VUID-VkObjectTableEntryNVX-flags-parameter", "VUID-VkObjectTableEntryNVX-flags-requiredbitmask");
8419*b7893ccfSSadaf Ebrahimi }
8420*b7893ccfSSadaf Ebrahimi }
8421*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkRegisterObjectsNVX", "objectCount", "pObjectIndices", objectCount, &pObjectIndices, true, true, "VUID-vkRegisterObjectsNVX-objectCount-arraylength", "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter");
8422*b7893ccfSSadaf Ebrahimi return skip;
8423*b7893ccfSSadaf Ebrahimi }
8424*b7893ccfSSadaf Ebrahimi
PreCallValidateUnregisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectEntryTypeNVX * pObjectEntryTypes,const uint32_t * pObjectIndices)8425*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUnregisterObjectsNVX(
8426*b7893ccfSSadaf Ebrahimi VkDevice device,
8427*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
8428*b7893ccfSSadaf Ebrahimi uint32_t objectCount,
8429*b7893ccfSSadaf Ebrahimi const VkObjectEntryTypeNVX* pObjectEntryTypes,
8430*b7893ccfSSadaf Ebrahimi const uint32_t* pObjectIndices) {
8431*b7893ccfSSadaf Ebrahimi bool skip = false;
8432*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nvx_device_generated_commands) skip |= OutputExtensionError("vkUnregisterObjectsNVX", VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME);
8433*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkUnregisterObjectsNVX", "objectTable", objectTable);
8434*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("vkUnregisterObjectsNVX", "objectCount", "pObjectEntryTypes", "VkObjectEntryTypeNVX", AllVkObjectEntryTypeNVXEnums, objectCount, pObjectEntryTypes, true, true);
8435*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkUnregisterObjectsNVX", "objectCount", "pObjectIndices", objectCount, &pObjectIndices, true, true, "VUID-vkUnregisterObjectsNVX-objectCount-arraylength", "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter");
8436*b7893ccfSSadaf Ebrahimi return skip;
8437*b7893ccfSSadaf Ebrahimi }
8438*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceGeneratedCommandsPropertiesNVX(VkPhysicalDevice physicalDevice,VkDeviceGeneratedCommandsFeaturesNVX * pFeatures,VkDeviceGeneratedCommandsLimitsNVX * pLimits)8439*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
8440*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8441*b7893ccfSSadaf Ebrahimi VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
8442*b7893ccfSSadaf Ebrahimi VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
8443*b7893ccfSSadaf Ebrahimi bool skip = false;
8444*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX", "pFeatures", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX", pFeatures, VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX, true, "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter", "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType");
8445*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX", "pLimits", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX", pLimits, VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX, true, "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter", "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType");
8446*b7893ccfSSadaf Ebrahimi return skip;
8447*b7893ccfSSadaf Ebrahimi }
8448*b7893ccfSSadaf Ebrahimi
8449*b7893ccfSSadaf Ebrahimi
8450*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)8451*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetViewportWScalingNV(
8452*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8453*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
8454*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
8455*b7893ccfSSadaf Ebrahimi const VkViewportWScalingNV* pViewportWScalings) {
8456*b7893ccfSSadaf Ebrahimi bool skip = false;
8457*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_clip_space_w_scaling) skip |= OutputExtensionError("vkCmdSetViewportWScalingNV", VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME);
8458*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetViewportWScalingNV", "viewportCount", "pViewportWScalings", viewportCount, &pViewportWScalings, true, true, "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength", "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter");
8459*b7893ccfSSadaf Ebrahimi if (pViewportWScalings != NULL)
8460*b7893ccfSSadaf Ebrahimi {
8461*b7893ccfSSadaf Ebrahimi for (uint32_t viewportIndex = 0; viewportIndex < viewportCount; ++viewportIndex)
8462*b7893ccfSSadaf Ebrahimi {
8463*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8464*b7893ccfSSadaf Ebrahimi }
8465*b7893ccfSSadaf Ebrahimi }
8466*b7893ccfSSadaf Ebrahimi return skip;
8467*b7893ccfSSadaf Ebrahimi }
8468*b7893ccfSSadaf Ebrahimi
8469*b7893ccfSSadaf Ebrahimi
8470*b7893ccfSSadaf Ebrahimi
PreCallValidateReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)8471*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateReleaseDisplayEXT(
8472*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8473*b7893ccfSSadaf Ebrahimi VkDisplayKHR display) {
8474*b7893ccfSSadaf Ebrahimi bool skip = false;
8475*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkReleaseDisplayEXT", VK_KHR_DISPLAY_EXTENSION_NAME);
8476*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_direct_mode_display) skip |= OutputExtensionError("vkReleaseDisplayEXT", VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME);
8477*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkReleaseDisplayEXT", "display", display);
8478*b7893ccfSSadaf Ebrahimi return skip;
8479*b7893ccfSSadaf Ebrahimi }
8480*b7893ccfSSadaf Ebrahimi
8481*b7893ccfSSadaf Ebrahimi
8482*b7893ccfSSadaf Ebrahimi
8483*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
8484*b7893ccfSSadaf Ebrahimi
PreCallValidateAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)8485*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAcquireXlibDisplayEXT(
8486*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8487*b7893ccfSSadaf Ebrahimi Display* dpy,
8488*b7893ccfSSadaf Ebrahimi VkDisplayKHR display) {
8489*b7893ccfSSadaf Ebrahimi bool skip = false;
8490*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_direct_mode_display) skip |= OutputExtensionError("vkAcquireXlibDisplayEXT", VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME);
8491*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_acquire_xlib_display) skip |= OutputExtensionError("vkAcquireXlibDisplayEXT", VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME);
8492*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAcquireXlibDisplayEXT", "dpy", dpy, "VUID-vkAcquireXlibDisplayEXT-dpy-parameter");
8493*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAcquireXlibDisplayEXT", "display", display);
8494*b7893ccfSSadaf Ebrahimi return skip;
8495*b7893ccfSSadaf Ebrahimi }
8496*b7893ccfSSadaf Ebrahimi
PreCallValidateGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)8497*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetRandROutputDisplayEXT(
8498*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8499*b7893ccfSSadaf Ebrahimi Display* dpy,
8500*b7893ccfSSadaf Ebrahimi RROutput rrOutput,
8501*b7893ccfSSadaf Ebrahimi VkDisplayKHR* pDisplay) {
8502*b7893ccfSSadaf Ebrahimi bool skip = false;
8503*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_direct_mode_display) skip |= OutputExtensionError("vkGetRandROutputDisplayEXT", VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME);
8504*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_acquire_xlib_display) skip |= OutputExtensionError("vkGetRandROutputDisplayEXT", VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME);
8505*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetRandROutputDisplayEXT", "dpy", dpy, "VUID-vkGetRandROutputDisplayEXT-dpy-parameter");
8506*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetRandROutputDisplayEXT", "pDisplay", pDisplay, "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter");
8507*b7893ccfSSadaf Ebrahimi return skip;
8508*b7893ccfSSadaf Ebrahimi }
8509*b7893ccfSSadaf Ebrahimi
8510*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
8511*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)8512*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceCapabilities2EXT(
8513*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
8514*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
8515*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
8516*b7893ccfSSadaf Ebrahimi bool skip = false;
8517*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_display) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceCapabilities2EXT", VK_KHR_DISPLAY_EXTENSION_NAME);
8518*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_display_surface_counter) skip |= OutputExtensionError("vkGetPhysicalDeviceSurfaceCapabilities2EXT", VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME);
8519*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfaceCapabilities2EXT", "surface", surface);
8520*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSurfaceCapabilities2EXT", "pSurfaceCapabilities", "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", pSurfaceCapabilities, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, true, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter", "VUID-VkSurfaceCapabilities2EXT-sType-sType");
8521*b7893ccfSSadaf Ebrahimi if (pSurfaceCapabilities != NULL)
8522*b7893ccfSSadaf Ebrahimi {
8523*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8524*b7893ccfSSadaf Ebrahimi }
8525*b7893ccfSSadaf Ebrahimi return skip;
8526*b7893ccfSSadaf Ebrahimi }
8527*b7893ccfSSadaf Ebrahimi
8528*b7893ccfSSadaf Ebrahimi
8529*b7893ccfSSadaf Ebrahimi
PreCallValidateDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)8530*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDisplayPowerControlEXT(
8531*b7893ccfSSadaf Ebrahimi VkDevice device,
8532*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
8533*b7893ccfSSadaf Ebrahimi const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
8534*b7893ccfSSadaf Ebrahimi bool skip = false;
8535*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkDisplayPowerControlEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8536*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_surface_counter) skip |= OutputExtensionError("vkDisplayPowerControlEXT", VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME);
8537*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_control) skip |= OutputExtensionError("vkDisplayPowerControlEXT", VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME);
8538*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDisplayPowerControlEXT", "display", display);
8539*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkDisplayPowerControlEXT", "pDisplayPowerInfo", "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", pDisplayPowerInfo, VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, true, "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter", "VUID-VkDisplayPowerInfoEXT-sType-sType");
8540*b7893ccfSSadaf Ebrahimi if (pDisplayPowerInfo != NULL)
8541*b7893ccfSSadaf Ebrahimi {
8542*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkDisplayPowerControlEXT", "pDisplayPowerInfo->pNext", NULL, pDisplayPowerInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDisplayPowerInfoEXT-pNext-pNext");
8543*b7893ccfSSadaf Ebrahimi
8544*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkDisplayPowerControlEXT", "pDisplayPowerInfo->powerState", "VkDisplayPowerStateEXT", AllVkDisplayPowerStateEXTEnums, pDisplayPowerInfo->powerState, "VUID-VkDisplayPowerInfoEXT-powerState-parameter");
8545*b7893ccfSSadaf Ebrahimi }
8546*b7893ccfSSadaf Ebrahimi return skip;
8547*b7893ccfSSadaf Ebrahimi }
8548*b7893ccfSSadaf Ebrahimi
PreCallValidateRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)8549*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateRegisterDeviceEventEXT(
8550*b7893ccfSSadaf Ebrahimi VkDevice device,
8551*b7893ccfSSadaf Ebrahimi const VkDeviceEventInfoEXT* pDeviceEventInfo,
8552*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8553*b7893ccfSSadaf Ebrahimi VkFence* pFence) {
8554*b7893ccfSSadaf Ebrahimi bool skip = false;
8555*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkRegisterDeviceEventEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8556*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_surface_counter) skip |= OutputExtensionError("vkRegisterDeviceEventEXT", VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME);
8557*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_control) skip |= OutputExtensionError("vkRegisterDeviceEventEXT", VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME);
8558*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkRegisterDeviceEventEXT", "pDeviceEventInfo", "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT", pDeviceEventInfo, VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, true, "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter", "VUID-VkDeviceEventInfoEXT-sType-sType");
8559*b7893ccfSSadaf Ebrahimi if (pDeviceEventInfo != NULL)
8560*b7893ccfSSadaf Ebrahimi {
8561*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkRegisterDeviceEventEXT", "pDeviceEventInfo->pNext", NULL, pDeviceEventInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDeviceEventInfoEXT-pNext-pNext");
8562*b7893ccfSSadaf Ebrahimi
8563*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkRegisterDeviceEventEXT", "pDeviceEventInfo->deviceEvent", "VkDeviceEventTypeEXT", AllVkDeviceEventTypeEXTEnums, pDeviceEventInfo->deviceEvent, "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter");
8564*b7893ccfSSadaf Ebrahimi }
8565*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8566*b7893ccfSSadaf Ebrahimi {
8567*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8568*b7893ccfSSadaf Ebrahimi
8569*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8570*b7893ccfSSadaf Ebrahimi
8571*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8572*b7893ccfSSadaf Ebrahimi
8573*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8574*b7893ccfSSadaf Ebrahimi {
8575*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8576*b7893ccfSSadaf Ebrahimi
8577*b7893ccfSSadaf Ebrahimi }
8578*b7893ccfSSadaf Ebrahimi
8579*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8580*b7893ccfSSadaf Ebrahimi {
8581*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8582*b7893ccfSSadaf Ebrahimi
8583*b7893ccfSSadaf Ebrahimi }
8584*b7893ccfSSadaf Ebrahimi }
8585*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDeviceEventEXT", "pFence", pFence, "VUID-vkRegisterDeviceEventEXT-pFence-parameter");
8586*b7893ccfSSadaf Ebrahimi return skip;
8587*b7893ccfSSadaf Ebrahimi }
8588*b7893ccfSSadaf Ebrahimi
PreCallValidateRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)8589*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateRegisterDisplayEventEXT(
8590*b7893ccfSSadaf Ebrahimi VkDevice device,
8591*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
8592*b7893ccfSSadaf Ebrahimi const VkDisplayEventInfoEXT* pDisplayEventInfo,
8593*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8594*b7893ccfSSadaf Ebrahimi VkFence* pFence) {
8595*b7893ccfSSadaf Ebrahimi bool skip = false;
8596*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkRegisterDisplayEventEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8597*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_surface_counter) skip |= OutputExtensionError("vkRegisterDisplayEventEXT", VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME);
8598*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_control) skip |= OutputExtensionError("vkRegisterDisplayEventEXT", VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME);
8599*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkRegisterDisplayEventEXT", "display", display);
8600*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkRegisterDisplayEventEXT", "pDisplayEventInfo", "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT", pDisplayEventInfo, VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, true, "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter", "VUID-VkDisplayEventInfoEXT-sType-sType");
8601*b7893ccfSSadaf Ebrahimi if (pDisplayEventInfo != NULL)
8602*b7893ccfSSadaf Ebrahimi {
8603*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkRegisterDisplayEventEXT", "pDisplayEventInfo->pNext", NULL, pDisplayEventInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDisplayEventInfoEXT-pNext-pNext");
8604*b7893ccfSSadaf Ebrahimi
8605*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkRegisterDisplayEventEXT", "pDisplayEventInfo->displayEvent", "VkDisplayEventTypeEXT", AllVkDisplayEventTypeEXTEnums, pDisplayEventInfo->displayEvent, "VUID-VkDisplayEventInfoEXT-displayEvent-parameter");
8606*b7893ccfSSadaf Ebrahimi }
8607*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8608*b7893ccfSSadaf Ebrahimi {
8609*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8610*b7893ccfSSadaf Ebrahimi
8611*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8612*b7893ccfSSadaf Ebrahimi
8613*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8614*b7893ccfSSadaf Ebrahimi
8615*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8616*b7893ccfSSadaf Ebrahimi {
8617*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8618*b7893ccfSSadaf Ebrahimi
8619*b7893ccfSSadaf Ebrahimi }
8620*b7893ccfSSadaf Ebrahimi
8621*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8622*b7893ccfSSadaf Ebrahimi {
8623*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8624*b7893ccfSSadaf Ebrahimi
8625*b7893ccfSSadaf Ebrahimi }
8626*b7893ccfSSadaf Ebrahimi }
8627*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkRegisterDisplayEventEXT", "pFence", pFence, "VUID-vkRegisterDisplayEventEXT-pFence-parameter");
8628*b7893ccfSSadaf Ebrahimi return skip;
8629*b7893ccfSSadaf Ebrahimi }
8630*b7893ccfSSadaf Ebrahimi
PreCallValidateGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)8631*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetSwapchainCounterEXT(
8632*b7893ccfSSadaf Ebrahimi VkDevice device,
8633*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
8634*b7893ccfSSadaf Ebrahimi VkSurfaceCounterFlagBitsEXT counter,
8635*b7893ccfSSadaf Ebrahimi uint64_t* pCounterValue) {
8636*b7893ccfSSadaf Ebrahimi bool skip = false;
8637*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetSwapchainCounterEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8638*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_surface_counter) skip |= OutputExtensionError("vkGetSwapchainCounterEXT", VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME);
8639*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_display_control) skip |= OutputExtensionError("vkGetSwapchainCounterEXT", VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME);
8640*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetSwapchainCounterEXT", "swapchain", swapchain);
8641*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetSwapchainCounterEXT", "counter", "VkSurfaceCounterFlagBitsEXT", AllVkSurfaceCounterFlagBitsEXT, counter, kRequiredSingleBit, "VUID-vkGetSwapchainCounterEXT-counter-parameter", "VUID-vkGetSwapchainCounterEXT-counter-parameter");
8642*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetSwapchainCounterEXT", "pCounterValue", pCounterValue, "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter");
8643*b7893ccfSSadaf Ebrahimi return skip;
8644*b7893ccfSSadaf Ebrahimi }
8645*b7893ccfSSadaf Ebrahimi
8646*b7893ccfSSadaf Ebrahimi
8647*b7893ccfSSadaf Ebrahimi
PreCallValidateGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)8648*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetRefreshCycleDurationGOOGLE(
8649*b7893ccfSSadaf Ebrahimi VkDevice device,
8650*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
8651*b7893ccfSSadaf Ebrahimi VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
8652*b7893ccfSSadaf Ebrahimi bool skip = false;
8653*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetRefreshCycleDurationGOOGLE", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8654*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_google_display_timing) skip |= OutputExtensionError("vkGetRefreshCycleDurationGOOGLE", VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME);
8655*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetRefreshCycleDurationGOOGLE", "swapchain", swapchain);
8656*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetRefreshCycleDurationGOOGLE", "pDisplayTimingProperties", pDisplayTimingProperties, "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter");
8657*b7893ccfSSadaf Ebrahimi if (pDisplayTimingProperties != NULL)
8658*b7893ccfSSadaf Ebrahimi {
8659*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8660*b7893ccfSSadaf Ebrahimi }
8661*b7893ccfSSadaf Ebrahimi return skip;
8662*b7893ccfSSadaf Ebrahimi }
8663*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)8664*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPastPresentationTimingGOOGLE(
8665*b7893ccfSSadaf Ebrahimi VkDevice device,
8666*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
8667*b7893ccfSSadaf Ebrahimi uint32_t* pPresentationTimingCount,
8668*b7893ccfSSadaf Ebrahimi VkPastPresentationTimingGOOGLE* pPresentationTimings) {
8669*b7893ccfSSadaf Ebrahimi bool skip = false;
8670*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkGetPastPresentationTimingGOOGLE", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8671*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_google_display_timing) skip |= OutputExtensionError("vkGetPastPresentationTimingGOOGLE", VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME);
8672*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPastPresentationTimingGOOGLE", "swapchain", swapchain);
8673*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPastPresentationTimingGOOGLE", "pPresentationTimingCount", "pPresentationTimings", pPresentationTimingCount, &pPresentationTimings, true, false, false, kVUIDUndefined, "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter");
8674*b7893ccfSSadaf Ebrahimi if (pPresentationTimings != NULL)
8675*b7893ccfSSadaf Ebrahimi {
8676*b7893ccfSSadaf Ebrahimi for (uint32_t pPresentationTimingIndex = 0; pPresentationTimingIndex < *pPresentationTimingCount; ++pPresentationTimingIndex)
8677*b7893ccfSSadaf Ebrahimi {
8678*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8679*b7893ccfSSadaf Ebrahimi }
8680*b7893ccfSSadaf Ebrahimi }
8681*b7893ccfSSadaf Ebrahimi return skip;
8682*b7893ccfSSadaf Ebrahimi }
8683*b7893ccfSSadaf Ebrahimi
8684*b7893ccfSSadaf Ebrahimi
8685*b7893ccfSSadaf Ebrahimi
8686*b7893ccfSSadaf Ebrahimi
8687*b7893ccfSSadaf Ebrahimi
8688*b7893ccfSSadaf Ebrahimi
8689*b7893ccfSSadaf Ebrahimi
8690*b7893ccfSSadaf Ebrahimi
8691*b7893ccfSSadaf Ebrahimi
8692*b7893ccfSSadaf Ebrahimi
8693*b7893ccfSSadaf Ebrahimi
8694*b7893ccfSSadaf Ebrahimi
8695*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)8696*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetDiscardRectangleEXT(
8697*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8698*b7893ccfSSadaf Ebrahimi uint32_t firstDiscardRectangle,
8699*b7893ccfSSadaf Ebrahimi uint32_t discardRectangleCount,
8700*b7893ccfSSadaf Ebrahimi const VkRect2D* pDiscardRectangles) {
8701*b7893ccfSSadaf Ebrahimi bool skip = false;
8702*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetDiscardRectangleEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
8703*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_discard_rectangles) skip |= OutputExtensionError("vkCmdSetDiscardRectangleEXT", VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME);
8704*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetDiscardRectangleEXT", "discardRectangleCount", "pDiscardRectangles", discardRectangleCount, &pDiscardRectangles, true, true, "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength", "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter");
8705*b7893ccfSSadaf Ebrahimi if (pDiscardRectangles != NULL)
8706*b7893ccfSSadaf Ebrahimi {
8707*b7893ccfSSadaf Ebrahimi for (uint32_t discardRectangleIndex = 0; discardRectangleIndex < discardRectangleCount; ++discardRectangleIndex)
8708*b7893ccfSSadaf Ebrahimi {
8709*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8710*b7893ccfSSadaf Ebrahimi
8711*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8712*b7893ccfSSadaf Ebrahimi }
8713*b7893ccfSSadaf Ebrahimi }
8714*b7893ccfSSadaf Ebrahimi return skip;
8715*b7893ccfSSadaf Ebrahimi }
8716*b7893ccfSSadaf Ebrahimi
8717*b7893ccfSSadaf Ebrahimi
8718*b7893ccfSSadaf Ebrahimi
8719*b7893ccfSSadaf Ebrahimi
8720*b7893ccfSSadaf Ebrahimi
8721*b7893ccfSSadaf Ebrahimi
8722*b7893ccfSSadaf Ebrahimi
8723*b7893ccfSSadaf Ebrahimi
8724*b7893ccfSSadaf Ebrahimi
PreCallValidateSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)8725*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSetHdrMetadataEXT(
8726*b7893ccfSSadaf Ebrahimi VkDevice device,
8727*b7893ccfSSadaf Ebrahimi uint32_t swapchainCount,
8728*b7893ccfSSadaf Ebrahimi const VkSwapchainKHR* pSwapchains,
8729*b7893ccfSSadaf Ebrahimi const VkHdrMetadataEXT* pMetadata) {
8730*b7893ccfSSadaf Ebrahimi bool skip = false;
8731*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkSetHdrMetadataEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
8732*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_hdr_metadata) skip |= OutputExtensionError("vkSetHdrMetadataEXT", VK_EXT_HDR_METADATA_EXTENSION_NAME);
8733*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkSetHdrMetadataEXT", "swapchainCount", "pSwapchains", swapchainCount, pSwapchains, true, true);
8734*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkSetHdrMetadataEXT", "swapchainCount", "pMetadata", "VK_STRUCTURE_TYPE_HDR_METADATA_EXT", swapchainCount, pMetadata, VK_STRUCTURE_TYPE_HDR_METADATA_EXT, true, true, "VUID-VkHdrMetadataEXT-sType-sType", "VUID-vkSetHdrMetadataEXT-pMetadata-parameter", "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength");
8735*b7893ccfSSadaf Ebrahimi if (pMetadata != NULL)
8736*b7893ccfSSadaf Ebrahimi {
8737*b7893ccfSSadaf Ebrahimi for (uint32_t swapchainIndex = 0; swapchainIndex < swapchainCount; ++swapchainIndex)
8738*b7893ccfSSadaf Ebrahimi {
8739*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSetHdrMetadataEXT", ParameterName("pMetadata[%i].pNext", ParameterName::IndexVector{ swapchainIndex }), NULL, pMetadata[swapchainIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkHdrMetadataEXT-pNext-pNext");
8740*b7893ccfSSadaf Ebrahimi }
8741*b7893ccfSSadaf Ebrahimi }
8742*b7893ccfSSadaf Ebrahimi return skip;
8743*b7893ccfSSadaf Ebrahimi }
8744*b7893ccfSSadaf Ebrahimi
8745*b7893ccfSSadaf Ebrahimi
8746*b7893ccfSSadaf Ebrahimi
8747*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_IOS_MVK
8748*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8749*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateIOSSurfaceMVK(
8750*b7893ccfSSadaf Ebrahimi VkInstance instance,
8751*b7893ccfSSadaf Ebrahimi const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
8752*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8753*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
8754*b7893ccfSSadaf Ebrahimi bool skip = false;
8755*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateIOSSurfaceMVK", VK_KHR_SURFACE_EXTENSION_NAME);
8756*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_mvk_ios_surface) skip |= OutputExtensionError("vkCreateIOSSurfaceMVK", VK_MVK_IOS_SURFACE_EXTENSION_NAME);
8757*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateIOSSurfaceMVK", "pCreateInfo", "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK", pCreateInfo, VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK, true, "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter", "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType");
8758*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8759*b7893ccfSSadaf Ebrahimi {
8760*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateIOSSurfaceMVK", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext");
8761*b7893ccfSSadaf Ebrahimi
8762*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateIOSSurfaceMVK", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask");
8763*b7893ccfSSadaf Ebrahimi }
8764*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8765*b7893ccfSSadaf Ebrahimi {
8766*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8767*b7893ccfSSadaf Ebrahimi
8768*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8769*b7893ccfSSadaf Ebrahimi
8770*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8771*b7893ccfSSadaf Ebrahimi
8772*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8773*b7893ccfSSadaf Ebrahimi {
8774*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8775*b7893ccfSSadaf Ebrahimi
8776*b7893ccfSSadaf Ebrahimi }
8777*b7893ccfSSadaf Ebrahimi
8778*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8779*b7893ccfSSadaf Ebrahimi {
8780*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8781*b7893ccfSSadaf Ebrahimi
8782*b7893ccfSSadaf Ebrahimi }
8783*b7893ccfSSadaf Ebrahimi }
8784*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateIOSSurfaceMVK", "pSurface", pSurface, "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter");
8785*b7893ccfSSadaf Ebrahimi return skip;
8786*b7893ccfSSadaf Ebrahimi }
8787*b7893ccfSSadaf Ebrahimi
8788*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_IOS_MVK
8789*b7893ccfSSadaf Ebrahimi
8790*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_MACOS_MVK
8791*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8792*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateMacOSSurfaceMVK(
8793*b7893ccfSSadaf Ebrahimi VkInstance instance,
8794*b7893ccfSSadaf Ebrahimi const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
8795*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8796*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
8797*b7893ccfSSadaf Ebrahimi bool skip = false;
8798*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateMacOSSurfaceMVK", VK_KHR_SURFACE_EXTENSION_NAME);
8799*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_mvk_macos_surface) skip |= OutputExtensionError("vkCreateMacOSSurfaceMVK", VK_MVK_MACOS_SURFACE_EXTENSION_NAME);
8800*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateMacOSSurfaceMVK", "pCreateInfo", "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK", pCreateInfo, VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK, true, "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter", "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType");
8801*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8802*b7893ccfSSadaf Ebrahimi {
8803*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateMacOSSurfaceMVK", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext");
8804*b7893ccfSSadaf Ebrahimi
8805*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateMacOSSurfaceMVK", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask");
8806*b7893ccfSSadaf Ebrahimi }
8807*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8808*b7893ccfSSadaf Ebrahimi {
8809*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8810*b7893ccfSSadaf Ebrahimi
8811*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8812*b7893ccfSSadaf Ebrahimi
8813*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8814*b7893ccfSSadaf Ebrahimi
8815*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8816*b7893ccfSSadaf Ebrahimi {
8817*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8818*b7893ccfSSadaf Ebrahimi
8819*b7893ccfSSadaf Ebrahimi }
8820*b7893ccfSSadaf Ebrahimi
8821*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8822*b7893ccfSSadaf Ebrahimi {
8823*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8824*b7893ccfSSadaf Ebrahimi
8825*b7893ccfSSadaf Ebrahimi }
8826*b7893ccfSSadaf Ebrahimi }
8827*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMacOSSurfaceMVK", "pSurface", pSurface, "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter");
8828*b7893ccfSSadaf Ebrahimi return skip;
8829*b7893ccfSSadaf Ebrahimi }
8830*b7893ccfSSadaf Ebrahimi
8831*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_MACOS_MVK
8832*b7893ccfSSadaf Ebrahimi
8833*b7893ccfSSadaf Ebrahimi
8834*b7893ccfSSadaf Ebrahimi
8835*b7893ccfSSadaf Ebrahimi
8836*b7893ccfSSadaf Ebrahimi
PreCallValidateSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)8837*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSetDebugUtilsObjectNameEXT(
8838*b7893ccfSSadaf Ebrahimi VkDevice device,
8839*b7893ccfSSadaf Ebrahimi const VkDebugUtilsObjectNameInfoEXT* pNameInfo) {
8840*b7893ccfSSadaf Ebrahimi bool skip = false;
8841*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkSetDebugUtilsObjectNameEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8842*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkSetDebugUtilsObjectNameEXT", "pNameInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", pNameInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, true, "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter", "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType");
8843*b7893ccfSSadaf Ebrahimi if (pNameInfo != NULL)
8844*b7893ccfSSadaf Ebrahimi {
8845*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSetDebugUtilsObjectNameEXT", "pNameInfo->pNext", NULL, pNameInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext");
8846*b7893ccfSSadaf Ebrahimi
8847*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkSetDebugUtilsObjectNameEXT", "pNameInfo->objectType", "VkObjectType", AllVkObjectTypeEnums, pNameInfo->objectType, "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter");
8848*b7893ccfSSadaf Ebrahimi }
8849*b7893ccfSSadaf Ebrahimi return skip;
8850*b7893ccfSSadaf Ebrahimi }
8851*b7893ccfSSadaf Ebrahimi
PreCallValidateSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)8852*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSetDebugUtilsObjectTagEXT(
8853*b7893ccfSSadaf Ebrahimi VkDevice device,
8854*b7893ccfSSadaf Ebrahimi const VkDebugUtilsObjectTagInfoEXT* pTagInfo) {
8855*b7893ccfSSadaf Ebrahimi bool skip = false;
8856*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkSetDebugUtilsObjectTagEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8857*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkSetDebugUtilsObjectTagEXT", "pTagInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT", pTagInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT, true, "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter", "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType");
8858*b7893ccfSSadaf Ebrahimi if (pTagInfo != NULL)
8859*b7893ccfSSadaf Ebrahimi {
8860*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSetDebugUtilsObjectTagEXT", "pTagInfo->pNext", NULL, pTagInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext");
8861*b7893ccfSSadaf Ebrahimi
8862*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkSetDebugUtilsObjectTagEXT", "pTagInfo->objectType", "VkObjectType", AllVkObjectTypeEnums, pTagInfo->objectType, "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter");
8863*b7893ccfSSadaf Ebrahimi
8864*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkSetDebugUtilsObjectTagEXT", "pTagInfo->tagSize", "pTagInfo->pTag", pTagInfo->tagSize, &pTagInfo->pTag, true, true, "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength", "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter");
8865*b7893ccfSSadaf Ebrahimi }
8866*b7893ccfSSadaf Ebrahimi return skip;
8867*b7893ccfSSadaf Ebrahimi }
8868*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)8869*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueBeginDebugUtilsLabelEXT(
8870*b7893ccfSSadaf Ebrahimi VkQueue queue,
8871*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo) {
8872*b7893ccfSSadaf Ebrahimi bool skip = false;
8873*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkQueueBeginDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8874*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkQueueBeginDebugUtilsLabelEXT", "pLabelInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pLabelInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, true, "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter", "VUID-VkDebugUtilsLabelEXT-sType-sType");
8875*b7893ccfSSadaf Ebrahimi if (pLabelInfo != NULL)
8876*b7893ccfSSadaf Ebrahimi {
8877*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkQueueBeginDebugUtilsLabelEXT", "pLabelInfo->pNext", NULL, pLabelInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
8878*b7893ccfSSadaf Ebrahimi
8879*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkQueueBeginDebugUtilsLabelEXT", "pLabelInfo->pLabelName", pLabelInfo->pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
8880*b7893ccfSSadaf Ebrahimi }
8881*b7893ccfSSadaf Ebrahimi return skip;
8882*b7893ccfSSadaf Ebrahimi }
8883*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueEndDebugUtilsLabelEXT(VkQueue queue)8884*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueEndDebugUtilsLabelEXT(
8885*b7893ccfSSadaf Ebrahimi VkQueue queue) {
8886*b7893ccfSSadaf Ebrahimi bool skip = false;
8887*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkQueueEndDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8888*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8889*b7893ccfSSadaf Ebrahimi return skip;
8890*b7893ccfSSadaf Ebrahimi }
8891*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)8892*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueInsertDebugUtilsLabelEXT(
8893*b7893ccfSSadaf Ebrahimi VkQueue queue,
8894*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo) {
8895*b7893ccfSSadaf Ebrahimi bool skip = false;
8896*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkQueueInsertDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8897*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkQueueInsertDebugUtilsLabelEXT", "pLabelInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pLabelInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, true, "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter", "VUID-VkDebugUtilsLabelEXT-sType-sType");
8898*b7893ccfSSadaf Ebrahimi if (pLabelInfo != NULL)
8899*b7893ccfSSadaf Ebrahimi {
8900*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkQueueInsertDebugUtilsLabelEXT", "pLabelInfo->pNext", NULL, pLabelInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
8901*b7893ccfSSadaf Ebrahimi
8902*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkQueueInsertDebugUtilsLabelEXT", "pLabelInfo->pLabelName", pLabelInfo->pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
8903*b7893ccfSSadaf Ebrahimi }
8904*b7893ccfSSadaf Ebrahimi return skip;
8905*b7893ccfSSadaf Ebrahimi }
8906*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)8907*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBeginDebugUtilsLabelEXT(
8908*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8909*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo) {
8910*b7893ccfSSadaf Ebrahimi bool skip = false;
8911*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkCmdBeginDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8912*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBeginDebugUtilsLabelEXT", "pLabelInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pLabelInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, true, "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter", "VUID-VkDebugUtilsLabelEXT-sType-sType");
8913*b7893ccfSSadaf Ebrahimi if (pLabelInfo != NULL)
8914*b7893ccfSSadaf Ebrahimi {
8915*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBeginDebugUtilsLabelEXT", "pLabelInfo->pNext", NULL, pLabelInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
8916*b7893ccfSSadaf Ebrahimi
8917*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdBeginDebugUtilsLabelEXT", "pLabelInfo->pLabelName", pLabelInfo->pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
8918*b7893ccfSSadaf Ebrahimi }
8919*b7893ccfSSadaf Ebrahimi return skip;
8920*b7893ccfSSadaf Ebrahimi }
8921*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)8922*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdEndDebugUtilsLabelEXT(
8923*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer) {
8924*b7893ccfSSadaf Ebrahimi bool skip = false;
8925*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkCmdEndDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8926*b7893ccfSSadaf Ebrahimi // No xml-driven validation
8927*b7893ccfSSadaf Ebrahimi return skip;
8928*b7893ccfSSadaf Ebrahimi }
8929*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)8930*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdInsertDebugUtilsLabelEXT(
8931*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
8932*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo) {
8933*b7893ccfSSadaf Ebrahimi bool skip = false;
8934*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkCmdInsertDebugUtilsLabelEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8935*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdInsertDebugUtilsLabelEXT", "pLabelInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pLabelInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, true, "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter", "VUID-VkDebugUtilsLabelEXT-sType-sType");
8936*b7893ccfSSadaf Ebrahimi if (pLabelInfo != NULL)
8937*b7893ccfSSadaf Ebrahimi {
8938*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdInsertDebugUtilsLabelEXT", "pLabelInfo->pNext", NULL, pLabelInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
8939*b7893ccfSSadaf Ebrahimi
8940*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCmdInsertDebugUtilsLabelEXT", "pLabelInfo->pLabelName", pLabelInfo->pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
8941*b7893ccfSSadaf Ebrahimi }
8942*b7893ccfSSadaf Ebrahimi return skip;
8943*b7893ccfSSadaf Ebrahimi }
8944*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)8945*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateDebugUtilsMessengerEXT(
8946*b7893ccfSSadaf Ebrahimi VkInstance instance,
8947*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
8948*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
8949*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessengerEXT* pMessenger) {
8950*b7893ccfSSadaf Ebrahimi bool skip = false;
8951*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkCreateDebugUtilsMessengerEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8952*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateDebugUtilsMessengerEXT", "pCreateInfo", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT", pCreateInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, true, "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter", "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType");
8953*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
8954*b7893ccfSSadaf Ebrahimi {
8955*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateDebugUtilsMessengerEXT", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, kVUIDUndefined);
8956*b7893ccfSSadaf Ebrahimi
8957*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateDebugUtilsMessengerEXT", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask");
8958*b7893ccfSSadaf Ebrahimi
8959*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDebugUtilsMessengerEXT", "pCreateInfo->messageSeverity", "VkDebugUtilsMessageSeverityFlagBitsEXT", AllVkDebugUtilsMessageSeverityFlagBitsEXT, pCreateInfo->messageSeverity, kRequiredFlags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter", "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask");
8960*b7893ccfSSadaf Ebrahimi
8961*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateDebugUtilsMessengerEXT", "pCreateInfo->messageType", "VkDebugUtilsMessageTypeFlagBitsEXT", AllVkDebugUtilsMessageTypeFlagBitsEXT, pCreateInfo->messageType, kRequiredFlags, "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter", "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask");
8962*b7893ccfSSadaf Ebrahimi
8963*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pCreateInfo->pfnUserCallback", reinterpret_cast<const void*>(pCreateInfo->pfnUserCallback), "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter");
8964*b7893ccfSSadaf Ebrahimi }
8965*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8966*b7893ccfSSadaf Ebrahimi {
8967*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8968*b7893ccfSSadaf Ebrahimi
8969*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
8970*b7893ccfSSadaf Ebrahimi
8971*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
8972*b7893ccfSSadaf Ebrahimi
8973*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
8974*b7893ccfSSadaf Ebrahimi {
8975*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8976*b7893ccfSSadaf Ebrahimi
8977*b7893ccfSSadaf Ebrahimi }
8978*b7893ccfSSadaf Ebrahimi
8979*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
8980*b7893ccfSSadaf Ebrahimi {
8981*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
8982*b7893ccfSSadaf Ebrahimi
8983*b7893ccfSSadaf Ebrahimi }
8984*b7893ccfSSadaf Ebrahimi }
8985*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateDebugUtilsMessengerEXT", "pMessenger", pMessenger, "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter");
8986*b7893ccfSSadaf Ebrahimi return skip;
8987*b7893ccfSSadaf Ebrahimi }
8988*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)8989*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyDebugUtilsMessengerEXT(
8990*b7893ccfSSadaf Ebrahimi VkInstance instance,
8991*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessengerEXT messenger,
8992*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
8993*b7893ccfSSadaf Ebrahimi bool skip = false;
8994*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkDestroyDebugUtilsMessengerEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
8995*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDestroyDebugUtilsMessengerEXT", "messenger", messenger);
8996*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
8997*b7893ccfSSadaf Ebrahimi {
8998*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugUtilsMessengerEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
8999*b7893ccfSSadaf Ebrahimi
9000*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugUtilsMessengerEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9001*b7893ccfSSadaf Ebrahimi
9002*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugUtilsMessengerEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9003*b7893ccfSSadaf Ebrahimi
9004*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9005*b7893ccfSSadaf Ebrahimi {
9006*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugUtilsMessengerEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9007*b7893ccfSSadaf Ebrahimi
9008*b7893ccfSSadaf Ebrahimi }
9009*b7893ccfSSadaf Ebrahimi
9010*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9011*b7893ccfSSadaf Ebrahimi {
9012*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyDebugUtilsMessengerEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9013*b7893ccfSSadaf Ebrahimi
9014*b7893ccfSSadaf Ebrahimi }
9015*b7893ccfSSadaf Ebrahimi }
9016*b7893ccfSSadaf Ebrahimi return skip;
9017*b7893ccfSSadaf Ebrahimi }
9018*b7893ccfSSadaf Ebrahimi
PreCallValidateSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)9019*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSubmitDebugUtilsMessageEXT(
9020*b7893ccfSSadaf Ebrahimi VkInstance instance,
9021*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
9022*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessageTypeFlagsEXT messageTypes,
9023*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
9024*b7893ccfSSadaf Ebrahimi bool skip = false;
9025*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_debug_utils) skip |= OutputExtensionError("vkSubmitDebugUtilsMessageEXT", VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
9026*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkSubmitDebugUtilsMessageEXT", "messageSeverity", "VkDebugUtilsMessageSeverityFlagBitsEXT", AllVkDebugUtilsMessageSeverityFlagBitsEXT, messageSeverity, kRequiredSingleBit, "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter", "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter");
9027*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkSubmitDebugUtilsMessageEXT", "messageTypes", "VkDebugUtilsMessageTypeFlagBitsEXT", AllVkDebugUtilsMessageTypeFlagBitsEXT, messageTypes, kRequiredFlags, "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter", "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask");
9028*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkSubmitDebugUtilsMessageEXT", "pCallbackData", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT", pCallbackData, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, true, "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter", "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType");
9029*b7893ccfSSadaf Ebrahimi if (pCallbackData != NULL)
9030*b7893ccfSSadaf Ebrahimi {
9031*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSubmitDebugUtilsMessageEXT", "pCallbackData->pNext", NULL, pCallbackData->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext");
9032*b7893ccfSSadaf Ebrahimi
9033*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkSubmitDebugUtilsMessageEXT", "pCallbackData->flags", pCallbackData->flags, "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask");
9034*b7893ccfSSadaf Ebrahimi
9035*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkSubmitDebugUtilsMessageEXT", "pCallbackData->pMessage", pCallbackData->pMessage, "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter");
9036*b7893ccfSSadaf Ebrahimi
9037*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkSubmitDebugUtilsMessageEXT", "pCallbackData->queueLabelCount", "pCallbackData->pQueueLabels", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pCallbackData->queueLabelCount, pCallbackData->pQueueLabels, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, false, true, "VUID-VkDebugUtilsLabelEXT-sType-sType", "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter", kVUIDUndefined);
9038*b7893ccfSSadaf Ebrahimi
9039*b7893ccfSSadaf Ebrahimi if (pCallbackData->pQueueLabels != NULL)
9040*b7893ccfSSadaf Ebrahimi {
9041*b7893ccfSSadaf Ebrahimi for (uint32_t queueLabelIndex = 0; queueLabelIndex < pCallbackData->queueLabelCount; ++queueLabelIndex)
9042*b7893ccfSSadaf Ebrahimi {
9043*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pQueueLabels[%i].pNext", ParameterName::IndexVector{ queueLabelIndex }), NULL, pCallbackData->pQueueLabels[queueLabelIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
9044*b7893ccfSSadaf Ebrahimi
9045*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pQueueLabels[%i].pLabelName", ParameterName::IndexVector{ queueLabelIndex }), pCallbackData->pQueueLabels[queueLabelIndex].pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
9046*b7893ccfSSadaf Ebrahimi }
9047*b7893ccfSSadaf Ebrahimi }
9048*b7893ccfSSadaf Ebrahimi
9049*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkSubmitDebugUtilsMessageEXT", "pCallbackData->cmdBufLabelCount", "pCallbackData->pCmdBufLabels", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pCallbackData->cmdBufLabelCount, pCallbackData->pCmdBufLabels, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, false, true, "VUID-VkDebugUtilsLabelEXT-sType-sType", "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter", kVUIDUndefined);
9050*b7893ccfSSadaf Ebrahimi
9051*b7893ccfSSadaf Ebrahimi if (pCallbackData->pCmdBufLabels != NULL)
9052*b7893ccfSSadaf Ebrahimi {
9053*b7893ccfSSadaf Ebrahimi for (uint32_t cmdBufLabelIndex = 0; cmdBufLabelIndex < pCallbackData->cmdBufLabelCount; ++cmdBufLabelIndex)
9054*b7893ccfSSadaf Ebrahimi {
9055*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pCmdBufLabels[%i].pNext", ParameterName::IndexVector{ cmdBufLabelIndex }), NULL, pCallbackData->pCmdBufLabels[cmdBufLabelIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsLabelEXT-pNext-pNext");
9056*b7893ccfSSadaf Ebrahimi
9057*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pCmdBufLabels[%i].pLabelName", ParameterName::IndexVector{ cmdBufLabelIndex }), pCallbackData->pCmdBufLabels[cmdBufLabelIndex].pLabelName, "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter");
9058*b7893ccfSSadaf Ebrahimi }
9059*b7893ccfSSadaf Ebrahimi }
9060*b7893ccfSSadaf Ebrahimi
9061*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkSubmitDebugUtilsMessageEXT", "pCallbackData->objectCount", "pCallbackData->pObjects", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", pCallbackData->objectCount, pCallbackData->pObjects, VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, false, true, "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType", "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter", kVUIDUndefined);
9062*b7893ccfSSadaf Ebrahimi
9063*b7893ccfSSadaf Ebrahimi if (pCallbackData->pObjects != NULL)
9064*b7893ccfSSadaf Ebrahimi {
9065*b7893ccfSSadaf Ebrahimi for (uint32_t objectIndex = 0; objectIndex < pCallbackData->objectCount; ++objectIndex)
9066*b7893ccfSSadaf Ebrahimi {
9067*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pObjects[%i].pNext", ParameterName::IndexVector{ objectIndex }), NULL, pCallbackData->pObjects[objectIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext");
9068*b7893ccfSSadaf Ebrahimi
9069*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkSubmitDebugUtilsMessageEXT", ParameterName("pCallbackData->pObjects[%i].objectType", ParameterName::IndexVector{ objectIndex }), "VkObjectType", AllVkObjectTypeEnums, pCallbackData->pObjects[objectIndex].objectType, "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter");
9070*b7893ccfSSadaf Ebrahimi }
9071*b7893ccfSSadaf Ebrahimi }
9072*b7893ccfSSadaf Ebrahimi }
9073*b7893ccfSSadaf Ebrahimi return skip;
9074*b7893ccfSSadaf Ebrahimi }
9075*b7893ccfSSadaf Ebrahimi
9076*b7893ccfSSadaf Ebrahimi
9077*b7893ccfSSadaf Ebrahimi
9078*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
9079*b7893ccfSSadaf Ebrahimi
PreCallValidateGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const struct AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)9080*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetAndroidHardwareBufferPropertiesANDROID(
9081*b7893ccfSSadaf Ebrahimi VkDevice device,
9082*b7893ccfSSadaf Ebrahimi const struct AHardwareBuffer* buffer,
9083*b7893ccfSSadaf Ebrahimi VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
9084*b7893ccfSSadaf Ebrahimi bool skip = false;
9085*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_queue_family_foreign) skip |= OutputExtensionError("vkGetAndroidHardwareBufferPropertiesANDROID", VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME);
9086*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetAndroidHardwareBufferPropertiesANDROID", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
9087*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_sampler_ycbcr_conversion) skip |= OutputExtensionError("vkGetAndroidHardwareBufferPropertiesANDROID", VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
9088*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_android_external_memory_android_hardware_buffer) skip |= OutputExtensionError("vkGetAndroidHardwareBufferPropertiesANDROID", VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME);
9089*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetAndroidHardwareBufferPropertiesANDROID", "buffer", buffer, "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter");
9090*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetAndroidHardwareBufferPropertiesANDROID", "pProperties", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", pProperties, VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, true, "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter", "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType");
9091*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
9092*b7893ccfSSadaf Ebrahimi {
9093*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9094*b7893ccfSSadaf Ebrahimi }
9095*b7893ccfSSadaf Ebrahimi return skip;
9096*b7893ccfSSadaf Ebrahimi }
9097*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,struct AHardwareBuffer ** pBuffer)9098*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryAndroidHardwareBufferANDROID(
9099*b7893ccfSSadaf Ebrahimi VkDevice device,
9100*b7893ccfSSadaf Ebrahimi const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
9101*b7893ccfSSadaf Ebrahimi struct AHardwareBuffer** pBuffer) {
9102*b7893ccfSSadaf Ebrahimi bool skip = false;
9103*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_queue_family_foreign) skip |= OutputExtensionError("vkGetMemoryAndroidHardwareBufferANDROID", VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME);
9104*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryAndroidHardwareBufferANDROID", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
9105*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_sampler_ycbcr_conversion) skip |= OutputExtensionError("vkGetMemoryAndroidHardwareBufferANDROID", VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
9106*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_android_external_memory_android_hardware_buffer) skip |= OutputExtensionError("vkGetMemoryAndroidHardwareBufferANDROID", VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME);
9107*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryAndroidHardwareBufferANDROID", "pInfo", "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pInfo, VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, true, "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter", "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType");
9108*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
9109*b7893ccfSSadaf Ebrahimi {
9110*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetMemoryAndroidHardwareBufferANDROID", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext");
9111*b7893ccfSSadaf Ebrahimi
9112*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetMemoryAndroidHardwareBufferANDROID", "pInfo->memory", pInfo->memory);
9113*b7893ccfSSadaf Ebrahimi }
9114*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetMemoryAndroidHardwareBufferANDROID", "pBuffer", pBuffer, "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter");
9115*b7893ccfSSadaf Ebrahimi return skip;
9116*b7893ccfSSadaf Ebrahimi }
9117*b7893ccfSSadaf Ebrahimi
9118*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
9119*b7893ccfSSadaf Ebrahimi
9120*b7893ccfSSadaf Ebrahimi
9121*b7893ccfSSadaf Ebrahimi
9122*b7893ccfSSadaf Ebrahimi
9123*b7893ccfSSadaf Ebrahimi
9124*b7893ccfSSadaf Ebrahimi
9125*b7893ccfSSadaf Ebrahimi
9126*b7893ccfSSadaf Ebrahimi
9127*b7893ccfSSadaf Ebrahimi
9128*b7893ccfSSadaf Ebrahimi
9129*b7893ccfSSadaf Ebrahimi
9130*b7893ccfSSadaf Ebrahimi
9131*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)9132*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetSampleLocationsEXT(
9133*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9134*b7893ccfSSadaf Ebrahimi const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
9135*b7893ccfSSadaf Ebrahimi bool skip = false;
9136*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetSampleLocationsEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9137*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_sample_locations) skip |= OutputExtensionError("vkCmdSetSampleLocationsEXT", VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME);
9138*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdSetSampleLocationsEXT", "pSampleLocationsInfo", "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", pSampleLocationsInfo, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, true, "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter", "VUID-VkSampleLocationsInfoEXT-sType-sType");
9139*b7893ccfSSadaf Ebrahimi if (pSampleLocationsInfo != NULL)
9140*b7893ccfSSadaf Ebrahimi {
9141*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdSetSampleLocationsEXT", "pSampleLocationsInfo->pNext", NULL, pSampleLocationsInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, kVUIDUndefined);
9142*b7893ccfSSadaf Ebrahimi
9143*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdSetSampleLocationsEXT", "pSampleLocationsInfo->sampleLocationsPerPixel", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, pSampleLocationsInfo->sampleLocationsPerPixel, kOptionalSingleBit, "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter");
9144*b7893ccfSSadaf Ebrahimi
9145*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9146*b7893ccfSSadaf Ebrahimi
9147*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetSampleLocationsEXT", "pSampleLocationsInfo->sampleLocationsCount", "pSampleLocationsInfo->pSampleLocations", pSampleLocationsInfo->sampleLocationsCount, &pSampleLocationsInfo->pSampleLocations, false, true, kVUIDUndefined, "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter");
9148*b7893ccfSSadaf Ebrahimi
9149*b7893ccfSSadaf Ebrahimi if (pSampleLocationsInfo->pSampleLocations != NULL)
9150*b7893ccfSSadaf Ebrahimi {
9151*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationsIndex = 0; sampleLocationsIndex < pSampleLocationsInfo->sampleLocationsCount; ++sampleLocationsIndex)
9152*b7893ccfSSadaf Ebrahimi {
9153*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9154*b7893ccfSSadaf Ebrahimi }
9155*b7893ccfSSadaf Ebrahimi }
9156*b7893ccfSSadaf Ebrahimi }
9157*b7893ccfSSadaf Ebrahimi return skip;
9158*b7893ccfSSadaf Ebrahimi }
9159*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)9160*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceMultisamplePropertiesEXT(
9161*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
9162*b7893ccfSSadaf Ebrahimi VkSampleCountFlagBits samples,
9163*b7893ccfSSadaf Ebrahimi VkMultisamplePropertiesEXT* pMultisampleProperties) {
9164*b7893ccfSSadaf Ebrahimi bool skip = false;
9165*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetPhysicalDeviceMultisamplePropertiesEXT", "samples", "VkSampleCountFlagBits", AllVkSampleCountFlagBits, samples, kRequiredSingleBit, "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter", "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter");
9166*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceMultisamplePropertiesEXT", "pMultisampleProperties", "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT", pMultisampleProperties, VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, true, "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter", "VUID-VkMultisamplePropertiesEXT-sType-sType");
9167*b7893ccfSSadaf Ebrahimi if (pMultisampleProperties != NULL)
9168*b7893ccfSSadaf Ebrahimi {
9169*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9170*b7893ccfSSadaf Ebrahimi }
9171*b7893ccfSSadaf Ebrahimi return skip;
9172*b7893ccfSSadaf Ebrahimi }
9173*b7893ccfSSadaf Ebrahimi
9174*b7893ccfSSadaf Ebrahimi
9175*b7893ccfSSadaf Ebrahimi
9176*b7893ccfSSadaf Ebrahimi
9177*b7893ccfSSadaf Ebrahimi
9178*b7893ccfSSadaf Ebrahimi
9179*b7893ccfSSadaf Ebrahimi
9180*b7893ccfSSadaf Ebrahimi
9181*b7893ccfSSadaf Ebrahimi
9182*b7893ccfSSadaf Ebrahimi
9183*b7893ccfSSadaf Ebrahimi
9184*b7893ccfSSadaf Ebrahimi
9185*b7893ccfSSadaf Ebrahimi
9186*b7893ccfSSadaf Ebrahimi
9187*b7893ccfSSadaf Ebrahimi
PreCallValidateGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)9188*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetImageDrmFormatModifierPropertiesEXT(
9189*b7893ccfSSadaf Ebrahimi VkDevice device,
9190*b7893ccfSSadaf Ebrahimi VkImage image,
9191*b7893ccfSSadaf Ebrahimi VkImageDrmFormatModifierPropertiesEXT* pProperties) {
9192*b7893ccfSSadaf Ebrahimi bool skip = false;
9193*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_sampler_ycbcr_conversion) skip |= OutputExtensionError("vkGetImageDrmFormatModifierPropertiesEXT", VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
9194*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_image_format_list) skip |= OutputExtensionError("vkGetImageDrmFormatModifierPropertiesEXT", VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME);
9195*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetImageDrmFormatModifierPropertiesEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9196*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_bind_memory_2) skip |= OutputExtensionError("vkGetImageDrmFormatModifierPropertiesEXT", VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
9197*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_image_drm_format_modifier) skip |= OutputExtensionError("vkGetImageDrmFormatModifierPropertiesEXT", VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME);
9198*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetImageDrmFormatModifierPropertiesEXT", "image", image);
9199*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetImageDrmFormatModifierPropertiesEXT", "pProperties", "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", pProperties, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, true, "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter", "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType");
9200*b7893ccfSSadaf Ebrahimi if (pProperties != NULL)
9201*b7893ccfSSadaf Ebrahimi {
9202*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9203*b7893ccfSSadaf Ebrahimi }
9204*b7893ccfSSadaf Ebrahimi return skip;
9205*b7893ccfSSadaf Ebrahimi }
9206*b7893ccfSSadaf Ebrahimi
9207*b7893ccfSSadaf Ebrahimi
9208*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)9209*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateValidationCacheEXT(
9210*b7893ccfSSadaf Ebrahimi VkDevice device,
9211*b7893ccfSSadaf Ebrahimi const VkValidationCacheCreateInfoEXT* pCreateInfo,
9212*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
9213*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT* pValidationCache) {
9214*b7893ccfSSadaf Ebrahimi bool skip = false;
9215*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_validation_cache) skip |= OutputExtensionError("vkCreateValidationCacheEXT", VK_EXT_VALIDATION_CACHE_EXTENSION_NAME);
9216*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateValidationCacheEXT", "pCreateInfo", "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT", pCreateInfo, VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, true, "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter", "VUID-VkValidationCacheCreateInfoEXT-sType-sType");
9217*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
9218*b7893ccfSSadaf Ebrahimi {
9219*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateValidationCacheEXT", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext");
9220*b7893ccfSSadaf Ebrahimi
9221*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateValidationCacheEXT", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask");
9222*b7893ccfSSadaf Ebrahimi
9223*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateValidationCacheEXT", "pCreateInfo->initialDataSize", "pCreateInfo->pInitialData", pCreateInfo->initialDataSize, &pCreateInfo->pInitialData, false, true, kVUIDUndefined, "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter");
9224*b7893ccfSSadaf Ebrahimi }
9225*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
9226*b7893ccfSSadaf Ebrahimi {
9227*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
9228*b7893ccfSSadaf Ebrahimi
9229*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9230*b7893ccfSSadaf Ebrahimi
9231*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9232*b7893ccfSSadaf Ebrahimi
9233*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9234*b7893ccfSSadaf Ebrahimi {
9235*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9236*b7893ccfSSadaf Ebrahimi
9237*b7893ccfSSadaf Ebrahimi }
9238*b7893ccfSSadaf Ebrahimi
9239*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9240*b7893ccfSSadaf Ebrahimi {
9241*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9242*b7893ccfSSadaf Ebrahimi
9243*b7893ccfSSadaf Ebrahimi }
9244*b7893ccfSSadaf Ebrahimi }
9245*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateValidationCacheEXT", "pValidationCache", pValidationCache, "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter");
9246*b7893ccfSSadaf Ebrahimi return skip;
9247*b7893ccfSSadaf Ebrahimi }
9248*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)9249*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyValidationCacheEXT(
9250*b7893ccfSSadaf Ebrahimi VkDevice device,
9251*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT validationCache,
9252*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
9253*b7893ccfSSadaf Ebrahimi bool skip = false;
9254*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_validation_cache) skip |= OutputExtensionError("vkDestroyValidationCacheEXT", VK_EXT_VALIDATION_CACHE_EXTENSION_NAME);
9255*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
9256*b7893ccfSSadaf Ebrahimi {
9257*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyValidationCacheEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
9258*b7893ccfSSadaf Ebrahimi
9259*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyValidationCacheEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9260*b7893ccfSSadaf Ebrahimi
9261*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyValidationCacheEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9262*b7893ccfSSadaf Ebrahimi
9263*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9264*b7893ccfSSadaf Ebrahimi {
9265*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyValidationCacheEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9266*b7893ccfSSadaf Ebrahimi
9267*b7893ccfSSadaf Ebrahimi }
9268*b7893ccfSSadaf Ebrahimi
9269*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9270*b7893ccfSSadaf Ebrahimi {
9271*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyValidationCacheEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9272*b7893ccfSSadaf Ebrahimi
9273*b7893ccfSSadaf Ebrahimi }
9274*b7893ccfSSadaf Ebrahimi }
9275*b7893ccfSSadaf Ebrahimi return skip;
9276*b7893ccfSSadaf Ebrahimi }
9277*b7893ccfSSadaf Ebrahimi
PreCallValidateMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)9278*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateMergeValidationCachesEXT(
9279*b7893ccfSSadaf Ebrahimi VkDevice device,
9280*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT dstCache,
9281*b7893ccfSSadaf Ebrahimi uint32_t srcCacheCount,
9282*b7893ccfSSadaf Ebrahimi const VkValidationCacheEXT* pSrcCaches) {
9283*b7893ccfSSadaf Ebrahimi bool skip = false;
9284*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_validation_cache) skip |= OutputExtensionError("vkMergeValidationCachesEXT", VK_EXT_VALIDATION_CACHE_EXTENSION_NAME);
9285*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkMergeValidationCachesEXT", "dstCache", dstCache);
9286*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkMergeValidationCachesEXT", "srcCacheCount", "pSrcCaches", srcCacheCount, pSrcCaches, true, true);
9287*b7893ccfSSadaf Ebrahimi return skip;
9288*b7893ccfSSadaf Ebrahimi }
9289*b7893ccfSSadaf Ebrahimi
PreCallValidateGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)9290*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetValidationCacheDataEXT(
9291*b7893ccfSSadaf Ebrahimi VkDevice device,
9292*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT validationCache,
9293*b7893ccfSSadaf Ebrahimi size_t* pDataSize,
9294*b7893ccfSSadaf Ebrahimi void* pData) {
9295*b7893ccfSSadaf Ebrahimi bool skip = false;
9296*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_validation_cache) skip |= OutputExtensionError("vkGetValidationCacheDataEXT", VK_EXT_VALIDATION_CACHE_EXTENSION_NAME);
9297*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetValidationCacheDataEXT", "validationCache", validationCache);
9298*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetValidationCacheDataEXT", "pDataSize", "pData", pDataSize, &pData, true, false, false, kVUIDUndefined, "VUID-vkGetValidationCacheDataEXT-pData-parameter");
9299*b7893ccfSSadaf Ebrahimi return skip;
9300*b7893ccfSSadaf Ebrahimi }
9301*b7893ccfSSadaf Ebrahimi
9302*b7893ccfSSadaf Ebrahimi
9303*b7893ccfSSadaf Ebrahimi
9304*b7893ccfSSadaf Ebrahimi
9305*b7893ccfSSadaf Ebrahimi
9306*b7893ccfSSadaf Ebrahimi
9307*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)9308*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBindShadingRateImageNV(
9309*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9310*b7893ccfSSadaf Ebrahimi VkImageView imageView,
9311*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout) {
9312*b7893ccfSSadaf Ebrahimi bool skip = false;
9313*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdBindShadingRateImageNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9314*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_shading_rate_image) skip |= OutputExtensionError("vkCmdBindShadingRateImageNV", VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME);
9315*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBindShadingRateImageNV", "imageLayout", "VkImageLayout", AllVkImageLayoutEnums, imageLayout, "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter");
9316*b7893ccfSSadaf Ebrahimi return skip;
9317*b7893ccfSSadaf Ebrahimi }
9318*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)9319*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetViewportShadingRatePaletteNV(
9320*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9321*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
9322*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
9323*b7893ccfSSadaf Ebrahimi const VkShadingRatePaletteNV* pShadingRatePalettes) {
9324*b7893ccfSSadaf Ebrahimi bool skip = false;
9325*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetViewportShadingRatePaletteNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9326*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_shading_rate_image) skip |= OutputExtensionError("vkCmdSetViewportShadingRatePaletteNV", VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME);
9327*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetViewportShadingRatePaletteNV", "viewportCount", "pShadingRatePalettes", viewportCount, &pShadingRatePalettes, true, true, "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength", "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter");
9328*b7893ccfSSadaf Ebrahimi if (pShadingRatePalettes != NULL)
9329*b7893ccfSSadaf Ebrahimi {
9330*b7893ccfSSadaf Ebrahimi for (uint32_t viewportIndex = 0; viewportIndex < viewportCount; ++viewportIndex)
9331*b7893ccfSSadaf Ebrahimi {
9332*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum_array("vkCmdSetViewportShadingRatePaletteNV", ParameterName("pShadingRatePalettes[%i].shadingRatePaletteEntryCount", ParameterName::IndexVector{ viewportIndex }), ParameterName("pShadingRatePalettes[%i].pShadingRatePaletteEntries", ParameterName::IndexVector{ viewportIndex }), "VkShadingRatePaletteEntryNV", AllVkShadingRatePaletteEntryNVEnums, pShadingRatePalettes[viewportIndex].shadingRatePaletteEntryCount, pShadingRatePalettes[viewportIndex].pShadingRatePaletteEntries, true, true);
9333*b7893ccfSSadaf Ebrahimi }
9334*b7893ccfSSadaf Ebrahimi }
9335*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
9336*b7893ccfSSadaf Ebrahimi return skip;
9337*b7893ccfSSadaf Ebrahimi }
9338*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)9339*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetCoarseSampleOrderNV(
9340*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9341*b7893ccfSSadaf Ebrahimi VkCoarseSampleOrderTypeNV sampleOrderType,
9342*b7893ccfSSadaf Ebrahimi uint32_t customSampleOrderCount,
9343*b7893ccfSSadaf Ebrahimi const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
9344*b7893ccfSSadaf Ebrahimi bool skip = false;
9345*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetCoarseSampleOrderNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9346*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_shading_rate_image) skip |= OutputExtensionError("vkCmdSetCoarseSampleOrderNV", VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME);
9347*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdSetCoarseSampleOrderNV", "sampleOrderType", "VkCoarseSampleOrderTypeNV", AllVkCoarseSampleOrderTypeNVEnums, sampleOrderType, "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter");
9348*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetCoarseSampleOrderNV", "customSampleOrderCount", "pCustomSampleOrders", customSampleOrderCount, &pCustomSampleOrders, false, true, kVUIDUndefined, "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter");
9349*b7893ccfSSadaf Ebrahimi if (pCustomSampleOrders != NULL)
9350*b7893ccfSSadaf Ebrahimi {
9351*b7893ccfSSadaf Ebrahimi for (uint32_t customSampleOrderIndex = 0; customSampleOrderIndex < customSampleOrderCount; ++customSampleOrderIndex)
9352*b7893ccfSSadaf Ebrahimi {
9353*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdSetCoarseSampleOrderNV", ParameterName("pCustomSampleOrders[%i].shadingRate", ParameterName::IndexVector{ customSampleOrderIndex }), "VkShadingRatePaletteEntryNV", AllVkShadingRatePaletteEntryNVEnums, pCustomSampleOrders[customSampleOrderIndex].shadingRate, "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter");
9354*b7893ccfSSadaf Ebrahimi
9355*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetCoarseSampleOrderNV", ParameterName("pCustomSampleOrders[%i].sampleLocationCount", ParameterName::IndexVector{ customSampleOrderIndex }), ParameterName("pCustomSampleOrders[%i].pSampleLocations", ParameterName::IndexVector{ customSampleOrderIndex }), pCustomSampleOrders[customSampleOrderIndex].sampleLocationCount, &pCustomSampleOrders[customSampleOrderIndex].pSampleLocations, true, true, "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength", "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter");
9356*b7893ccfSSadaf Ebrahimi
9357*b7893ccfSSadaf Ebrahimi if (pCustomSampleOrders[customSampleOrderIndex].pSampleLocations != NULL)
9358*b7893ccfSSadaf Ebrahimi {
9359*b7893ccfSSadaf Ebrahimi for (uint32_t sampleLocationIndex = 0; sampleLocationIndex < pCustomSampleOrders[customSampleOrderIndex].sampleLocationCount; ++sampleLocationIndex)
9360*b7893ccfSSadaf Ebrahimi {
9361*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9362*b7893ccfSSadaf Ebrahimi }
9363*b7893ccfSSadaf Ebrahimi }
9364*b7893ccfSSadaf Ebrahimi }
9365*b7893ccfSSadaf Ebrahimi }
9366*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
9367*b7893ccfSSadaf Ebrahimi return skip;
9368*b7893ccfSSadaf Ebrahimi }
9369*b7893ccfSSadaf Ebrahimi
9370*b7893ccfSSadaf Ebrahimi
9371*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)9372*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateAccelerationStructureNV(
9373*b7893ccfSSadaf Ebrahimi VkDevice device,
9374*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureCreateInfoNV* pCreateInfo,
9375*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
9376*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV* pAccelerationStructure) {
9377*b7893ccfSSadaf Ebrahimi bool skip = false;
9378*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCreateAccelerationStructureNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9379*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCreateAccelerationStructureNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9380*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCreateAccelerationStructureNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9381*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateAccelerationStructureNV", "pCreateInfo", "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV", pCreateInfo, VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV, true, "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter", "VUID-VkAccelerationStructureCreateInfoNV-sType-sType");
9382*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
9383*b7893ccfSSadaf Ebrahimi {
9384*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAccelerationStructureNV", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext");
9385*b7893ccfSSadaf Ebrahimi
9386*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateAccelerationStructureNV", "pCreateInfo->info", "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV", &(pCreateInfo->info), VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV, false, kVUIDUndefined, "VUID-VkAccelerationStructureInfoNV-sType-sType");
9387*b7893ccfSSadaf Ebrahimi
9388*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAccelerationStructureNV", "pCreateInfo->info.pNext", NULL, pCreateInfo->info.pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAccelerationStructureInfoNV-pNext-pNext");
9389*b7893ccfSSadaf Ebrahimi
9390*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateAccelerationStructureNV", "pCreateInfo->info.type", "VkAccelerationStructureTypeNV", AllVkAccelerationStructureTypeNVEnums, pCreateInfo->info.type, "VUID-VkAccelerationStructureInfoNV-type-parameter");
9391*b7893ccfSSadaf Ebrahimi
9392*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateAccelerationStructureNV", "pCreateInfo->info.flags", "VkBuildAccelerationStructureFlagBitsNV", AllVkBuildAccelerationStructureFlagBitsNV, pCreateInfo->info.flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-parameter");
9393*b7893ccfSSadaf Ebrahimi
9394*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateAccelerationStructureNV", "pCreateInfo->info.geometryCount", "pCreateInfo->info.pGeometries", "VK_STRUCTURE_TYPE_GEOMETRY_NV", pCreateInfo->info.geometryCount, pCreateInfo->info.pGeometries, VK_STRUCTURE_TYPE_GEOMETRY_NV, false, true, "VUID-VkGeometryNV-sType-sType", "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", kVUIDUndefined);
9395*b7893ccfSSadaf Ebrahimi
9396*b7893ccfSSadaf Ebrahimi if (pCreateInfo->info.pGeometries != NULL)
9397*b7893ccfSSadaf Ebrahimi {
9398*b7893ccfSSadaf Ebrahimi for (uint32_t geometryIndex = 0; geometryIndex < pCreateInfo->info.geometryCount; ++geometryIndex)
9399*b7893ccfSSadaf Ebrahimi {
9400*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pCreateInfo->info.pGeometries[geometryIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryNV-pNext-pNext");
9401*b7893ccfSSadaf Ebrahimi
9402*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometryType", ParameterName::IndexVector{ geometryIndex }), "VkGeometryTypeNV", AllVkGeometryTypeNVEnums, pCreateInfo->info.pGeometries[geometryIndex].geometryType, "VUID-VkGeometryNV-geometryType-parameter");
9403*b7893ccfSSadaf Ebrahimi
9404*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.triangles", ParameterName::IndexVector{ geometryIndex }), "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", &(pCreateInfo->info.pGeometries[geometryIndex].geometry.triangles), VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV, false, kVUIDUndefined, "VUID-VkGeometryTrianglesNV-sType-sType");
9405*b7893ccfSSadaf Ebrahimi
9406*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.triangles.pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pCreateInfo->info.pGeometries[geometryIndex].geometry.triangles.pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryTrianglesNV-pNext-pNext");
9407*b7893ccfSSadaf Ebrahimi
9408*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.triangles.vertexFormat", ParameterName::IndexVector{ geometryIndex }), "VkFormat", AllVkFormatEnums, pCreateInfo->info.pGeometries[geometryIndex].geometry.triangles.vertexFormat, "VUID-VkGeometryTrianglesNV-vertexFormat-parameter");
9409*b7893ccfSSadaf Ebrahimi
9410*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.triangles.indexType", ParameterName::IndexVector{ geometryIndex }), "VkIndexType", AllVkIndexTypeEnums, pCreateInfo->info.pGeometries[geometryIndex].geometry.triangles.indexType, "VUID-VkGeometryTrianglesNV-indexType-parameter");
9411*b7893ccfSSadaf Ebrahimi
9412*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.aabbs", ParameterName::IndexVector{ geometryIndex }), "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV", &(pCreateInfo->info.pGeometries[geometryIndex].geometry.aabbs), VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV, false, kVUIDUndefined, "VUID-VkGeometryAABBNV-sType-sType");
9413*b7893ccfSSadaf Ebrahimi
9414*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].geometry.aabbs.pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pCreateInfo->info.pGeometries[geometryIndex].geometry.aabbs.pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryAABBNV-pNext-pNext");
9415*b7893ccfSSadaf Ebrahimi
9416*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateAccelerationStructureNV", ParameterName("pCreateInfo->info.pGeometries[%i].flags", ParameterName::IndexVector{ geometryIndex }), "VkGeometryFlagBitsNV", AllVkGeometryFlagBitsNV, pCreateInfo->info.pGeometries[geometryIndex].flags, kOptionalFlags, "VUID-VkGeometryNV-flags-parameter");
9417*b7893ccfSSadaf Ebrahimi }
9418*b7893ccfSSadaf Ebrahimi }
9419*b7893ccfSSadaf Ebrahimi }
9420*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
9421*b7893ccfSSadaf Ebrahimi {
9422*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
9423*b7893ccfSSadaf Ebrahimi
9424*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9425*b7893ccfSSadaf Ebrahimi
9426*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9427*b7893ccfSSadaf Ebrahimi
9428*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9429*b7893ccfSSadaf Ebrahimi {
9430*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9431*b7893ccfSSadaf Ebrahimi
9432*b7893ccfSSadaf Ebrahimi }
9433*b7893ccfSSadaf Ebrahimi
9434*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9435*b7893ccfSSadaf Ebrahimi {
9436*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9437*b7893ccfSSadaf Ebrahimi
9438*b7893ccfSSadaf Ebrahimi }
9439*b7893ccfSSadaf Ebrahimi }
9440*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateAccelerationStructureNV", "pAccelerationStructure", pAccelerationStructure, "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter");
9441*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
9442*b7893ccfSSadaf Ebrahimi return skip;
9443*b7893ccfSSadaf Ebrahimi }
9444*b7893ccfSSadaf Ebrahimi
PreCallValidateDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)9445*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateDestroyAccelerationStructureNV(
9446*b7893ccfSSadaf Ebrahimi VkDevice device,
9447*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV accelerationStructure,
9448*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator) {
9449*b7893ccfSSadaf Ebrahimi bool skip = false;
9450*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkDestroyAccelerationStructureNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9451*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkDestroyAccelerationStructureNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9452*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkDestroyAccelerationStructureNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9453*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkDestroyAccelerationStructureNV", "accelerationStructure", accelerationStructure);
9454*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
9455*b7893ccfSSadaf Ebrahimi {
9456*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyAccelerationStructureNV", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
9457*b7893ccfSSadaf Ebrahimi
9458*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyAccelerationStructureNV", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9459*b7893ccfSSadaf Ebrahimi
9460*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyAccelerationStructureNV", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9461*b7893ccfSSadaf Ebrahimi
9462*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9463*b7893ccfSSadaf Ebrahimi {
9464*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyAccelerationStructureNV", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9465*b7893ccfSSadaf Ebrahimi
9466*b7893ccfSSadaf Ebrahimi }
9467*b7893ccfSSadaf Ebrahimi
9468*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9469*b7893ccfSSadaf Ebrahimi {
9470*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkDestroyAccelerationStructureNV", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9471*b7893ccfSSadaf Ebrahimi
9472*b7893ccfSSadaf Ebrahimi }
9473*b7893ccfSSadaf Ebrahimi }
9474*b7893ccfSSadaf Ebrahimi return skip;
9475*b7893ccfSSadaf Ebrahimi }
9476*b7893ccfSSadaf Ebrahimi
PreCallValidateGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)9477*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetAccelerationStructureMemoryRequirementsNV(
9478*b7893ccfSSadaf Ebrahimi VkDevice device,
9479*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
9480*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2KHR* pMemoryRequirements) {
9481*b7893ccfSSadaf Ebrahimi bool skip = false;
9482*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetAccelerationStructureMemoryRequirementsNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9483*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetAccelerationStructureMemoryRequirementsNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9484*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkGetAccelerationStructureMemoryRequirementsNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9485*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetAccelerationStructureMemoryRequirementsNV", "pInfo", "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV", pInfo, VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV, true, "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter", "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType");
9486*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
9487*b7893ccfSSadaf Ebrahimi {
9488*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetAccelerationStructureMemoryRequirementsNV", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext");
9489*b7893ccfSSadaf Ebrahimi
9490*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetAccelerationStructureMemoryRequirementsNV", "pInfo->type", "VkAccelerationStructureMemoryRequirementsTypeNV", AllVkAccelerationStructureMemoryRequirementsTypeNVEnums, pInfo->type, "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter");
9491*b7893ccfSSadaf Ebrahimi
9492*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetAccelerationStructureMemoryRequirementsNV", "pInfo->accelerationStructure", pInfo->accelerationStructure);
9493*b7893ccfSSadaf Ebrahimi }
9494*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetAccelerationStructureMemoryRequirementsNV", "pMemoryRequirements", pMemoryRequirements, "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter");
9495*b7893ccfSSadaf Ebrahimi return skip;
9496*b7893ccfSSadaf Ebrahimi }
9497*b7893ccfSSadaf Ebrahimi
PreCallValidateBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)9498*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateBindAccelerationStructureMemoryNV(
9499*b7893ccfSSadaf Ebrahimi VkDevice device,
9500*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
9501*b7893ccfSSadaf Ebrahimi const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
9502*b7893ccfSSadaf Ebrahimi bool skip = false;
9503*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkBindAccelerationStructureMemoryNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9504*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkBindAccelerationStructureMemoryNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9505*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkBindAccelerationStructureMemoryNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9506*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkBindAccelerationStructureMemoryNV", "bindInfoCount", "pBindInfos", "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV", bindInfoCount, pBindInfos, VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV, true, true, "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType", "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter", "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength");
9507*b7893ccfSSadaf Ebrahimi if (pBindInfos != NULL)
9508*b7893ccfSSadaf Ebrahimi {
9509*b7893ccfSSadaf Ebrahimi for (uint32_t bindInfoIndex = 0; bindInfoIndex < bindInfoCount; ++bindInfoIndex)
9510*b7893ccfSSadaf Ebrahimi {
9511*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkBindAccelerationStructureMemoryNV", ParameterName("pBindInfos[%i].pNext", ParameterName::IndexVector{ bindInfoIndex }), NULL, pBindInfos[bindInfoIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext");
9512*b7893ccfSSadaf Ebrahimi
9513*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindAccelerationStructureMemoryNV", ParameterName("pBindInfos[%i].accelerationStructure", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].accelerationStructure);
9514*b7893ccfSSadaf Ebrahimi
9515*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkBindAccelerationStructureMemoryNV", ParameterName("pBindInfos[%i].memory", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].memory);
9516*b7893ccfSSadaf Ebrahimi
9517*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkBindAccelerationStructureMemoryNV", ParameterName("pBindInfos[%i].deviceIndexCount", ParameterName::IndexVector{ bindInfoIndex }), ParameterName("pBindInfos[%i].pDeviceIndices", ParameterName::IndexVector{ bindInfoIndex }), pBindInfos[bindInfoIndex].deviceIndexCount, &pBindInfos[bindInfoIndex].pDeviceIndices, false, true, kVUIDUndefined, "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter");
9518*b7893ccfSSadaf Ebrahimi }
9519*b7893ccfSSadaf Ebrahimi }
9520*b7893ccfSSadaf Ebrahimi return skip;
9521*b7893ccfSSadaf Ebrahimi }
9522*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)9523*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdBuildAccelerationStructureNV(
9524*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9525*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureInfoNV* pInfo,
9526*b7893ccfSSadaf Ebrahimi VkBuffer instanceData,
9527*b7893ccfSSadaf Ebrahimi VkDeviceSize instanceOffset,
9528*b7893ccfSSadaf Ebrahimi VkBool32 update,
9529*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV dst,
9530*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV src,
9531*b7893ccfSSadaf Ebrahimi VkBuffer scratch,
9532*b7893ccfSSadaf Ebrahimi VkDeviceSize scratchOffset) {
9533*b7893ccfSSadaf Ebrahimi bool skip = false;
9534*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCmdBuildAccelerationStructureNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9535*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdBuildAccelerationStructureNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9536*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCmdBuildAccelerationStructureNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9537*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBuildAccelerationStructureNV", "pInfo", "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV", pInfo, VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV, true, "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter", "VUID-VkAccelerationStructureInfoNV-sType-sType");
9538*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
9539*b7893ccfSSadaf Ebrahimi {
9540*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBuildAccelerationStructureNV", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkAccelerationStructureInfoNV-pNext-pNext");
9541*b7893ccfSSadaf Ebrahimi
9542*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBuildAccelerationStructureNV", "pInfo->type", "VkAccelerationStructureTypeNV", AllVkAccelerationStructureTypeNVEnums, pInfo->type, "VUID-VkAccelerationStructureInfoNV-type-parameter");
9543*b7893ccfSSadaf Ebrahimi
9544*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBuildAccelerationStructureNV", "pInfo->flags", "VkBuildAccelerationStructureFlagBitsNV", AllVkBuildAccelerationStructureFlagBitsNV, pInfo->flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-parameter");
9545*b7893ccfSSadaf Ebrahimi
9546*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCmdBuildAccelerationStructureNV", "pInfo->geometryCount", "pInfo->pGeometries", "VK_STRUCTURE_TYPE_GEOMETRY_NV", pInfo->geometryCount, pInfo->pGeometries, VK_STRUCTURE_TYPE_GEOMETRY_NV, false, true, "VUID-VkGeometryNV-sType-sType", "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", kVUIDUndefined);
9547*b7893ccfSSadaf Ebrahimi
9548*b7893ccfSSadaf Ebrahimi if (pInfo->pGeometries != NULL)
9549*b7893ccfSSadaf Ebrahimi {
9550*b7893ccfSSadaf Ebrahimi for (uint32_t geometryIndex = 0; geometryIndex < pInfo->geometryCount; ++geometryIndex)
9551*b7893ccfSSadaf Ebrahimi {
9552*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pInfo->pGeometries[geometryIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryNV-pNext-pNext");
9553*b7893ccfSSadaf Ebrahimi
9554*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometryType", ParameterName::IndexVector{ geometryIndex }), "VkGeometryTypeNV", AllVkGeometryTypeNVEnums, pInfo->pGeometries[geometryIndex].geometryType, "VUID-VkGeometryNV-geometryType-parameter");
9555*b7893ccfSSadaf Ebrahimi
9556*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.triangles", ParameterName::IndexVector{ geometryIndex }), "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", &(pInfo->pGeometries[geometryIndex].geometry.triangles), VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV, false, kVUIDUndefined, "VUID-VkGeometryTrianglesNV-sType-sType");
9557*b7893ccfSSadaf Ebrahimi
9558*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.triangles.pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pInfo->pGeometries[geometryIndex].geometry.triangles.pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryTrianglesNV-pNext-pNext");
9559*b7893ccfSSadaf Ebrahimi
9560*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.triangles.vertexFormat", ParameterName::IndexVector{ geometryIndex }), "VkFormat", AllVkFormatEnums, pInfo->pGeometries[geometryIndex].geometry.triangles.vertexFormat, "VUID-VkGeometryTrianglesNV-vertexFormat-parameter");
9561*b7893ccfSSadaf Ebrahimi
9562*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.triangles.indexType", ParameterName::IndexVector{ geometryIndex }), "VkIndexType", AllVkIndexTypeEnums, pInfo->pGeometries[geometryIndex].geometry.triangles.indexType, "VUID-VkGeometryTrianglesNV-indexType-parameter");
9563*b7893ccfSSadaf Ebrahimi
9564*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.aabbs", ParameterName::IndexVector{ geometryIndex }), "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV", &(pInfo->pGeometries[geometryIndex].geometry.aabbs), VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV, false, kVUIDUndefined, "VUID-VkGeometryAABBNV-sType-sType");
9565*b7893ccfSSadaf Ebrahimi
9566*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].geometry.aabbs.pNext", ParameterName::IndexVector{ geometryIndex }), NULL, pInfo->pGeometries[geometryIndex].geometry.aabbs.pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkGeometryAABBNV-pNext-pNext");
9567*b7893ccfSSadaf Ebrahimi
9568*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdBuildAccelerationStructureNV", ParameterName("pInfo->pGeometries[%i].flags", ParameterName::IndexVector{ geometryIndex }), "VkGeometryFlagBitsNV", AllVkGeometryFlagBitsNV, pInfo->pGeometries[geometryIndex].flags, kOptionalFlags, "VUID-VkGeometryNV-flags-parameter");
9569*b7893ccfSSadaf Ebrahimi }
9570*b7893ccfSSadaf Ebrahimi }
9571*b7893ccfSSadaf Ebrahimi }
9572*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCmdBuildAccelerationStructureNV", "update", update);
9573*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBuildAccelerationStructureNV", "dst", dst);
9574*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdBuildAccelerationStructureNV", "scratch", scratch);
9575*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
9576*b7893ccfSSadaf Ebrahimi return skip;
9577*b7893ccfSSadaf Ebrahimi }
9578*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeNV mode)9579*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdCopyAccelerationStructureNV(
9580*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9581*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV dst,
9582*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV src,
9583*b7893ccfSSadaf Ebrahimi VkCopyAccelerationStructureModeNV mode) {
9584*b7893ccfSSadaf Ebrahimi bool skip = false;
9585*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCmdCopyAccelerationStructureNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9586*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdCopyAccelerationStructureNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9587*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCmdCopyAccelerationStructureNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9588*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyAccelerationStructureNV", "dst", dst);
9589*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdCopyAccelerationStructureNV", "src", src);
9590*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdCopyAccelerationStructureNV", "mode", "VkCopyAccelerationStructureModeNV", AllVkCopyAccelerationStructureModeNVEnums, mode, "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter");
9591*b7893ccfSSadaf Ebrahimi return skip;
9592*b7893ccfSSadaf Ebrahimi }
9593*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdTraceRaysNV(VkCommandBuffer commandBuffer,VkBuffer raygenShaderBindingTableBuffer,VkDeviceSize raygenShaderBindingOffset,VkBuffer missShaderBindingTableBuffer,VkDeviceSize missShaderBindingOffset,VkDeviceSize missShaderBindingStride,VkBuffer hitShaderBindingTableBuffer,VkDeviceSize hitShaderBindingOffset,VkDeviceSize hitShaderBindingStride,VkBuffer callableShaderBindingTableBuffer,VkDeviceSize callableShaderBindingOffset,VkDeviceSize callableShaderBindingStride,uint32_t width,uint32_t height,uint32_t depth)9594*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdTraceRaysNV(
9595*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9596*b7893ccfSSadaf Ebrahimi VkBuffer raygenShaderBindingTableBuffer,
9597*b7893ccfSSadaf Ebrahimi VkDeviceSize raygenShaderBindingOffset,
9598*b7893ccfSSadaf Ebrahimi VkBuffer missShaderBindingTableBuffer,
9599*b7893ccfSSadaf Ebrahimi VkDeviceSize missShaderBindingOffset,
9600*b7893ccfSSadaf Ebrahimi VkDeviceSize missShaderBindingStride,
9601*b7893ccfSSadaf Ebrahimi VkBuffer hitShaderBindingTableBuffer,
9602*b7893ccfSSadaf Ebrahimi VkDeviceSize hitShaderBindingOffset,
9603*b7893ccfSSadaf Ebrahimi VkDeviceSize hitShaderBindingStride,
9604*b7893ccfSSadaf Ebrahimi VkBuffer callableShaderBindingTableBuffer,
9605*b7893ccfSSadaf Ebrahimi VkDeviceSize callableShaderBindingOffset,
9606*b7893ccfSSadaf Ebrahimi VkDeviceSize callableShaderBindingStride,
9607*b7893ccfSSadaf Ebrahimi uint32_t width,
9608*b7893ccfSSadaf Ebrahimi uint32_t height,
9609*b7893ccfSSadaf Ebrahimi uint32_t depth) {
9610*b7893ccfSSadaf Ebrahimi bool skip = false;
9611*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCmdTraceRaysNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9612*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdTraceRaysNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9613*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCmdTraceRaysNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9614*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdTraceRaysNV", "raygenShaderBindingTableBuffer", raygenShaderBindingTableBuffer);
9615*b7893ccfSSadaf Ebrahimi return skip;
9616*b7893ccfSSadaf Ebrahimi }
9617*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)9618*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateRayTracingPipelinesNV(
9619*b7893ccfSSadaf Ebrahimi VkDevice device,
9620*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
9621*b7893ccfSSadaf Ebrahimi uint32_t createInfoCount,
9622*b7893ccfSSadaf Ebrahimi const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
9623*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
9624*b7893ccfSSadaf Ebrahimi VkPipeline* pPipelines) {
9625*b7893ccfSSadaf Ebrahimi bool skip = false;
9626*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCreateRayTracingPipelinesNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9627*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCreateRayTracingPipelinesNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9628*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCreateRayTracingPipelinesNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9629*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRayTracingPipelinesNV", "createInfoCount", "pCreateInfos", "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV", createInfoCount, pCreateInfos, VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV, true, true, "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType", "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter", "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength");
9630*b7893ccfSSadaf Ebrahimi if (pCreateInfos != NULL)
9631*b7893ccfSSadaf Ebrahimi {
9632*b7893ccfSSadaf Ebrahimi for (uint32_t createInfoIndex = 0; createInfoIndex < createInfoCount; ++createInfoIndex)
9633*b7893ccfSSadaf Ebrahimi {
9634*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkRayTracingPipelineCreateInfoNV[] = { VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT };
9635*b7893ccfSSadaf Ebrahimi
9636*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pNext", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCreationFeedbackCreateInfoEXT", pCreateInfos[createInfoIndex].pNext, ARRAY_SIZE(allowed_structs_VkRayTracingPipelineCreateInfoNV), allowed_structs_VkRayTracingPipelineCreateInfoNV, GeneratedVulkanHeaderVersion, "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext");
9637*b7893ccfSSadaf Ebrahimi
9638*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].flags", ParameterName::IndexVector{ createInfoIndex }), "VkPipelineCreateFlagBits", AllVkPipelineCreateFlagBits, pCreateInfos[createInfoIndex].flags, kOptionalFlags, "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter");
9639*b7893ccfSSadaf Ebrahimi
9640*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].stageCount", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].pStages", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", pCreateInfos[createInfoIndex].stageCount, pCreateInfos[createInfoIndex].pStages, VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, true, true, "VUID-VkPipelineShaderStageCreateInfo-sType-sType", "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter", "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength");
9641*b7893ccfSSadaf Ebrahimi
9642*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages != NULL)
9643*b7893ccfSSadaf Ebrahimi {
9644*b7893ccfSSadaf Ebrahimi for (uint32_t stageIndex = 0; stageIndex < pCreateInfos[createInfoIndex].stageCount; ++stageIndex)
9645*b7893ccfSSadaf Ebrahimi {
9646*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPipelineShaderStageCreateInfo[] = { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT };
9647*b7893ccfSSadaf Ebrahimi
9648*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].pNext", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT", pCreateInfos[createInfoIndex].pStages[stageIndex].pNext, ARRAY_SIZE(allowed_structs_VkPipelineShaderStageCreateInfo), allowed_structs_VkPipelineShaderStageCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext");
9649*b7893ccfSSadaf Ebrahimi
9650*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].flags", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkPipelineShaderStageCreateFlagBits", AllVkPipelineShaderStageCreateFlagBits, pCreateInfos[createInfoIndex].pStages[stageIndex].flags, kOptionalFlags, "VUID-VkPipelineShaderStageCreateInfo-flags-parameter");
9651*b7893ccfSSadaf Ebrahimi
9652*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].stage", ParameterName::IndexVector{ createInfoIndex, stageIndex }), "VkShaderStageFlagBits", AllVkShaderStageFlagBits, pCreateInfos[createInfoIndex].pStages[stageIndex].stage, kRequiredSingleBit, "VUID-VkPipelineShaderStageCreateInfo-stage-parameter", "VUID-VkPipelineShaderStageCreateInfo-stage-parameter");
9653*b7893ccfSSadaf Ebrahimi
9654*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].module", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].module);
9655*b7893ccfSSadaf Ebrahimi
9656*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].pName", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pName, "VUID-VkPipelineShaderStageCreateInfo-pName-parameter");
9657*b7893ccfSSadaf Ebrahimi
9658*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo != NULL)
9659*b7893ccfSSadaf Ebrahimi {
9660*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->mapEntryCount", ParameterName::IndexVector{ createInfoIndex, stageIndex }), ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->pMapEntries", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->mapEntryCount, &pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pMapEntries, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pMapEntries-parameter");
9661*b7893ccfSSadaf Ebrahimi
9662*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pMapEntries != NULL)
9663*b7893ccfSSadaf Ebrahimi {
9664*b7893ccfSSadaf Ebrahimi for (uint32_t mapEntryIndex = 0; mapEntryIndex < pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->mapEntryCount; ++mapEntryIndex)
9665*b7893ccfSSadaf Ebrahimi {
9666*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9667*b7893ccfSSadaf Ebrahimi }
9668*b7893ccfSSadaf Ebrahimi }
9669*b7893ccfSSadaf Ebrahimi
9670*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->dataSize", ParameterName::IndexVector{ createInfoIndex, stageIndex }), ParameterName("pCreateInfos[%i].pStages[%i].pSpecializationInfo->pData", ParameterName::IndexVector{ createInfoIndex, stageIndex }), pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->dataSize, &pCreateInfos[createInfoIndex].pStages[stageIndex].pSpecializationInfo->pData, false, true, kVUIDUndefined, "VUID-VkSpecializationInfo-pData-parameter");
9671*b7893ccfSSadaf Ebrahimi }
9672*b7893ccfSSadaf Ebrahimi }
9673*b7893ccfSSadaf Ebrahimi }
9674*b7893ccfSSadaf Ebrahimi
9675*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].groupCount", ParameterName::IndexVector{ createInfoIndex }), ParameterName("pCreateInfos[%i].pGroups", ParameterName::IndexVector{ createInfoIndex }), "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV", pCreateInfos[createInfoIndex].groupCount, pCreateInfos[createInfoIndex].pGroups, VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV, true, true, "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType", "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter", "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength");
9676*b7893ccfSSadaf Ebrahimi
9677*b7893ccfSSadaf Ebrahimi if (pCreateInfos[createInfoIndex].pGroups != NULL)
9678*b7893ccfSSadaf Ebrahimi {
9679*b7893ccfSSadaf Ebrahimi for (uint32_t groupIndex = 0; groupIndex < pCreateInfos[createInfoIndex].groupCount; ++groupIndex)
9680*b7893ccfSSadaf Ebrahimi {
9681*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pGroups[%i].pNext", ParameterName::IndexVector{ createInfoIndex, groupIndex }), NULL, pCreateInfos[createInfoIndex].pGroups[groupIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext");
9682*b7893ccfSSadaf Ebrahimi
9683*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].pGroups[%i].type", ParameterName::IndexVector{ createInfoIndex, groupIndex }), "VkRayTracingShaderGroupTypeNV", AllVkRayTracingShaderGroupTypeNVEnums, pCreateInfos[createInfoIndex].pGroups[groupIndex].type, "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter");
9684*b7893ccfSSadaf Ebrahimi }
9685*b7893ccfSSadaf Ebrahimi }
9686*b7893ccfSSadaf Ebrahimi
9687*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCreateRayTracingPipelinesNV", ParameterName("pCreateInfos[%i].layout", ParameterName::IndexVector{ createInfoIndex }), pCreateInfos[createInfoIndex].layout);
9688*b7893ccfSSadaf Ebrahimi }
9689*b7893ccfSSadaf Ebrahimi }
9690*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
9691*b7893ccfSSadaf Ebrahimi {
9692*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
9693*b7893ccfSSadaf Ebrahimi
9694*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
9695*b7893ccfSSadaf Ebrahimi
9696*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
9697*b7893ccfSSadaf Ebrahimi
9698*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
9699*b7893ccfSSadaf Ebrahimi {
9700*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9701*b7893ccfSSadaf Ebrahimi
9702*b7893ccfSSadaf Ebrahimi }
9703*b7893ccfSSadaf Ebrahimi
9704*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
9705*b7893ccfSSadaf Ebrahimi {
9706*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateRayTracingPipelinesNV", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
9707*b7893ccfSSadaf Ebrahimi
9708*b7893ccfSSadaf Ebrahimi }
9709*b7893ccfSSadaf Ebrahimi }
9710*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCreateRayTracingPipelinesNV", "createInfoCount", "pPipelines", createInfoCount, &pPipelines, true, true, "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength", "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter");
9711*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
9712*b7893ccfSSadaf Ebrahimi return skip;
9713*b7893ccfSSadaf Ebrahimi }
9714*b7893ccfSSadaf Ebrahimi
PreCallValidateGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)9715*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetRayTracingShaderGroupHandlesNV(
9716*b7893ccfSSadaf Ebrahimi VkDevice device,
9717*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
9718*b7893ccfSSadaf Ebrahimi uint32_t firstGroup,
9719*b7893ccfSSadaf Ebrahimi uint32_t groupCount,
9720*b7893ccfSSadaf Ebrahimi size_t dataSize,
9721*b7893ccfSSadaf Ebrahimi void* pData) {
9722*b7893ccfSSadaf Ebrahimi bool skip = false;
9723*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetRayTracingShaderGroupHandlesNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9724*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetRayTracingShaderGroupHandlesNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9725*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkGetRayTracingShaderGroupHandlesNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9726*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetRayTracingShaderGroupHandlesNV", "pipeline", pipeline);
9727*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetRayTracingShaderGroupHandlesNV", "dataSize", "pData", dataSize, &pData, true, true, "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength", "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter");
9728*b7893ccfSSadaf Ebrahimi return skip;
9729*b7893ccfSSadaf Ebrahimi }
9730*b7893ccfSSadaf Ebrahimi
PreCallValidateGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)9731*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetAccelerationStructureHandleNV(
9732*b7893ccfSSadaf Ebrahimi VkDevice device,
9733*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV accelerationStructure,
9734*b7893ccfSSadaf Ebrahimi size_t dataSize,
9735*b7893ccfSSadaf Ebrahimi void* pData) {
9736*b7893ccfSSadaf Ebrahimi bool skip = false;
9737*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkGetAccelerationStructureHandleNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9738*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetAccelerationStructureHandleNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9739*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkGetAccelerationStructureHandleNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9740*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetAccelerationStructureHandleNV", "accelerationStructure", accelerationStructure);
9741*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetAccelerationStructureHandleNV", "dataSize", "pData", dataSize, &pData, true, true, "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength", "VUID-vkGetAccelerationStructureHandleNV-pData-parameter");
9742*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
9743*b7893ccfSSadaf Ebrahimi return skip;
9744*b7893ccfSSadaf Ebrahimi }
9745*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)9746*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdWriteAccelerationStructuresPropertiesNV(
9747*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9748*b7893ccfSSadaf Ebrahimi uint32_t accelerationStructureCount,
9749*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureNV* pAccelerationStructures,
9750*b7893ccfSSadaf Ebrahimi VkQueryType queryType,
9751*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
9752*b7893ccfSSadaf Ebrahimi uint32_t firstQuery) {
9753*b7893ccfSSadaf Ebrahimi bool skip = false;
9754*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCmdWriteAccelerationStructuresPropertiesNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9755*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdWriteAccelerationStructuresPropertiesNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9756*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCmdWriteAccelerationStructuresPropertiesNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9757*b7893ccfSSadaf Ebrahimi skip |= validate_handle_array("vkCmdWriteAccelerationStructuresPropertiesNV", "accelerationStructureCount", "pAccelerationStructures", accelerationStructureCount, pAccelerationStructures, true, true);
9758*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdWriteAccelerationStructuresPropertiesNV", "queryType", "VkQueryType", AllVkQueryTypeEnums, queryType, "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter");
9759*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdWriteAccelerationStructuresPropertiesNV", "queryPool", queryPool);
9760*b7893ccfSSadaf Ebrahimi return skip;
9761*b7893ccfSSadaf Ebrahimi }
9762*b7893ccfSSadaf Ebrahimi
PreCallValidateCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)9763*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCompileDeferredNV(
9764*b7893ccfSSadaf Ebrahimi VkDevice device,
9765*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
9766*b7893ccfSSadaf Ebrahimi uint32_t shader) {
9767*b7893ccfSSadaf Ebrahimi bool skip = false;
9768*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_memory_requirements_2) skip |= OutputExtensionError("vkCompileDeferredNV", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
9769*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCompileDeferredNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9770*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_ray_tracing) skip |= OutputExtensionError("vkCompileDeferredNV", VK_NV_RAY_TRACING_EXTENSION_NAME);
9771*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCompileDeferredNV", "pipeline", pipeline);
9772*b7893ccfSSadaf Ebrahimi return skip;
9773*b7893ccfSSadaf Ebrahimi }
9774*b7893ccfSSadaf Ebrahimi
9775*b7893ccfSSadaf Ebrahimi
9776*b7893ccfSSadaf Ebrahimi
9777*b7893ccfSSadaf Ebrahimi
9778*b7893ccfSSadaf Ebrahimi
9779*b7893ccfSSadaf Ebrahimi
9780*b7893ccfSSadaf Ebrahimi
9781*b7893ccfSSadaf Ebrahimi
9782*b7893ccfSSadaf Ebrahimi
PreCallValidateGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)9783*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetMemoryHostPointerPropertiesEXT(
9784*b7893ccfSSadaf Ebrahimi VkDevice device,
9785*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
9786*b7893ccfSSadaf Ebrahimi const void* pHostPointer,
9787*b7893ccfSSadaf Ebrahimi VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
9788*b7893ccfSSadaf Ebrahimi bool skip = false;
9789*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_external_memory) skip |= OutputExtensionError("vkGetMemoryHostPointerPropertiesEXT", VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
9790*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_external_memory_host) skip |= OutputExtensionError("vkGetMemoryHostPointerPropertiesEXT", VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME);
9791*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkGetMemoryHostPointerPropertiesEXT", "handleType", "VkExternalMemoryHandleTypeFlagBits", AllVkExternalMemoryHandleTypeFlagBits, handleType, kRequiredSingleBit, "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter", "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter");
9792*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetMemoryHostPointerPropertiesEXT", "pHostPointer", pHostPointer, kVUIDUndefined);
9793*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetMemoryHostPointerPropertiesEXT", "pMemoryHostPointerProperties", "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT", pMemoryHostPointerProperties, VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT, true, "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter", "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType");
9794*b7893ccfSSadaf Ebrahimi if (pMemoryHostPointerProperties != NULL)
9795*b7893ccfSSadaf Ebrahimi {
9796*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9797*b7893ccfSSadaf Ebrahimi }
9798*b7893ccfSSadaf Ebrahimi return skip;
9799*b7893ccfSSadaf Ebrahimi }
9800*b7893ccfSSadaf Ebrahimi
9801*b7893ccfSSadaf Ebrahimi
9802*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)9803*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdWriteBufferMarkerAMD(
9804*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9805*b7893ccfSSadaf Ebrahimi VkPipelineStageFlagBits pipelineStage,
9806*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
9807*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
9808*b7893ccfSSadaf Ebrahimi uint32_t marker) {
9809*b7893ccfSSadaf Ebrahimi bool skip = false;
9810*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_amd_buffer_marker) skip |= OutputExtensionError("vkCmdWriteBufferMarkerAMD", VK_AMD_BUFFER_MARKER_EXTENSION_NAME);
9811*b7893ccfSSadaf Ebrahimi skip |= validate_flags("vkCmdWriteBufferMarkerAMD", "pipelineStage", "VkPipelineStageFlagBits", AllVkPipelineStageFlagBits, pipelineStage, kRequiredSingleBit, "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter", "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter");
9812*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdWriteBufferMarkerAMD", "dstBuffer", dstBuffer);
9813*b7893ccfSSadaf Ebrahimi return skip;
9814*b7893ccfSSadaf Ebrahimi }
9815*b7893ccfSSadaf Ebrahimi
9816*b7893ccfSSadaf Ebrahimi
9817*b7893ccfSSadaf Ebrahimi
9818*b7893ccfSSadaf Ebrahimi
9819*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)9820*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceCalibrateableTimeDomainsEXT(
9821*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
9822*b7893ccfSSadaf Ebrahimi uint32_t* pTimeDomainCount,
9823*b7893ccfSSadaf Ebrahimi VkTimeDomainEXT* pTimeDomains) {
9824*b7893ccfSSadaf Ebrahimi bool skip = false;
9825*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", "pTimeDomainCount", "pTimeDomains", pTimeDomainCount, &pTimeDomains, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter");
9826*b7893ccfSSadaf Ebrahimi return skip;
9827*b7893ccfSSadaf Ebrahimi }
9828*b7893ccfSSadaf Ebrahimi
PreCallValidateGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)9829*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetCalibratedTimestampsEXT(
9830*b7893ccfSSadaf Ebrahimi VkDevice device,
9831*b7893ccfSSadaf Ebrahimi uint32_t timestampCount,
9832*b7893ccfSSadaf Ebrahimi const VkCalibratedTimestampInfoEXT* pTimestampInfos,
9833*b7893ccfSSadaf Ebrahimi uint64_t* pTimestamps,
9834*b7893ccfSSadaf Ebrahimi uint64_t* pMaxDeviation) {
9835*b7893ccfSSadaf Ebrahimi bool skip = false;
9836*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_calibrated_timestamps) skip |= OutputExtensionError("vkGetCalibratedTimestampsEXT", VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME);
9837*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetCalibratedTimestampsEXT", "timestampCount", "pTimestampInfos", "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT", timestampCount, pTimestampInfos, VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, true, true, "VUID-VkCalibratedTimestampInfoEXT-sType-sType", "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter", "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength");
9838*b7893ccfSSadaf Ebrahimi if (pTimestampInfos != NULL)
9839*b7893ccfSSadaf Ebrahimi {
9840*b7893ccfSSadaf Ebrahimi for (uint32_t timestampIndex = 0; timestampIndex < timestampCount; ++timestampIndex)
9841*b7893ccfSSadaf Ebrahimi {
9842*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetCalibratedTimestampsEXT", ParameterName("pTimestampInfos[%i].pNext", ParameterName::IndexVector{ timestampIndex }), NULL, pTimestampInfos[timestampIndex].pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext");
9843*b7893ccfSSadaf Ebrahimi
9844*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetCalibratedTimestampsEXT", ParameterName("pTimestampInfos[%i].timeDomain", ParameterName::IndexVector{ timestampIndex }), "VkTimeDomainEXT", AllVkTimeDomainEXTEnums, pTimestampInfos[timestampIndex].timeDomain, "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter");
9845*b7893ccfSSadaf Ebrahimi }
9846*b7893ccfSSadaf Ebrahimi }
9847*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetCalibratedTimestampsEXT", "timestampCount", "pTimestamps", timestampCount, &pTimestamps, true, true, "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength", "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter");
9848*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetCalibratedTimestampsEXT", "pMaxDeviation", pMaxDeviation, "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter");
9849*b7893ccfSSadaf Ebrahimi return skip;
9850*b7893ccfSSadaf Ebrahimi }
9851*b7893ccfSSadaf Ebrahimi
9852*b7893ccfSSadaf Ebrahimi
9853*b7893ccfSSadaf Ebrahimi
9854*b7893ccfSSadaf Ebrahimi
9855*b7893ccfSSadaf Ebrahimi
9856*b7893ccfSSadaf Ebrahimi
9857*b7893ccfSSadaf Ebrahimi
9858*b7893ccfSSadaf Ebrahimi
9859*b7893ccfSSadaf Ebrahimi
9860*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP
9861*b7893ccfSSadaf Ebrahimi
9862*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_GGP
9863*b7893ccfSSadaf Ebrahimi
9864*b7893ccfSSadaf Ebrahimi
9865*b7893ccfSSadaf Ebrahimi
9866*b7893ccfSSadaf Ebrahimi
9867*b7893ccfSSadaf Ebrahimi
9868*b7893ccfSSadaf Ebrahimi
9869*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)9870*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawMeshTasksNV(
9871*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9872*b7893ccfSSadaf Ebrahimi uint32_t taskCount,
9873*b7893ccfSSadaf Ebrahimi uint32_t firstTask) {
9874*b7893ccfSSadaf Ebrahimi bool skip = false;
9875*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdDrawMeshTasksNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9876*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_mesh_shader) skip |= OutputExtensionError("vkCmdDrawMeshTasksNV", VK_NV_MESH_SHADER_EXTENSION_NAME);
9877*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9878*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
9879*b7893ccfSSadaf Ebrahimi return skip;
9880*b7893ccfSSadaf Ebrahimi }
9881*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)9882*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawMeshTasksIndirectNV(
9883*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9884*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
9885*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
9886*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
9887*b7893ccfSSadaf Ebrahimi uint32_t stride) {
9888*b7893ccfSSadaf Ebrahimi bool skip = false;
9889*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdDrawMeshTasksIndirectNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9890*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_mesh_shader) skip |= OutputExtensionError("vkCmdDrawMeshTasksIndirectNV", VK_NV_MESH_SHADER_EXTENSION_NAME);
9891*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawMeshTasksIndirectNV", "buffer", buffer);
9892*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
9893*b7893ccfSSadaf Ebrahimi return skip;
9894*b7893ccfSSadaf Ebrahimi }
9895*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)9896*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdDrawMeshTasksIndirectCountNV(
9897*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9898*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
9899*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
9900*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
9901*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
9902*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
9903*b7893ccfSSadaf Ebrahimi uint32_t stride) {
9904*b7893ccfSSadaf Ebrahimi bool skip = false;
9905*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdDrawMeshTasksIndirectCountNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9906*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_mesh_shader) skip |= OutputExtensionError("vkCmdDrawMeshTasksIndirectCountNV", VK_NV_MESH_SHADER_EXTENSION_NAME);
9907*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawMeshTasksIndirectCountNV", "buffer", buffer);
9908*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkCmdDrawMeshTasksIndirectCountNV", "countBuffer", countBuffer);
9909*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
9910*b7893ccfSSadaf Ebrahimi return skip;
9911*b7893ccfSSadaf Ebrahimi }
9912*b7893ccfSSadaf Ebrahimi
9913*b7893ccfSSadaf Ebrahimi
9914*b7893ccfSSadaf Ebrahimi
9915*b7893ccfSSadaf Ebrahimi
9916*b7893ccfSSadaf Ebrahimi
9917*b7893ccfSSadaf Ebrahimi
9918*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)9919*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetExclusiveScissorNV(
9920*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9921*b7893ccfSSadaf Ebrahimi uint32_t firstExclusiveScissor,
9922*b7893ccfSSadaf Ebrahimi uint32_t exclusiveScissorCount,
9923*b7893ccfSSadaf Ebrahimi const VkRect2D* pExclusiveScissors) {
9924*b7893ccfSSadaf Ebrahimi bool skip = false;
9925*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetExclusiveScissorNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9926*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_scissor_exclusive) skip |= OutputExtensionError("vkCmdSetExclusiveScissorNV", VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME);
9927*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkCmdSetExclusiveScissorNV", "exclusiveScissorCount", "pExclusiveScissors", exclusiveScissorCount, &pExclusiveScissors, true, true, "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength", "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter");
9928*b7893ccfSSadaf Ebrahimi if (pExclusiveScissors != NULL)
9929*b7893ccfSSadaf Ebrahimi {
9930*b7893ccfSSadaf Ebrahimi for (uint32_t exclusiveScissorIndex = 0; exclusiveScissorIndex < exclusiveScissorCount; ++exclusiveScissorIndex)
9931*b7893ccfSSadaf Ebrahimi {
9932*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9933*b7893ccfSSadaf Ebrahimi
9934*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9935*b7893ccfSSadaf Ebrahimi }
9936*b7893ccfSSadaf Ebrahimi }
9937*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
9938*b7893ccfSSadaf Ebrahimi return skip;
9939*b7893ccfSSadaf Ebrahimi }
9940*b7893ccfSSadaf Ebrahimi
9941*b7893ccfSSadaf Ebrahimi
9942*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)9943*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetCheckpointNV(
9944*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
9945*b7893ccfSSadaf Ebrahimi const void* pCheckpointMarker) {
9946*b7893ccfSSadaf Ebrahimi bool skip = false;
9947*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetCheckpointNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9948*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_device_diagnostic_checkpoints) skip |= OutputExtensionError("vkCmdSetCheckpointNV", VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME);
9949*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9950*b7893ccfSSadaf Ebrahimi return skip;
9951*b7893ccfSSadaf Ebrahimi }
9952*b7893ccfSSadaf Ebrahimi
PreCallValidateGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)9953*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetQueueCheckpointDataNV(
9954*b7893ccfSSadaf Ebrahimi VkQueue queue,
9955*b7893ccfSSadaf Ebrahimi uint32_t* pCheckpointDataCount,
9956*b7893ccfSSadaf Ebrahimi VkCheckpointDataNV* pCheckpointData) {
9957*b7893ccfSSadaf Ebrahimi bool skip = false;
9958*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetQueueCheckpointDataNV", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
9959*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_nv_device_diagnostic_checkpoints) skip |= OutputExtensionError("vkGetQueueCheckpointDataNV", VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME);
9960*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetQueueCheckpointDataNV", "pCheckpointDataCount", "pCheckpointData", "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV", pCheckpointDataCount, pCheckpointData, VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, true, false, false, "VUID-VkCheckpointDataNV-sType-sType", "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter", kVUIDUndefined);
9961*b7893ccfSSadaf Ebrahimi if (pCheckpointData != NULL)
9962*b7893ccfSSadaf Ebrahimi {
9963*b7893ccfSSadaf Ebrahimi for (uint32_t pCheckpointDataIndex = 0; pCheckpointDataIndex < *pCheckpointDataCount; ++pCheckpointDataIndex)
9964*b7893ccfSSadaf Ebrahimi {
9965*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9966*b7893ccfSSadaf Ebrahimi }
9967*b7893ccfSSadaf Ebrahimi }
9968*b7893ccfSSadaf Ebrahimi return skip;
9969*b7893ccfSSadaf Ebrahimi }
9970*b7893ccfSSadaf Ebrahimi
9971*b7893ccfSSadaf Ebrahimi
9972*b7893ccfSSadaf Ebrahimi
9973*b7893ccfSSadaf Ebrahimi
9974*b7893ccfSSadaf Ebrahimi
PreCallValidateInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)9975*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateInitializePerformanceApiINTEL(
9976*b7893ccfSSadaf Ebrahimi VkDevice device,
9977*b7893ccfSSadaf Ebrahimi const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) {
9978*b7893ccfSSadaf Ebrahimi bool skip = false;
9979*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkInitializePerformanceApiINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
9980*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkInitializePerformanceApiINTEL", "pInitializeInfo", "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL", pInitializeInfo, VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL, true, "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter", "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType");
9981*b7893ccfSSadaf Ebrahimi if (pInitializeInfo != NULL)
9982*b7893ccfSSadaf Ebrahimi {
9983*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkInitializePerformanceApiINTEL", "pInitializeInfo->pNext", NULL, pInitializeInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext");
9984*b7893ccfSSadaf Ebrahimi
9985*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkInitializePerformanceApiINTEL", "pInitializeInfo->pUserData", pInitializeInfo->pUserData, kVUIDUndefined);
9986*b7893ccfSSadaf Ebrahimi }
9987*b7893ccfSSadaf Ebrahimi return skip;
9988*b7893ccfSSadaf Ebrahimi }
9989*b7893ccfSSadaf Ebrahimi
PreCallValidateUninitializePerformanceApiINTEL(VkDevice device)9990*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateUninitializePerformanceApiINTEL(
9991*b7893ccfSSadaf Ebrahimi VkDevice device) {
9992*b7893ccfSSadaf Ebrahimi bool skip = false;
9993*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkUninitializePerformanceApiINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
9994*b7893ccfSSadaf Ebrahimi // No xml-driven validation
9995*b7893ccfSSadaf Ebrahimi return skip;
9996*b7893ccfSSadaf Ebrahimi }
9997*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)9998*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetPerformanceMarkerINTEL(
9999*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
10000*b7893ccfSSadaf Ebrahimi const VkPerformanceMarkerInfoINTEL* pMarkerInfo) {
10001*b7893ccfSSadaf Ebrahimi bool skip = false;
10002*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkCmdSetPerformanceMarkerINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10003*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdSetPerformanceMarkerINTEL", "pMarkerInfo", "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL", pMarkerInfo, VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL, true, "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter", "VUID-VkPerformanceMarkerInfoINTEL-sType-sType");
10004*b7893ccfSSadaf Ebrahimi if (pMarkerInfo != NULL)
10005*b7893ccfSSadaf Ebrahimi {
10006*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdSetPerformanceMarkerINTEL", "pMarkerInfo->pNext", NULL, pMarkerInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext");
10007*b7893ccfSSadaf Ebrahimi }
10008*b7893ccfSSadaf Ebrahimi return skip;
10009*b7893ccfSSadaf Ebrahimi }
10010*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)10011*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetPerformanceStreamMarkerINTEL(
10012*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
10013*b7893ccfSSadaf Ebrahimi const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) {
10014*b7893ccfSSadaf Ebrahimi bool skip = false;
10015*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkCmdSetPerformanceStreamMarkerINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10016*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdSetPerformanceStreamMarkerINTEL", "pMarkerInfo", "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", pMarkerInfo, VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL, true, "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter", "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType");
10017*b7893ccfSSadaf Ebrahimi if (pMarkerInfo != NULL)
10018*b7893ccfSSadaf Ebrahimi {
10019*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdSetPerformanceStreamMarkerINTEL", "pMarkerInfo->pNext", NULL, pMarkerInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext");
10020*b7893ccfSSadaf Ebrahimi }
10021*b7893ccfSSadaf Ebrahimi return skip;
10022*b7893ccfSSadaf Ebrahimi }
10023*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)10024*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetPerformanceOverrideINTEL(
10025*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
10026*b7893ccfSSadaf Ebrahimi const VkPerformanceOverrideInfoINTEL* pOverrideInfo) {
10027*b7893ccfSSadaf Ebrahimi bool skip = false;
10028*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkCmdSetPerformanceOverrideINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10029*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCmdSetPerformanceOverrideINTEL", "pOverrideInfo", "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL", pOverrideInfo, VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL, true, "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter", "VUID-VkPerformanceOverrideInfoINTEL-sType-sType");
10030*b7893ccfSSadaf Ebrahimi if (pOverrideInfo != NULL)
10031*b7893ccfSSadaf Ebrahimi {
10032*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCmdSetPerformanceOverrideINTEL", "pOverrideInfo->pNext", NULL, pOverrideInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext");
10033*b7893ccfSSadaf Ebrahimi
10034*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkCmdSetPerformanceOverrideINTEL", "pOverrideInfo->type", "VkPerformanceOverrideTypeINTEL", AllVkPerformanceOverrideTypeINTELEnums, pOverrideInfo->type, "VUID-VkPerformanceOverrideInfoINTEL-type-parameter");
10035*b7893ccfSSadaf Ebrahimi
10036*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkCmdSetPerformanceOverrideINTEL", "pOverrideInfo->enable", pOverrideInfo->enable);
10037*b7893ccfSSadaf Ebrahimi }
10038*b7893ccfSSadaf Ebrahimi return skip;
10039*b7893ccfSSadaf Ebrahimi }
10040*b7893ccfSSadaf Ebrahimi
PreCallValidateAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)10041*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAcquirePerformanceConfigurationINTEL(
10042*b7893ccfSSadaf Ebrahimi VkDevice device,
10043*b7893ccfSSadaf Ebrahimi const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
10044*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL* pConfiguration) {
10045*b7893ccfSSadaf Ebrahimi bool skip = false;
10046*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkAcquirePerformanceConfigurationINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10047*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkAcquirePerformanceConfigurationINTEL", "pAcquireInfo", "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL", pAcquireInfo, VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL, true, "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter", "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType");
10048*b7893ccfSSadaf Ebrahimi if (pAcquireInfo != NULL)
10049*b7893ccfSSadaf Ebrahimi {
10050*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkAcquirePerformanceConfigurationINTEL", "pAcquireInfo->pNext", NULL, pAcquireInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext");
10051*b7893ccfSSadaf Ebrahimi
10052*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkAcquirePerformanceConfigurationINTEL", "pAcquireInfo->type", "VkPerformanceConfigurationTypeINTEL", AllVkPerformanceConfigurationTypeINTELEnums, pAcquireInfo->type, "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter");
10053*b7893ccfSSadaf Ebrahimi }
10054*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkAcquirePerformanceConfigurationINTEL", "pConfiguration", pConfiguration, "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter");
10055*b7893ccfSSadaf Ebrahimi return skip;
10056*b7893ccfSSadaf Ebrahimi }
10057*b7893ccfSSadaf Ebrahimi
PreCallValidateReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)10058*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateReleasePerformanceConfigurationINTEL(
10059*b7893ccfSSadaf Ebrahimi VkDevice device,
10060*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL configuration) {
10061*b7893ccfSSadaf Ebrahimi bool skip = false;
10062*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkReleasePerformanceConfigurationINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10063*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkReleasePerformanceConfigurationINTEL", "configuration", configuration);
10064*b7893ccfSSadaf Ebrahimi return skip;
10065*b7893ccfSSadaf Ebrahimi }
10066*b7893ccfSSadaf Ebrahimi
PreCallValidateQueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)10067*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateQueueSetPerformanceConfigurationINTEL(
10068*b7893ccfSSadaf Ebrahimi VkQueue queue,
10069*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL configuration) {
10070*b7893ccfSSadaf Ebrahimi bool skip = false;
10071*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkQueueSetPerformanceConfigurationINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10072*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkQueueSetPerformanceConfigurationINTEL", "configuration", configuration);
10073*b7893ccfSSadaf Ebrahimi return skip;
10074*b7893ccfSSadaf Ebrahimi }
10075*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)10076*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPerformanceParameterINTEL(
10077*b7893ccfSSadaf Ebrahimi VkDevice device,
10078*b7893ccfSSadaf Ebrahimi VkPerformanceParameterTypeINTEL parameter,
10079*b7893ccfSSadaf Ebrahimi VkPerformanceValueINTEL* pValue) {
10080*b7893ccfSSadaf Ebrahimi bool skip = false;
10081*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_intel_performance_query) skip |= OutputExtensionError("vkGetPerformanceParameterINTEL", VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME);
10082*b7893ccfSSadaf Ebrahimi skip |= validate_ranged_enum("vkGetPerformanceParameterINTEL", "parameter", "VkPerformanceParameterTypeINTEL", AllVkPerformanceParameterTypeINTELEnums, parameter, "VUID-vkGetPerformanceParameterINTEL-parameter-parameter");
10083*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkGetPerformanceParameterINTEL", "pValue", pValue, "VUID-vkGetPerformanceParameterINTEL-pValue-parameter");
10084*b7893ccfSSadaf Ebrahimi return skip;
10085*b7893ccfSSadaf Ebrahimi }
10086*b7893ccfSSadaf Ebrahimi
10087*b7893ccfSSadaf Ebrahimi
10088*b7893ccfSSadaf Ebrahimi
10089*b7893ccfSSadaf Ebrahimi
10090*b7893ccfSSadaf Ebrahimi
PreCallValidateSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)10091*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateSetLocalDimmingAMD(
10092*b7893ccfSSadaf Ebrahimi VkDevice device,
10093*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapChain,
10094*b7893ccfSSadaf Ebrahimi VkBool32 localDimmingEnable) {
10095*b7893ccfSSadaf Ebrahimi bool skip = false;
10096*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkSetLocalDimmingAMD", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
10097*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkSetLocalDimmingAMD", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
10098*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkSetLocalDimmingAMD", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10099*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_amd_display_native_hdr) skip |= OutputExtensionError("vkSetLocalDimmingAMD", VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME);
10100*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkSetLocalDimmingAMD", "swapChain", swapChain);
10101*b7893ccfSSadaf Ebrahimi skip |= validate_bool32("vkSetLocalDimmingAMD", "localDimmingEnable", localDimmingEnable);
10102*b7893ccfSSadaf Ebrahimi return skip;
10103*b7893ccfSSadaf Ebrahimi }
10104*b7893ccfSSadaf Ebrahimi
10105*b7893ccfSSadaf Ebrahimi
10106*b7893ccfSSadaf Ebrahimi
10107*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_FUCHSIA
10108*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateImagePipeSurfaceFUCHSIA(VkInstance instance,const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)10109*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateImagePipeSurfaceFUCHSIA(
10110*b7893ccfSSadaf Ebrahimi VkInstance instance,
10111*b7893ccfSSadaf Ebrahimi const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
10112*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
10113*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
10114*b7893ccfSSadaf Ebrahimi bool skip = false;
10115*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateImagePipeSurfaceFUCHSIA", VK_KHR_SURFACE_EXTENSION_NAME);
10116*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_fuchsia_imagepipe_surface) skip |= OutputExtensionError("vkCreateImagePipeSurfaceFUCHSIA", VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME);
10117*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateImagePipeSurfaceFUCHSIA", "pCreateInfo", "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA", pCreateInfo, VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA, true, "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter", "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType");
10118*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
10119*b7893ccfSSadaf Ebrahimi {
10120*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateImagePipeSurfaceFUCHSIA", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext");
10121*b7893ccfSSadaf Ebrahimi
10122*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateImagePipeSurfaceFUCHSIA", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask");
10123*b7893ccfSSadaf Ebrahimi }
10124*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
10125*b7893ccfSSadaf Ebrahimi {
10126*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
10127*b7893ccfSSadaf Ebrahimi
10128*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
10129*b7893ccfSSadaf Ebrahimi
10130*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
10131*b7893ccfSSadaf Ebrahimi
10132*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
10133*b7893ccfSSadaf Ebrahimi {
10134*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10135*b7893ccfSSadaf Ebrahimi
10136*b7893ccfSSadaf Ebrahimi }
10137*b7893ccfSSadaf Ebrahimi
10138*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
10139*b7893ccfSSadaf Ebrahimi {
10140*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10141*b7893ccfSSadaf Ebrahimi
10142*b7893ccfSSadaf Ebrahimi }
10143*b7893ccfSSadaf Ebrahimi }
10144*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateImagePipeSurfaceFUCHSIA", "pSurface", pSurface, "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter");
10145*b7893ccfSSadaf Ebrahimi return skip;
10146*b7893ccfSSadaf Ebrahimi }
10147*b7893ccfSSadaf Ebrahimi
10148*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_FUCHSIA
10149*b7893ccfSSadaf Ebrahimi
10150*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_METAL_EXT
10151*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateMetalSurfaceEXT(VkInstance instance,const VkMetalSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)10152*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateMetalSurfaceEXT(
10153*b7893ccfSSadaf Ebrahimi VkInstance instance,
10154*b7893ccfSSadaf Ebrahimi const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
10155*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
10156*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
10157*b7893ccfSSadaf Ebrahimi bool skip = false;
10158*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateMetalSurfaceEXT", VK_KHR_SURFACE_EXTENSION_NAME);
10159*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_metal_surface) skip |= OutputExtensionError("vkCreateMetalSurfaceEXT", VK_EXT_METAL_SURFACE_EXTENSION_NAME);
10160*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateMetalSurfaceEXT", "pCreateInfo", "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT", pCreateInfo, VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, true, "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter", "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType");
10161*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
10162*b7893ccfSSadaf Ebrahimi {
10163*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateMetalSurfaceEXT", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext");
10164*b7893ccfSSadaf Ebrahimi
10165*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateMetalSurfaceEXT", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask");
10166*b7893ccfSSadaf Ebrahimi }
10167*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
10168*b7893ccfSSadaf Ebrahimi {
10169*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
10170*b7893ccfSSadaf Ebrahimi
10171*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
10172*b7893ccfSSadaf Ebrahimi
10173*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
10174*b7893ccfSSadaf Ebrahimi
10175*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
10176*b7893ccfSSadaf Ebrahimi {
10177*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10178*b7893ccfSSadaf Ebrahimi
10179*b7893ccfSSadaf Ebrahimi }
10180*b7893ccfSSadaf Ebrahimi
10181*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
10182*b7893ccfSSadaf Ebrahimi {
10183*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10184*b7893ccfSSadaf Ebrahimi
10185*b7893ccfSSadaf Ebrahimi }
10186*b7893ccfSSadaf Ebrahimi }
10187*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateMetalSurfaceEXT", "pSurface", pSurface, "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter");
10188*b7893ccfSSadaf Ebrahimi return skip;
10189*b7893ccfSSadaf Ebrahimi }
10190*b7893ccfSSadaf Ebrahimi
10191*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_METAL_EXT
10192*b7893ccfSSadaf Ebrahimi
10193*b7893ccfSSadaf Ebrahimi
10194*b7893ccfSSadaf Ebrahimi
10195*b7893ccfSSadaf Ebrahimi
10196*b7893ccfSSadaf Ebrahimi
10197*b7893ccfSSadaf Ebrahimi
10198*b7893ccfSSadaf Ebrahimi
10199*b7893ccfSSadaf Ebrahimi
10200*b7893ccfSSadaf Ebrahimi
10201*b7893ccfSSadaf Ebrahimi
10202*b7893ccfSSadaf Ebrahimi
10203*b7893ccfSSadaf Ebrahimi
10204*b7893ccfSSadaf Ebrahimi
10205*b7893ccfSSadaf Ebrahimi
10206*b7893ccfSSadaf Ebrahimi
10207*b7893ccfSSadaf Ebrahimi
10208*b7893ccfSSadaf Ebrahimi
10209*b7893ccfSSadaf Ebrahimi
10210*b7893ccfSSadaf Ebrahimi
10211*b7893ccfSSadaf Ebrahimi
10212*b7893ccfSSadaf Ebrahimi
PreCallValidateGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfoEXT * pInfo)10213*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetBufferDeviceAddressEXT(
10214*b7893ccfSSadaf Ebrahimi VkDevice device,
10215*b7893ccfSSadaf Ebrahimi const VkBufferDeviceAddressInfoEXT* pInfo) {
10216*b7893ccfSSadaf Ebrahimi bool skip = false;
10217*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetBufferDeviceAddressEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10218*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_buffer_device_address) skip |= OutputExtensionError("vkGetBufferDeviceAddressEXT", VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
10219*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetBufferDeviceAddressEXT", "pInfo", "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT", pInfo, VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, true, "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter", "VUID-VkBufferDeviceAddressInfoEXT-sType-sType");
10220*b7893ccfSSadaf Ebrahimi if (pInfo != NULL)
10221*b7893ccfSSadaf Ebrahimi {
10222*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetBufferDeviceAddressEXT", "pInfo->pNext", NULL, pInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext");
10223*b7893ccfSSadaf Ebrahimi
10224*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetBufferDeviceAddressEXT", "pInfo->buffer", pInfo->buffer);
10225*b7893ccfSSadaf Ebrahimi }
10226*b7893ccfSSadaf Ebrahimi return skip;
10227*b7893ccfSSadaf Ebrahimi }
10228*b7893ccfSSadaf Ebrahimi
10229*b7893ccfSSadaf Ebrahimi
10230*b7893ccfSSadaf Ebrahimi
10231*b7893ccfSSadaf Ebrahimi
10232*b7893ccfSSadaf Ebrahimi
10233*b7893ccfSSadaf Ebrahimi
10234*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)10235*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceCooperativeMatrixPropertiesNV(
10236*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
10237*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
10238*b7893ccfSSadaf Ebrahimi VkCooperativeMatrixPropertiesNV* pProperties) {
10239*b7893ccfSSadaf Ebrahimi bool skip = false;
10240*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV", "pPropertyCount", "pProperties", "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV", pPropertyCount, pProperties, VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV, true, false, false, "VUID-VkCooperativeMatrixPropertiesNV-sType-sType", "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter", kVUIDUndefined);
10241*b7893ccfSSadaf Ebrahimi return skip;
10242*b7893ccfSSadaf Ebrahimi }
10243*b7893ccfSSadaf Ebrahimi
10244*b7893ccfSSadaf Ebrahimi
10245*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)10246*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
10247*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
10248*b7893ccfSSadaf Ebrahimi uint32_t* pCombinationCount,
10249*b7893ccfSSadaf Ebrahimi VkFramebufferMixedSamplesCombinationNV* pCombinations) {
10250*b7893ccfSSadaf Ebrahimi bool skip = false;
10251*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type_array("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", "pCombinationCount", "pCombinations", "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV", pCombinationCount, pCombinations, VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV, true, false, false, "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType", "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter", kVUIDUndefined);
10252*b7893ccfSSadaf Ebrahimi if (pCombinations != NULL)
10253*b7893ccfSSadaf Ebrahimi {
10254*b7893ccfSSadaf Ebrahimi for (uint32_t pCombinationIndex = 0; pCombinationIndex < *pCombinationCount; ++pCombinationIndex)
10255*b7893ccfSSadaf Ebrahimi {
10256*b7893ccfSSadaf Ebrahimi // No xml-driven validation
10257*b7893ccfSSadaf Ebrahimi }
10258*b7893ccfSSadaf Ebrahimi }
10259*b7893ccfSSadaf Ebrahimi return skip;
10260*b7893ccfSSadaf Ebrahimi }
10261*b7893ccfSSadaf Ebrahimi
10262*b7893ccfSSadaf Ebrahimi
10263*b7893ccfSSadaf Ebrahimi
10264*b7893ccfSSadaf Ebrahimi
10265*b7893ccfSSadaf Ebrahimi
10266*b7893ccfSSadaf Ebrahimi
10267*b7893ccfSSadaf Ebrahimi
10268*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
10269*b7893ccfSSadaf Ebrahimi
PreCallValidateGetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)10270*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfacePresentModes2EXT(
10271*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
10272*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
10273*b7893ccfSSadaf Ebrahimi uint32_t* pPresentModeCount,
10274*b7893ccfSSadaf Ebrahimi VkPresentModeKHR* pPresentModes) {
10275*b7893ccfSSadaf Ebrahimi bool skip = false;
10276*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkGetPhysicalDeviceSurfacePresentModes2EXT", "pSurfaceInfo", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pSurfaceInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, true, "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter", "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType");
10277*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo != NULL)
10278*b7893ccfSSadaf Ebrahimi {
10279*b7893ccfSSadaf Ebrahimi const VkStructureType allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR[] = { VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT };
10280*b7893ccfSSadaf Ebrahimi
10281*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkGetPhysicalDeviceSurfacePresentModes2EXT", "pSurfaceInfo->pNext", "VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT", pSurfaceInfo->pNext, ARRAY_SIZE(allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR), allowed_structs_VkPhysicalDeviceSurfaceInfo2KHR, GeneratedVulkanHeaderVersion, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext");
10282*b7893ccfSSadaf Ebrahimi
10283*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkGetPhysicalDeviceSurfacePresentModes2EXT", "pSurfaceInfo->surface", pSurfaceInfo->surface);
10284*b7893ccfSSadaf Ebrahimi }
10285*b7893ccfSSadaf Ebrahimi skip |= validate_array("vkGetPhysicalDeviceSurfacePresentModes2EXT", "pPresentModeCount", "pPresentModes", pPresentModeCount, &pPresentModes, true, false, false, kVUIDUndefined, "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter");
10286*b7893ccfSSadaf Ebrahimi return skip;
10287*b7893ccfSSadaf Ebrahimi }
10288*b7893ccfSSadaf Ebrahimi
PreCallValidateAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)10289*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateAcquireFullScreenExclusiveModeEXT(
10290*b7893ccfSSadaf Ebrahimi VkDevice device,
10291*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain) {
10292*b7893ccfSSadaf Ebrahimi bool skip = false;
10293*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkAcquireFullScreenExclusiveModeEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
10294*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkAcquireFullScreenExclusiveModeEXT", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
10295*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkAcquireFullScreenExclusiveModeEXT", VK_KHR_SURFACE_EXTENSION_NAME);
10296*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkAcquireFullScreenExclusiveModeEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10297*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_full_screen_exclusive) skip |= OutputExtensionError("vkAcquireFullScreenExclusiveModeEXT", VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME);
10298*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkAcquireFullScreenExclusiveModeEXT", "swapchain", swapchain);
10299*b7893ccfSSadaf Ebrahimi return skip;
10300*b7893ccfSSadaf Ebrahimi }
10301*b7893ccfSSadaf Ebrahimi
PreCallValidateReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)10302*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateReleaseFullScreenExclusiveModeEXT(
10303*b7893ccfSSadaf Ebrahimi VkDevice device,
10304*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain) {
10305*b7893ccfSSadaf Ebrahimi bool skip = false;
10306*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_swapchain) skip |= OutputExtensionError("vkReleaseFullScreenExclusiveModeEXT", VK_KHR_SWAPCHAIN_EXTENSION_NAME);
10307*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_surface_capabilities_2) skip |= OutputExtensionError("vkReleaseFullScreenExclusiveModeEXT", VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
10308*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_surface) skip |= OutputExtensionError("vkReleaseFullScreenExclusiveModeEXT", VK_KHR_SURFACE_EXTENSION_NAME);
10309*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkReleaseFullScreenExclusiveModeEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10310*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_full_screen_exclusive) skip |= OutputExtensionError("vkReleaseFullScreenExclusiveModeEXT", VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME);
10311*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkReleaseFullScreenExclusiveModeEXT", "swapchain", swapchain);
10312*b7893ccfSSadaf Ebrahimi return skip;
10313*b7893ccfSSadaf Ebrahimi }
10314*b7893ccfSSadaf Ebrahimi
10315*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
10316*b7893ccfSSadaf Ebrahimi
PreCallValidateCreateHeadlessSurfaceEXT(VkInstance instance,const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)10317*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCreateHeadlessSurfaceEXT(
10318*b7893ccfSSadaf Ebrahimi VkInstance instance,
10319*b7893ccfSSadaf Ebrahimi const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
10320*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
10321*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface) {
10322*b7893ccfSSadaf Ebrahimi bool skip = false;
10323*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_khr_surface) skip |= OutputExtensionError("vkCreateHeadlessSurfaceEXT", VK_KHR_SURFACE_EXTENSION_NAME);
10324*b7893ccfSSadaf Ebrahimi if (!instance_extensions.vk_ext_headless_surface) skip |= OutputExtensionError("vkCreateHeadlessSurfaceEXT", VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME);
10325*b7893ccfSSadaf Ebrahimi skip |= validate_struct_type("vkCreateHeadlessSurfaceEXT", "pCreateInfo", "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT", pCreateInfo, VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT, true, "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter", "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType");
10326*b7893ccfSSadaf Ebrahimi if (pCreateInfo != NULL)
10327*b7893ccfSSadaf Ebrahimi {
10328*b7893ccfSSadaf Ebrahimi skip |= validate_struct_pnext("vkCreateHeadlessSurfaceEXT", "pCreateInfo->pNext", NULL, pCreateInfo->pNext, 0, NULL, GeneratedVulkanHeaderVersion, "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext");
10329*b7893ccfSSadaf Ebrahimi
10330*b7893ccfSSadaf Ebrahimi skip |= validate_reserved_flags("vkCreateHeadlessSurfaceEXT", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask");
10331*b7893ccfSSadaf Ebrahimi }
10332*b7893ccfSSadaf Ebrahimi if (pAllocator != NULL)
10333*b7893ccfSSadaf Ebrahimi {
10334*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pAllocator->pfnAllocation", reinterpret_cast<const void*>(pAllocator->pfnAllocation), "VUID-VkAllocationCallbacks-pfnAllocation-00632");
10335*b7893ccfSSadaf Ebrahimi
10336*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pAllocator->pfnReallocation", reinterpret_cast<const void*>(pAllocator->pfnReallocation), "VUID-VkAllocationCallbacks-pfnReallocation-00633");
10337*b7893ccfSSadaf Ebrahimi
10338*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pAllocator->pfnFree", reinterpret_cast<const void*>(pAllocator->pfnFree), "VUID-VkAllocationCallbacks-pfnFree-00634");
10339*b7893ccfSSadaf Ebrahimi
10340*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalAllocation != NULL)
10341*b7893ccfSSadaf Ebrahimi {
10342*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pAllocator->pfnInternalFree", reinterpret_cast<const void*>(pAllocator->pfnInternalFree), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10343*b7893ccfSSadaf Ebrahimi
10344*b7893ccfSSadaf Ebrahimi }
10345*b7893ccfSSadaf Ebrahimi
10346*b7893ccfSSadaf Ebrahimi if (pAllocator->pfnInternalFree != NULL)
10347*b7893ccfSSadaf Ebrahimi {
10348*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pAllocator->pfnInternalAllocation", reinterpret_cast<const void*>(pAllocator->pfnInternalAllocation), "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
10349*b7893ccfSSadaf Ebrahimi
10350*b7893ccfSSadaf Ebrahimi }
10351*b7893ccfSSadaf Ebrahimi }
10352*b7893ccfSSadaf Ebrahimi skip |= validate_required_pointer("vkCreateHeadlessSurfaceEXT", "pSurface", pSurface, "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter");
10353*b7893ccfSSadaf Ebrahimi return skip;
10354*b7893ccfSSadaf Ebrahimi }
10355*b7893ccfSSadaf Ebrahimi
10356*b7893ccfSSadaf Ebrahimi
10357*b7893ccfSSadaf Ebrahimi
PreCallValidateCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)10358*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateCmdSetLineStippleEXT(
10359*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
10360*b7893ccfSSadaf Ebrahimi uint32_t lineStippleFactor,
10361*b7893ccfSSadaf Ebrahimi uint16_t lineStipplePattern) {
10362*b7893ccfSSadaf Ebrahimi bool skip = false;
10363*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkCmdSetLineStippleEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10364*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_line_rasterization) skip |= OutputExtensionError("vkCmdSetLineStippleEXT", VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME);
10365*b7893ccfSSadaf Ebrahimi // No xml-driven validation
10366*b7893ccfSSadaf Ebrahimi if (!skip) skip |= manual_PreCallValidateCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
10367*b7893ccfSSadaf Ebrahimi return skip;
10368*b7893ccfSSadaf Ebrahimi }
10369*b7893ccfSSadaf Ebrahimi
10370*b7893ccfSSadaf Ebrahimi
10371*b7893ccfSSadaf Ebrahimi
PreCallValidateResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)10372*b7893ccfSSadaf Ebrahimi bool StatelessValidation::PreCallValidateResetQueryPoolEXT(
10373*b7893ccfSSadaf Ebrahimi VkDevice device,
10374*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
10375*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
10376*b7893ccfSSadaf Ebrahimi uint32_t queryCount) {
10377*b7893ccfSSadaf Ebrahimi bool skip = false;
10378*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkResetQueryPoolEXT", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
10379*b7893ccfSSadaf Ebrahimi if (!device_extensions.vk_ext_host_query_reset) skip |= OutputExtensionError("vkResetQueryPoolEXT", VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME);
10380*b7893ccfSSadaf Ebrahimi skip |= validate_required_handle("vkResetQueryPoolEXT", "queryPool", queryPool);
10381*b7893ccfSSadaf Ebrahimi return skip;
10382*b7893ccfSSadaf Ebrahimi }
10383*b7893ccfSSadaf Ebrahimi
10384*b7893ccfSSadaf Ebrahimi
10385*b7893ccfSSadaf Ebrahimi
10386*b7893ccfSSadaf Ebrahimi
10387*b7893ccfSSadaf Ebrahimi
10388*b7893ccfSSadaf Ebrahimi
10389*b7893ccfSSadaf Ebrahimi
10390*b7893ccfSSadaf Ebrahimi
10391*b7893ccfSSadaf Ebrahimi
10392*b7893ccfSSadaf Ebrahimi
10393