From f8b0e6bf4f33cf80ccf50007fee7a345d56feeef Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 29 Jul 2015 11:23:46 -0600 Subject: layers: Fix misc bugs in param checker. Fix sType validation. Improve nullptr validation. Remove more false positives. Fix VkResult validation. --- layers/param_checker.cpp | 5089 +++++++++++++++++++++++----------------------- 1 file changed, 2490 insertions(+), 2599 deletions(-) diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 9c9ca69c..fd9b56f0 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -76,7 +76,6 @@ debug_report_data *mdd(void* object) fprintf(stderr, "MDD: map: %p, object: %p, key: %p, data: %p\n", &layer_data_map, object, key, data); #endif assert(data != NULL); - return data->report_data; } @@ -182,13 +181,23 @@ VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties( pCount, pProperties); } -// Version: 0.136.0 +// Version: 0.138.2 static std::string EnumeratorString(VkResult const& enumerator) { switch(enumerator) { + case VK_RESULT_MAX_ENUM: + { + return "VK_RESULT_MAX_ENUM"; + break; + } + case VK_ERROR_INVALID_LAYER: + { + return "VK_ERROR_INVALID_LAYER"; + break; + } case VK_ERROR_MEMORY_NOT_BOUND: { return "VK_ERROR_MEMORY_NOT_BOUND"; @@ -239,16 +248,6 @@ std::string EnumeratorString(VkResult const& enumerator) return "VK_ERROR_INVALID_FORMAT"; break; } - case VK_ERROR_INCOMPLETE_COMMAND_BUFFER: - { - return "VK_ERROR_INCOMPLETE_COMMAND_BUFFER"; - break; - } - case VK_ERROR_INVALID_ALIGNMENT: - { - return "VK_ERROR_INVALID_ALIGNMENT"; - break; - } case VK_ERROR_UNAVAILABLE: { return "VK_ERROR_UNAVAILABLE"; @@ -379,9 +378,14 @@ std::string EnumeratorString(VkResult const& enumerator) return "VK_ERROR_INVALID_MEMORY_SIZE"; break; } - case VK_ERROR_INVALID_LAYER: + case VK_ERROR_INCOMPLETE_COMMAND_BUFFER: { - return "VK_ERROR_INVALID_LAYER"; + return "VK_ERROR_INCOMPLETE_COMMAND_BUFFER"; + break; + } + case VK_ERROR_INVALID_ALIGNMENT: + { + return "VK_ERROR_INVALID_ALIGNMENT"; break; } default: @@ -393,13 +397,19 @@ std::string EnumeratorString(VkResult const& enumerator) } static -bool ValidateEnumerator(VkQueueFlagBits const& enumerator) +bool ValidateEnumerator(VkFormatFeatureFlagBits const& enumerator) { - VkQueueFlagBits allFlags = (VkQueueFlagBits)(VK_QUEUE_EXTENDED_BIT | - VK_QUEUE_DMA_BIT | - VK_QUEUE_COMPUTE_BIT | - VK_QUEUE_SPARSE_MEMMGR_BIT | - VK_QUEUE_GRAPHICS_BIT); + VkFormatFeatureFlagBits allFlags = (VkFormatFeatureFlagBits)(VK_FORMAT_FEATURE_CONVERSION_BIT | + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT | + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT | + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT | + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT | + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT); if(enumerator & (~allFlags)) { return false; @@ -409,7 +419,7 @@ bool ValidateEnumerator(VkQueueFlagBits const& enumerator) } static -std::string EnumeratorString(VkQueueFlagBits const& enumerator) +std::string EnumeratorString(VkFormatFeatureFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -417,25 +427,49 @@ std::string EnumeratorString(VkQueueFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_QUEUE_EXTENDED_BIT) + if(enumerator & VK_FORMAT_FEATURE_CONVERSION_BIT) { - strings.push_back("VK_QUEUE_EXTENDED_BIT"); + strings.push_back("VK_FORMAT_FEATURE_CONVERSION_BIT"); } - if(enumerator & VK_QUEUE_DMA_BIT) + if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) { - strings.push_back("VK_QUEUE_DMA_BIT"); + strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"); } - if(enumerator & VK_QUEUE_COMPUTE_BIT) + if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) { - strings.push_back("VK_QUEUE_COMPUTE_BIT"); + strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"); } - if(enumerator & VK_QUEUE_SPARSE_MEMMGR_BIT) + if(enumerator & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT) { - strings.push_back("VK_QUEUE_SPARSE_MEMMGR_BIT"); + strings.push_back("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"); } - if(enumerator & VK_QUEUE_GRAPHICS_BIT) + if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) { - strings.push_back("VK_QUEUE_GRAPHICS_BIT"); + strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"); + } + if(enumerator & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + { + strings.push_back("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"); } std::string enumeratorString; @@ -453,13 +487,17 @@ std::string EnumeratorString(VkQueueFlagBits const& enumerator) } static -bool ValidateEnumerator(VkMemoryPropertyFlagBits const& enumerator) +bool ValidateEnumerator(VkImageUsageFlagBits const& enumerator) { - VkMemoryPropertyFlagBits allFlags = (VkMemoryPropertyFlagBits)(VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT | - VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT | - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | - VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT | - VK_MEMORY_PROPERTY_DEVICE_ONLY); + VkImageUsageFlagBits allFlags = (VkImageUsageFlagBits)(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | + VK_IMAGE_USAGE_DEPTH_STENCIL_BIT | + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_STORAGE_BIT | + VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | + VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT | + VK_IMAGE_USAGE_GENERAL); if(enumerator & (~allFlags)) { return false; @@ -469,7 +507,7 @@ bool ValidateEnumerator(VkMemoryPropertyFlagBits const& enumerator) } static -std::string EnumeratorString(VkMemoryPropertyFlagBits const& enumerator) +std::string EnumeratorString(VkImageUsageFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -477,25 +515,41 @@ std::string EnumeratorString(VkMemoryPropertyFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT) + if(enumerator & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) { - strings.push_back("VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT"); + strings.push_back("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"); } - if(enumerator & VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT) + if(enumerator & VK_IMAGE_USAGE_DEPTH_STENCIL_BIT) { - strings.push_back("VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT"); + strings.push_back("VK_IMAGE_USAGE_DEPTH_STENCIL_BIT"); } - if(enumerator & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) + if(enumerator & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) { - strings.push_back("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"); + strings.push_back("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"); } - if(enumerator & VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT) + if(enumerator & VK_IMAGE_USAGE_STORAGE_BIT) { - strings.push_back("VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT"); + strings.push_back("VK_IMAGE_USAGE_STORAGE_BIT"); } - if(enumerator & VK_MEMORY_PROPERTY_DEVICE_ONLY) + if(enumerator & VK_IMAGE_USAGE_SAMPLED_BIT) { - strings.push_back("VK_MEMORY_PROPERTY_DEVICE_ONLY"); + strings.push_back("VK_IMAGE_USAGE_SAMPLED_BIT"); + } + if(enumerator & VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT) + { + strings.push_back("VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT"); + } + if(enumerator & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) + { + strings.push_back("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"); + } + if(enumerator & VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT) + { + strings.push_back("VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT"); + } + if(enumerator & VK_IMAGE_USAGE_GENERAL) + { + strings.push_back("VK_IMAGE_USAGE_GENERAL"); } std::string enumeratorString; @@ -513,13 +567,13 @@ std::string EnumeratorString(VkMemoryPropertyFlagBits const& enumerator) } static -bool ValidateEnumerator(VkMemoryOutputFlagBits const& enumerator) +bool ValidateEnumerator(VkQueueFlagBits const& enumerator) { - VkMemoryOutputFlagBits allFlags = (VkMemoryOutputFlagBits)(VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT | - VK_MEMORY_OUTPUT_TRANSFER_BIT | - VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT | - VK_MEMORY_OUTPUT_SHADER_WRITE_BIT | - VK_MEMORY_OUTPUT_HOST_WRITE_BIT); + VkQueueFlagBits allFlags = (VkQueueFlagBits)(VK_QUEUE_EXTENDED_BIT | + VK_QUEUE_DMA_BIT | + VK_QUEUE_COMPUTE_BIT | + VK_QUEUE_SPARSE_MEMMGR_BIT | + VK_QUEUE_GRAPHICS_BIT); if(enumerator & (~allFlags)) { return false; @@ -529,7 +583,7 @@ bool ValidateEnumerator(VkMemoryOutputFlagBits const& enumerator) } static -std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator) +std::string EnumeratorString(VkQueueFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -537,25 +591,25 @@ std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT) + if(enumerator & VK_QUEUE_EXTENDED_BIT) { - strings.push_back("VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT"); + strings.push_back("VK_QUEUE_EXTENDED_BIT"); } - if(enumerator & VK_MEMORY_OUTPUT_TRANSFER_BIT) + if(enumerator & VK_QUEUE_DMA_BIT) { - strings.push_back("VK_MEMORY_OUTPUT_TRANSFER_BIT"); + strings.push_back("VK_QUEUE_DMA_BIT"); } - if(enumerator & VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT) + if(enumerator & VK_QUEUE_COMPUTE_BIT) { - strings.push_back("VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT"); + strings.push_back("VK_QUEUE_COMPUTE_BIT"); } - if(enumerator & VK_MEMORY_OUTPUT_SHADER_WRITE_BIT) + if(enumerator & VK_QUEUE_SPARSE_MEMMGR_BIT) { - strings.push_back("VK_MEMORY_OUTPUT_SHADER_WRITE_BIT"); + strings.push_back("VK_QUEUE_SPARSE_MEMMGR_BIT"); } - if(enumerator & VK_MEMORY_OUTPUT_HOST_WRITE_BIT) + if(enumerator & VK_QUEUE_GRAPHICS_BIT) { - strings.push_back("VK_MEMORY_OUTPUT_HOST_WRITE_BIT"); + strings.push_back("VK_QUEUE_GRAPHICS_BIT"); } std::string enumeratorString; @@ -573,17 +627,14 @@ std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator) } static -bool ValidateEnumerator(VkMemoryInputFlagBits const& enumerator) +bool ValidateEnumerator(VkMemoryPropertyFlagBits const& enumerator) { - VkMemoryInputFlagBits allFlags = (VkMemoryInputFlagBits)(VK_MEMORY_INPUT_TRANSFER_BIT | - VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT | - VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT | - VK_MEMORY_INPUT_SHADER_READ_BIT | - VK_MEMORY_INPUT_UNIFORM_READ_BIT | - VK_MEMORY_INPUT_INDEX_FETCH_BIT | - VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT | - VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT | - VK_MEMORY_INPUT_HOST_READ_BIT); + VkMemoryPropertyFlagBits allFlags = (VkMemoryPropertyFlagBits)(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT | + VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT | + VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT | + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | + VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT | + VK_MEMORY_PROPERTY_DEVICE_ONLY); if(enumerator & (~allFlags)) { return false; @@ -593,7 +644,7 @@ bool ValidateEnumerator(VkMemoryInputFlagBits const& enumerator) } static -std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator) +std::string EnumeratorString(VkMemoryPropertyFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -601,41 +652,29 @@ std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_MEMORY_INPUT_TRANSFER_BIT) - { - strings.push_back("VK_MEMORY_INPUT_TRANSFER_BIT"); - } - if(enumerator & VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT) - { - strings.push_back("VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT"); - } - if(enumerator & VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT) - { - strings.push_back("VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT"); - } - if(enumerator & VK_MEMORY_INPUT_SHADER_READ_BIT) + if(enumerator & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) { - strings.push_back("VK_MEMORY_INPUT_SHADER_READ_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"); } - if(enumerator & VK_MEMORY_INPUT_UNIFORM_READ_BIT) + if(enumerator & VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT) { - strings.push_back("VK_MEMORY_INPUT_UNIFORM_READ_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT"); } - if(enumerator & VK_MEMORY_INPUT_INDEX_FETCH_BIT) + if(enumerator & VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT) { - strings.push_back("VK_MEMORY_INPUT_INDEX_FETCH_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT"); } - if(enumerator & VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT) + if(enumerator & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) { - strings.push_back("VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"); } - if(enumerator & VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT) + if(enumerator & VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT) { - strings.push_back("VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT"); } - if(enumerator & VK_MEMORY_INPUT_HOST_READ_BIT) + if(enumerator & VK_MEMORY_PROPERTY_DEVICE_ONLY) { - strings.push_back("VK_MEMORY_INPUT_HOST_READ_BIT"); + strings.push_back("VK_MEMORY_PROPERTY_DEVICE_ONLY"); } std::string enumeratorString; @@ -653,18 +692,9 @@ std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator) } static -bool ValidateEnumerator(VkBufferUsageFlagBits const& enumerator) +bool ValidateEnumerator(VkMemoryHeapFlagBits const& enumerator) { - VkBufferUsageFlagBits allFlags = (VkBufferUsageFlagBits)(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_INDEX_BUFFER_BIT | - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT | - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT | - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | - VK_BUFFER_USAGE_GENERAL); + VkMemoryHeapFlagBits allFlags = (VkMemoryHeapFlagBits)(VK_MEMORY_HEAP_HOST_LOCAL); if(enumerator & (~allFlags)) { return false; @@ -674,7 +704,7 @@ bool ValidateEnumerator(VkBufferUsageFlagBits const& enumerator) } static -std::string EnumeratorString(VkBufferUsageFlagBits const& enumerator) +std::string EnumeratorString(VkMemoryHeapFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -682,45 +712,49 @@ std::string EnumeratorString(VkBufferUsageFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_BUFFER_USAGE_VERTEX_BUFFER_BIT) + if(enumerator & VK_MEMORY_HEAP_HOST_LOCAL) { - strings.push_back("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"); + strings.push_back("VK_MEMORY_HEAP_HOST_LOCAL"); } - if(enumerator & VK_BUFFER_USAGE_INDEX_BUFFER_BIT) + + std::string enumeratorString; + for(auto const& string : strings) { - strings.push_back("VK_BUFFER_USAGE_INDEX_BUFFER_BIT"); + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } } - if(enumerator & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT) - { - strings.push_back("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"); - } - if(enumerator & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) - { - strings.push_back("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"); - } - if(enumerator & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) - { - strings.push_back("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"); - } - if(enumerator & VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT) - { - strings.push_back("VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT"); - } - if(enumerator & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) - { - strings.push_back("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"); - } - if(enumerator & VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT) + + return enumeratorString; +} + +static +bool ValidateEnumerator(VkDeviceCreateFlagBits const& enumerator) +{ + VkDeviceCreateFlagBits allFlags = (VkDeviceCreateFlagBits)(VK_DEVICE_CREATE_VALIDATION_BIT); + if(enumerator & (~allFlags)) { - strings.push_back("VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT"); + return false; } - if(enumerator & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT) + + return true; +} + +static +std::string EnumeratorString(VkDeviceCreateFlagBits const& enumerator) +{ + if(!ValidateEnumerator(enumerator)) { - strings.push_back("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"); + return "unrecognized enumerator"; } - if(enumerator & VK_BUFFER_USAGE_GENERAL) + + std::vector strings; + if(enumerator & VK_DEVICE_CREATE_VALIDATION_BIT) { - strings.push_back("VK_BUFFER_USAGE_GENERAL"); + strings.push_back("VK_DEVICE_CREATE_VALIDATION_BIT"); } std::string enumeratorString; @@ -738,11 +772,11 @@ std::string EnumeratorString(VkBufferUsageFlagBits const& enumerator) } static -bool ValidateEnumerator(VkBufferCreateFlagBits const& enumerator) +bool ValidateEnumerator(VkSparseImageFormatFlagBits const& enumerator) { - VkBufferCreateFlagBits allFlags = (VkBufferCreateFlagBits)(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT | - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | - VK_BUFFER_CREATE_SPARSE_BIT); + VkSparseImageFormatFlagBits allFlags = (VkSparseImageFormatFlagBits)(VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT | + VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT | + VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT); if(enumerator & (~allFlags)) { return false; @@ -752,7 +786,7 @@ bool ValidateEnumerator(VkBufferCreateFlagBits const& enumerator) } static -std::string EnumeratorString(VkBufferCreateFlagBits const& enumerator) +std::string EnumeratorString(VkSparseImageFormatFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -760,17 +794,17 @@ std::string EnumeratorString(VkBufferCreateFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT) + if(enumerator & VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT) { - strings.push_back("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"); + strings.push_back("VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT"); } - if(enumerator & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) + if(enumerator & VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT) { - strings.push_back("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"); + strings.push_back("VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT"); } - if(enumerator & VK_BUFFER_CREATE_SPARSE_BIT) + if(enumerator & VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT) { - strings.push_back("VK_BUFFER_CREATE_SPARSE_BIT"); + strings.push_back("VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT"); } std::string enumeratorString; @@ -788,15 +822,9 @@ std::string EnumeratorString(VkBufferCreateFlagBits const& enumerator) } static -bool ValidateEnumerator(VkShaderStageFlagBits const& enumerator) +bool ValidateEnumerator(VkSparseMemoryBindFlagBits const& enumerator) { - VkShaderStageFlagBits allFlags = (VkShaderStageFlagBits)(VK_SHADER_STAGE_ALL | - VK_SHADER_STAGE_FRAGMENT_BIT | - VK_SHADER_STAGE_GEOMETRY_BIT | - VK_SHADER_STAGE_COMPUTE_BIT | - VK_SHADER_STAGE_TESS_EVALUATION_BIT | - VK_SHADER_STAGE_TESS_CONTROL_BIT | - VK_SHADER_STAGE_VERTEX_BIT); + VkSparseMemoryBindFlagBits allFlags = (VkSparseMemoryBindFlagBits)(VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT); if(enumerator & (~allFlags)) { return false; @@ -806,7 +834,7 @@ bool ValidateEnumerator(VkShaderStageFlagBits const& enumerator) } static -std::string EnumeratorString(VkShaderStageFlagBits const& enumerator) +std::string EnumeratorString(VkSparseMemoryBindFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -814,33 +842,49 @@ std::string EnumeratorString(VkShaderStageFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_SHADER_STAGE_ALL) - { - strings.push_back("VK_SHADER_STAGE_ALL"); - } - if(enumerator & VK_SHADER_STAGE_FRAGMENT_BIT) - { - strings.push_back("VK_SHADER_STAGE_FRAGMENT_BIT"); - } - if(enumerator & VK_SHADER_STAGE_GEOMETRY_BIT) + if(enumerator & VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT) { - strings.push_back("VK_SHADER_STAGE_GEOMETRY_BIT"); + strings.push_back("VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT"); } - if(enumerator & VK_SHADER_STAGE_COMPUTE_BIT) + + std::string enumeratorString; + for(auto const& string : strings) { - strings.push_back("VK_SHADER_STAGE_COMPUTE_BIT"); + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } } - if(enumerator & VK_SHADER_STAGE_TESS_EVALUATION_BIT) + + return enumeratorString; +} + +static +bool ValidateEnumerator(VkFenceCreateFlagBits const& enumerator) +{ + VkFenceCreateFlagBits allFlags = (VkFenceCreateFlagBits)(VK_FENCE_CREATE_SIGNALED_BIT); + if(enumerator & (~allFlags)) { - strings.push_back("VK_SHADER_STAGE_TESS_EVALUATION_BIT"); + return false; } - if(enumerator & VK_SHADER_STAGE_TESS_CONTROL_BIT) + + return true; +} + +static +std::string EnumeratorString(VkFenceCreateFlagBits const& enumerator) +{ + if(!ValidateEnumerator(enumerator)) { - strings.push_back("VK_SHADER_STAGE_TESS_CONTROL_BIT"); + return "unrecognized enumerator"; } - if(enumerator & VK_SHADER_STAGE_VERTEX_BIT) + + std::vector strings; + if(enumerator & VK_FENCE_CREATE_SIGNALED_BIT) { - strings.push_back("VK_SHADER_STAGE_VERTEX_BIT"); + strings.push_back("VK_FENCE_CREATE_SIGNALED_BIT"); } std::string enumeratorString; @@ -858,16 +902,19 @@ std::string EnumeratorString(VkShaderStageFlagBits const& enumerator) } static -bool ValidateEnumerator(VkImageUsageFlagBits const& enumerator) +bool ValidateEnumerator(VkQueryPipelineStatisticFlagBits const& enumerator) { - VkImageUsageFlagBits allFlags = (VkImageUsageFlagBits)(VK_IMAGE_USAGE_DEPTH_STENCIL_BIT | - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | - VK_IMAGE_USAGE_STORAGE_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT | - VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | - VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT | - VK_IMAGE_USAGE_GENERAL); + VkQueryPipelineStatisticFlagBits allFlags = (VkQueryPipelineStatisticFlagBits)(VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT | + VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT | + VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT | + VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT | + VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT | + VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT | + VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT | + VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT | + VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT | + VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT | + VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT); if(enumerator & (~allFlags)) { return false; @@ -877,7 +924,7 @@ bool ValidateEnumerator(VkImageUsageFlagBits const& enumerator) } static -std::string EnumeratorString(VkImageUsageFlagBits const& enumerator) +std::string EnumeratorString(VkQueryPipelineStatisticFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -885,37 +932,49 @@ std::string EnumeratorString(VkImageUsageFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_IMAGE_USAGE_DEPTH_STENCIL_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT) { - strings.push_back("VK_IMAGE_USAGE_DEPTH_STENCIL_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT"); } - if(enumerator & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT) { - strings.push_back("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT"); } - if(enumerator & VK_IMAGE_USAGE_STORAGE_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT) { - strings.push_back("VK_IMAGE_USAGE_STORAGE_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT"); } - if(enumerator & VK_IMAGE_USAGE_SAMPLED_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT) { - strings.push_back("VK_IMAGE_USAGE_SAMPLED_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT"); } - if(enumerator & VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT) { - strings.push_back("VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT"); } - if(enumerator & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT) { - strings.push_back("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT"); } - if(enumerator & VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT) { - strings.push_back("VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT"); } - if(enumerator & VK_IMAGE_USAGE_GENERAL) + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT) { - strings.push_back("VK_IMAGE_USAGE_GENERAL"); + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT"); + } + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT) + { + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT"); + } + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT) + { + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT"); + } + if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT) + { + strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT"); } std::string enumeratorString; @@ -933,14 +992,13 @@ std::string EnumeratorString(VkImageUsageFlagBits const& enumerator) } static -bool ValidateEnumerator(VkImageCreateFlagBits const& enumerator) +bool ValidateEnumerator(VkQueryResultFlagBits const& enumerator) { - VkImageCreateFlagBits allFlags = (VkImageCreateFlagBits)(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT | - VK_IMAGE_CREATE_INVARIANT_DATA_BIT | - VK_IMAGE_CREATE_SPARSE_ALIASED_BIT | - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | - VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | - VK_IMAGE_CREATE_SPARSE_BIT); + VkQueryResultFlagBits allFlags = (VkQueryResultFlagBits)(VK_QUERY_RESULT_PARTIAL_BIT | + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | + VK_QUERY_RESULT_WAIT_BIT | + VK_QUERY_RESULT_64_BIT | + VK_QUERY_RESULT_DEFAULT); if(enumerator & (~allFlags)) { return false; @@ -950,7 +1008,7 @@ bool ValidateEnumerator(VkImageCreateFlagBits const& enumerator) } static -std::string EnumeratorString(VkImageCreateFlagBits const& enumerator) +std::string EnumeratorString(VkQueryResultFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -958,29 +1016,25 @@ std::string EnumeratorString(VkImageCreateFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) - { - strings.push_back("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"); - } - if(enumerator & VK_IMAGE_CREATE_INVARIANT_DATA_BIT) + if(enumerator & VK_QUERY_RESULT_PARTIAL_BIT) { - strings.push_back("VK_IMAGE_CREATE_INVARIANT_DATA_BIT"); + strings.push_back("VK_QUERY_RESULT_PARTIAL_BIT"); } - if(enumerator & VK_IMAGE_CREATE_SPARSE_ALIASED_BIT) + if(enumerator & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) { - strings.push_back("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"); + strings.push_back("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"); } - if(enumerator & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) + if(enumerator & VK_QUERY_RESULT_WAIT_BIT) { - strings.push_back("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"); + strings.push_back("VK_QUERY_RESULT_WAIT_BIT"); } - if(enumerator & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) + if(enumerator & VK_QUERY_RESULT_64_BIT) { - strings.push_back("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"); + strings.push_back("VK_QUERY_RESULT_64_BIT"); } - if(enumerator & VK_IMAGE_CREATE_SPARSE_BIT) + if(enumerator & VK_QUERY_RESULT_DEFAULT) { - strings.push_back("VK_IMAGE_CREATE_SPARSE_BIT"); + strings.push_back("VK_QUERY_RESULT_DEFAULT"); } std::string enumeratorString; @@ -998,10 +1052,18 @@ std::string EnumeratorString(VkImageCreateFlagBits const& enumerator) } static -bool ValidateEnumerator(VkAttachmentViewCreateFlagBits const& enumerator) +bool ValidateEnumerator(VkBufferUsageFlagBits const& enumerator) { - VkAttachmentViewCreateFlagBits allFlags = (VkAttachmentViewCreateFlagBits)(VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT | - VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT); + VkBufferUsageFlagBits allFlags = (VkBufferUsageFlagBits)(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_INDEX_BUFFER_BIT | + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT | + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT | + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | + VK_BUFFER_USAGE_GENERAL); if(enumerator & (~allFlags)) { return false; @@ -1011,7 +1073,7 @@ bool ValidateEnumerator(VkAttachmentViewCreateFlagBits const& enumerator) } static -std::string EnumeratorString(VkAttachmentViewCreateFlagBits const& enumerator) +std::string EnumeratorString(VkBufferUsageFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1019,13 +1081,45 @@ std::string EnumeratorString(VkAttachmentViewCreateFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT) + if(enumerator & VK_BUFFER_USAGE_VERTEX_BUFFER_BIT) { - strings.push_back("VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT"); + strings.push_back("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"); } - if(enumerator & VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT) + if(enumerator & VK_BUFFER_USAGE_INDEX_BUFFER_BIT) { - strings.push_back("VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT"); + strings.push_back("VK_BUFFER_USAGE_INDEX_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT) + { + strings.push_back("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) + { + strings.push_back("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) + { + strings.push_back("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT) + { + strings.push_back("VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) + { + strings.push_back("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT) + { + strings.push_back("VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT) + { + strings.push_back("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"); + } + if(enumerator & VK_BUFFER_USAGE_GENERAL) + { + strings.push_back("VK_BUFFER_USAGE_GENERAL"); } std::string enumeratorString; @@ -1043,10 +1137,11 @@ std::string EnumeratorString(VkAttachmentViewCreateFlagBits const& enumerator) } static -bool ValidateEnumerator(VkPipelineCreateFlagBits const& enumerator) +bool ValidateEnumerator(VkBufferCreateFlagBits const& enumerator) { - VkPipelineCreateFlagBits allFlags = (VkPipelineCreateFlagBits)(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT | - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT); + VkBufferCreateFlagBits allFlags = (VkBufferCreateFlagBits)(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT | + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | + VK_BUFFER_CREATE_SPARSE_BIT); if(enumerator & (~allFlags)) { return false; @@ -1056,7 +1151,7 @@ bool ValidateEnumerator(VkPipelineCreateFlagBits const& enumerator) } static -std::string EnumeratorString(VkPipelineCreateFlagBits const& enumerator) +std::string EnumeratorString(VkBufferCreateFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1064,13 +1159,17 @@ std::string EnumeratorString(VkPipelineCreateFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT) + if(enumerator & VK_BUFFER_CREATE_SPARSE_ALIASED_BIT) { - strings.push_back("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"); + strings.push_back("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"); } - if(enumerator & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT) + if(enumerator & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) { - strings.push_back("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"); + strings.push_back("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"); + } + if(enumerator & VK_BUFFER_CREATE_SPARSE_BIT) + { + strings.push_back("VK_BUFFER_CREATE_SPARSE_BIT"); } std::string enumeratorString; @@ -1088,12 +1187,14 @@ std::string EnumeratorString(VkPipelineCreateFlagBits const& enumerator) } static -bool ValidateEnumerator(VkChannelFlagBits const& enumerator) +bool ValidateEnumerator(VkImageCreateFlagBits const& enumerator) { - VkChannelFlagBits allFlags = (VkChannelFlagBits)(VK_CHANNEL_A_BIT | - VK_CHANNEL_B_BIT | - VK_CHANNEL_G_BIT | - VK_CHANNEL_R_BIT); + VkImageCreateFlagBits allFlags = (VkImageCreateFlagBits)(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT | + VK_IMAGE_CREATE_INVARIANT_DATA_BIT | + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT | + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | + VK_IMAGE_CREATE_SPARSE_BIT); if(enumerator & (~allFlags)) { return false; @@ -1103,7 +1204,7 @@ bool ValidateEnumerator(VkChannelFlagBits const& enumerator) } static -std::string EnumeratorString(VkChannelFlagBits const& enumerator) +std::string EnumeratorString(VkImageCreateFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1111,21 +1212,29 @@ std::string EnumeratorString(VkChannelFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_CHANNEL_A_BIT) + if(enumerator & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) { - strings.push_back("VK_CHANNEL_A_BIT"); + strings.push_back("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"); } - if(enumerator & VK_CHANNEL_B_BIT) + if(enumerator & VK_IMAGE_CREATE_INVARIANT_DATA_BIT) { - strings.push_back("VK_CHANNEL_B_BIT"); + strings.push_back("VK_IMAGE_CREATE_INVARIANT_DATA_BIT"); } - if(enumerator & VK_CHANNEL_G_BIT) + if(enumerator & VK_IMAGE_CREATE_SPARSE_ALIASED_BIT) { - strings.push_back("VK_CHANNEL_G_BIT"); + strings.push_back("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"); } - if(enumerator & VK_CHANNEL_R_BIT) + if(enumerator & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) { - strings.push_back("VK_CHANNEL_R_BIT"); + strings.push_back("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"); + } + if(enumerator & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) + { + strings.push_back("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"); + } + if(enumerator & VK_IMAGE_CREATE_SPARSE_BIT) + { + strings.push_back("VK_IMAGE_CREATE_SPARSE_BIT"); } std::string enumeratorString; @@ -1143,9 +1252,10 @@ std::string EnumeratorString(VkChannelFlagBits const& enumerator) } static -bool ValidateEnumerator(VkFenceCreateFlagBits const& enumerator) +bool ValidateEnumerator(VkAttachmentViewCreateFlagBits const& enumerator) { - VkFenceCreateFlagBits allFlags = (VkFenceCreateFlagBits)(VK_FENCE_CREATE_SIGNALED_BIT); + VkAttachmentViewCreateFlagBits allFlags = (VkAttachmentViewCreateFlagBits)(VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT | + VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT); if(enumerator & (~allFlags)) { return false; @@ -1155,7 +1265,7 @@ bool ValidateEnumerator(VkFenceCreateFlagBits const& enumerator) } static -std::string EnumeratorString(VkFenceCreateFlagBits const& enumerator) +std::string EnumeratorString(VkAttachmentViewCreateFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1163,9 +1273,13 @@ std::string EnumeratorString(VkFenceCreateFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_FENCE_CREATE_SIGNALED_BIT) + if(enumerator & VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT) { - strings.push_back("VK_FENCE_CREATE_SIGNALED_BIT"); + strings.push_back("VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT"); + } + if(enumerator & VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT) + { + strings.push_back("VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT"); } std::string enumeratorString; @@ -1183,11 +1297,12 @@ std::string EnumeratorString(VkFenceCreateFlagBits const& enumerator) } static -bool ValidateEnumerator(VkSparseImageFormatFlagBits const& enumerator) +bool ValidateEnumerator(VkChannelFlagBits const& enumerator) { - VkSparseImageFormatFlagBits allFlags = (VkSparseImageFormatFlagBits)(VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT | - VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT | - VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT); + VkChannelFlagBits allFlags = (VkChannelFlagBits)(VK_CHANNEL_A_BIT | + VK_CHANNEL_B_BIT | + VK_CHANNEL_G_BIT | + VK_CHANNEL_R_BIT); if(enumerator & (~allFlags)) { return false; @@ -1197,7 +1312,7 @@ bool ValidateEnumerator(VkSparseImageFormatFlagBits const& enumerator) } static -std::string EnumeratorString(VkSparseImageFormatFlagBits const& enumerator) +std::string EnumeratorString(VkChannelFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1205,17 +1320,21 @@ std::string EnumeratorString(VkSparseImageFormatFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT) + if(enumerator & VK_CHANNEL_A_BIT) { - strings.push_back("VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT"); + strings.push_back("VK_CHANNEL_A_BIT"); } - if(enumerator & VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT) + if(enumerator & VK_CHANNEL_B_BIT) { - strings.push_back("VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT"); + strings.push_back("VK_CHANNEL_B_BIT"); } - if(enumerator & VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT) + if(enumerator & VK_CHANNEL_G_BIT) { - strings.push_back("VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT"); + strings.push_back("VK_CHANNEL_G_BIT"); + } + if(enumerator & VK_CHANNEL_R_BIT) + { + strings.push_back("VK_CHANNEL_R_BIT"); } std::string enumeratorString; @@ -1233,9 +1352,11 @@ std::string EnumeratorString(VkSparseImageFormatFlagBits const& enumerator) } static -bool ValidateEnumerator(VkSparseMemoryBindFlagBits const& enumerator) +bool ValidateEnumerator(VkPipelineCreateFlagBits const& enumerator) { - VkSparseMemoryBindFlagBits allFlags = (VkSparseMemoryBindFlagBits)(VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT); + VkPipelineCreateFlagBits allFlags = (VkPipelineCreateFlagBits)(VK_PIPELINE_CREATE_DERIVATIVE_BIT | + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT | + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT); if(enumerator & (~allFlags)) { return false; @@ -1245,7 +1366,7 @@ bool ValidateEnumerator(VkSparseMemoryBindFlagBits const& enumerator) } static -std::string EnumeratorString(VkSparseMemoryBindFlagBits const& enumerator) +std::string EnumeratorString(VkPipelineCreateFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1253,9 +1374,17 @@ std::string EnumeratorString(VkSparseMemoryBindFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT) + if(enumerator & VK_PIPELINE_CREATE_DERIVATIVE_BIT) { - strings.push_back("VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT"); + strings.push_back("VK_PIPELINE_CREATE_DERIVATIVE_BIT"); + } + if(enumerator & VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT) + { + strings.push_back("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"); + } + if(enumerator & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT) + { + strings.push_back("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"); } std::string enumeratorString; @@ -1273,19 +1402,15 @@ std::string EnumeratorString(VkSparseMemoryBindFlagBits const& enumerator) } static -bool ValidateEnumerator(VkFormatFeatureFlagBits const& enumerator) +bool ValidateEnumerator(VkShaderStageFlagBits const& enumerator) { - VkFormatFeatureFlagBits allFlags = (VkFormatFeatureFlagBits)(VK_FORMAT_FEATURE_CONVERSION_BIT | - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT | - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT | - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT | - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT | - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT); + VkShaderStageFlagBits allFlags = (VkShaderStageFlagBits)(VK_SHADER_STAGE_ALL | + VK_SHADER_STAGE_FRAGMENT_BIT | + VK_SHADER_STAGE_GEOMETRY_BIT | + VK_SHADER_STAGE_COMPUTE_BIT | + VK_SHADER_STAGE_TESS_EVALUATION_BIT | + VK_SHADER_STAGE_TESS_CONTROL_BIT | + VK_SHADER_STAGE_VERTEX_BIT); if(enumerator & (~allFlags)) { return false; @@ -1295,7 +1420,7 @@ bool ValidateEnumerator(VkFormatFeatureFlagBits const& enumerator) } static -std::string EnumeratorString(VkFormatFeatureFlagBits const& enumerator) +std::string EnumeratorString(VkShaderStageFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1303,49 +1428,33 @@ std::string EnumeratorString(VkFormatFeatureFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_FORMAT_FEATURE_CONVERSION_BIT) - { - strings.push_back("VK_FORMAT_FEATURE_CONVERSION_BIT"); - } - if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) - { - strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"); - } - if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) - { - strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"); - } - if(enumerator & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT) - { - strings.push_back("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"); - } - if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) + if(enumerator & VK_SHADER_STAGE_ALL) { - strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"); + strings.push_back("VK_SHADER_STAGE_ALL"); } - if(enumerator & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) + if(enumerator & VK_SHADER_STAGE_FRAGMENT_BIT) { - strings.push_back("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"); + strings.push_back("VK_SHADER_STAGE_FRAGMENT_BIT"); } - if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT) + if(enumerator & VK_SHADER_STAGE_GEOMETRY_BIT) { - strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"); + strings.push_back("VK_SHADER_STAGE_GEOMETRY_BIT"); } - if(enumerator & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) + if(enumerator & VK_SHADER_STAGE_COMPUTE_BIT) { - strings.push_back("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"); + strings.push_back("VK_SHADER_STAGE_COMPUTE_BIT"); } - if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) + if(enumerator & VK_SHADER_STAGE_TESS_EVALUATION_BIT) { - strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"); + strings.push_back("VK_SHADER_STAGE_TESS_EVALUATION_BIT"); } - if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) + if(enumerator & VK_SHADER_STAGE_TESS_CONTROL_BIT) { - strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"); + strings.push_back("VK_SHADER_STAGE_TESS_CONTROL_BIT"); } - if(enumerator & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) + if(enumerator & VK_SHADER_STAGE_VERTEX_BIT) { - strings.push_back("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"); + strings.push_back("VK_SHADER_STAGE_VERTEX_BIT"); } std::string enumeratorString; @@ -1363,11 +1472,9 @@ std::string EnumeratorString(VkFormatFeatureFlagBits const& enumerator) } static -bool ValidateEnumerator(VkImageAspectFlagBits const& enumerator) +bool ValidateEnumerator(VkSubpassDescriptionFlagBits const& enumerator) { - VkImageAspectFlagBits allFlags = (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_STENCIL_BIT | - VK_IMAGE_ASPECT_DEPTH_BIT | - VK_IMAGE_ASPECT_COLOR_BIT); + VkSubpassDescriptionFlagBits allFlags = (VkSubpassDescriptionFlagBits)(VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT); if(enumerator & (~allFlags)) { return false; @@ -1377,7 +1484,7 @@ bool ValidateEnumerator(VkImageAspectFlagBits const& enumerator) } static -std::string EnumeratorString(VkImageAspectFlagBits const& enumerator) +std::string EnumeratorString(VkSubpassDescriptionFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1385,17 +1492,9 @@ std::string EnumeratorString(VkImageAspectFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_IMAGE_ASPECT_STENCIL_BIT) - { - strings.push_back("VK_IMAGE_ASPECT_STENCIL_BIT"); - } - if(enumerator & VK_IMAGE_ASPECT_DEPTH_BIT) - { - strings.push_back("VK_IMAGE_ASPECT_DEPTH_BIT"); - } - if(enumerator & VK_IMAGE_ASPECT_COLOR_BIT) + if(enumerator & VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT) { - strings.push_back("VK_IMAGE_ASPECT_COLOR_BIT"); + strings.push_back("VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT"); } std::string enumeratorString; @@ -1413,9 +1512,25 @@ std::string EnumeratorString(VkImageAspectFlagBits const& enumerator) } static -bool ValidateEnumerator(VkQueryControlFlagBits const& enumerator) -{ - VkQueryControlFlagBits allFlags = (VkQueryControlFlagBits)(VK_QUERY_CONTROL_CONSERVATIVE_BIT); +bool ValidateEnumerator(VkPipelineStageFlagBits const& enumerator) +{ + VkPipelineStageFlagBits allFlags = (VkPipelineStageFlagBits)(VK_PIPELINE_STAGE_ALL_GRAPHICS | + VK_PIPELINE_STAGE_HOST_BIT | + VK_PIPELINE_STAGE_TRANSFER_BIT | + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | + VK_PIPELINE_STAGE_ALL_GPU_COMMANDS | + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT | + VK_PIPELINE_STAGE_TRANSITION_BIT | + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | + VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT | + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT | + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | + VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT | + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT | + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT | + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); if(enumerator & (~allFlags)) { return false; @@ -1425,7 +1540,7 @@ bool ValidateEnumerator(VkQueryControlFlagBits const& enumerator) } static -std::string EnumeratorString(VkQueryControlFlagBits const& enumerator) +std::string EnumeratorString(VkPipelineStageFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1433,69 +1548,73 @@ std::string EnumeratorString(VkQueryControlFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_QUERY_CONTROL_CONSERVATIVE_BIT) + if(enumerator & VK_PIPELINE_STAGE_ALL_GRAPHICS) { - strings.push_back("VK_QUERY_CONTROL_CONSERVATIVE_BIT"); + strings.push_back("VK_PIPELINE_STAGE_ALL_GRAPHICS"); } - - std::string enumeratorString; - for(auto const& string : strings) + if(enumerator & VK_PIPELINE_STAGE_HOST_BIT) { - enumeratorString += string; - - if(string != strings.back()) - { - enumeratorString += '|'; - } + strings.push_back("VK_PIPELINE_STAGE_HOST_BIT"); } - - return enumeratorString; -} - -static -bool ValidateEnumerator(VkQueryResultFlagBits const& enumerator) -{ - VkQueryResultFlagBits allFlags = (VkQueryResultFlagBits)(VK_QUERY_RESULT_PARTIAL_BIT | - VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | - VK_QUERY_RESULT_WAIT_BIT | - VK_QUERY_RESULT_64_BIT | - VK_QUERY_RESULT_DEFAULT); - if(enumerator & (~allFlags)) + if(enumerator & VK_PIPELINE_STAGE_TRANSFER_BIT) { - return false; + strings.push_back("VK_PIPELINE_STAGE_TRANSFER_BIT"); } - - return true; -} - -static -std::string EnumeratorString(VkQueryResultFlagBits const& enumerator) -{ - if(!ValidateEnumerator(enumerator)) + if(enumerator & VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT) { - return "unrecognized enumerator"; + strings.push_back("VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"); } - - std::vector strings; - if(enumerator & VK_QUERY_RESULT_PARTIAL_BIT) + if(enumerator & VK_PIPELINE_STAGE_ALL_GPU_COMMANDS) { - strings.push_back("VK_QUERY_RESULT_PARTIAL_BIT"); + strings.push_back("VK_PIPELINE_STAGE_ALL_GPU_COMMANDS"); } - if(enumerator & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) + if(enumerator & VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT) { - strings.push_back("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"); + strings.push_back("VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"); } - if(enumerator & VK_QUERY_RESULT_WAIT_BIT) + if(enumerator & VK_PIPELINE_STAGE_TRANSITION_BIT) { - strings.push_back("VK_QUERY_RESULT_WAIT_BIT"); + strings.push_back("VK_PIPELINE_STAGE_TRANSITION_BIT"); } - if(enumerator & VK_QUERY_RESULT_64_BIT) + if(enumerator & VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT) { - strings.push_back("VK_QUERY_RESULT_64_BIT"); + strings.push_back("VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"); } - if(enumerator & VK_QUERY_RESULT_DEFAULT) + if(enumerator & VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT) { - strings.push_back("VK_QUERY_RESULT_DEFAULT"); + strings.push_back("VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_VERTEX_SHADER_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_VERTEX_INPUT_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"); + } + if(enumerator & VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT) + { + strings.push_back("VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"); } std::string enumeratorString; @@ -1513,13 +1632,13 @@ std::string EnumeratorString(VkQueryResultFlagBits const& enumerator) } static -bool ValidateEnumerator(VkCmdBufferOptimizeFlagBits const& enumerator) +bool ValidateEnumerator(VkMemoryOutputFlagBits const& enumerator) { - VkCmdBufferOptimizeFlagBits allFlags = (VkCmdBufferOptimizeFlagBits)(VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT | - VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT | - VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT | - VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT | - VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT); + VkMemoryOutputFlagBits allFlags = (VkMemoryOutputFlagBits)(VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT | + VK_MEMORY_OUTPUT_TRANSFER_BIT | + VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT | + VK_MEMORY_OUTPUT_SHADER_WRITE_BIT | + VK_MEMORY_OUTPUT_HOST_WRITE_BIT); if(enumerator & (~allFlags)) { return false; @@ -1529,7 +1648,7 @@ bool ValidateEnumerator(VkCmdBufferOptimizeFlagBits const& enumerator) } static -std::string EnumeratorString(VkCmdBufferOptimizeFlagBits const& enumerator) +std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1537,25 +1656,25 @@ std::string EnumeratorString(VkCmdBufferOptimizeFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT) + if(enumerator & VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT) { - strings.push_back("VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT"); + strings.push_back("VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT"); } - if(enumerator & VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT) + if(enumerator & VK_MEMORY_OUTPUT_TRANSFER_BIT) { - strings.push_back("VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT"); + strings.push_back("VK_MEMORY_OUTPUT_TRANSFER_BIT"); } - if(enumerator & VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT) + if(enumerator & VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT) { - strings.push_back("VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT"); + strings.push_back("VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT"); } - if(enumerator & VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT) + if(enumerator & VK_MEMORY_OUTPUT_SHADER_WRITE_BIT) { - strings.push_back("VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT"); + strings.push_back("VK_MEMORY_OUTPUT_SHADER_WRITE_BIT"); } - if(enumerator & VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT) + if(enumerator & VK_MEMORY_OUTPUT_HOST_WRITE_BIT) { - strings.push_back("VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT"); + strings.push_back("VK_MEMORY_OUTPUT_HOST_WRITE_BIT"); } std::string enumeratorString; @@ -1573,19 +1692,18 @@ std::string EnumeratorString(VkCmdBufferOptimizeFlagBits const& enumerator) } static -bool ValidateEnumerator(VkQueryPipelineStatisticFlagBits const& enumerator) +bool ValidateEnumerator(VkMemoryInputFlagBits const& enumerator) { - VkQueryPipelineStatisticFlagBits allFlags = (VkQueryPipelineStatisticFlagBits)(VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT | - VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT | - VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT | - VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT | - VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT | - VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT | - VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT | - VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT | - VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT | - VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT | - VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT); + VkMemoryInputFlagBits allFlags = (VkMemoryInputFlagBits)(VK_MEMORY_INPUT_TRANSFER_BIT | + VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT | + VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT | + VK_MEMORY_INPUT_SHADER_READ_BIT | + VK_MEMORY_INPUT_UNIFORM_READ_BIT | + VK_MEMORY_INPUT_INDEX_FETCH_BIT | + VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT | + VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT | + VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT | + VK_MEMORY_INPUT_HOST_READ_BIT); if(enumerator & (~allFlags)) { return false; @@ -1595,7 +1713,7 @@ bool ValidateEnumerator(VkQueryPipelineStatisticFlagBits const& enumerator) } static -std::string EnumeratorString(VkQueryPipelineStatisticFlagBits const& enumerator) +std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1603,49 +1721,45 @@ std::string EnumeratorString(VkQueryPipelineStatisticFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT) - { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT"); - } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT) + if(enumerator & VK_MEMORY_INPUT_TRANSFER_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT"); + strings.push_back("VK_MEMORY_INPUT_TRANSFER_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT) + if(enumerator & VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT"); + strings.push_back("VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT) + if(enumerator & VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT"); + strings.push_back("VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT) + if(enumerator & VK_MEMORY_INPUT_SHADER_READ_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT"); + strings.push_back("VK_MEMORY_INPUT_SHADER_READ_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT) + if(enumerator & VK_MEMORY_INPUT_UNIFORM_READ_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT"); + strings.push_back("VK_MEMORY_INPUT_UNIFORM_READ_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT) + if(enumerator & VK_MEMORY_INPUT_INDEX_FETCH_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT"); + strings.push_back("VK_MEMORY_INPUT_INDEX_FETCH_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT) + if(enumerator & VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT"); + strings.push_back("VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT) + if(enumerator & VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT"); + strings.push_back("VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT) + if(enumerator & VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT"); + strings.push_back("VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT"); } - if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT) + if(enumerator & VK_MEMORY_INPUT_HOST_READ_BIT) { - strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT"); + strings.push_back("VK_MEMORY_INPUT_HOST_READ_BIT"); } std::string enumeratorString; @@ -1663,9 +1777,10 @@ std::string EnumeratorString(VkQueryPipelineStatisticFlagBits const& enumerator) } static -bool ValidateEnumerator(VkMemoryHeapFlagBits const& enumerator) +bool ValidateEnumerator(VkCmdPoolCreateFlagBits const& enumerator) { - VkMemoryHeapFlagBits allFlags = (VkMemoryHeapFlagBits)(VK_MEMORY_HEAP_HOST_LOCAL); + VkCmdPoolCreateFlagBits allFlags = (VkCmdPoolCreateFlagBits)(VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT | + VK_CMD_POOL_CREATE_TRANSIENT_BIT); if(enumerator & (~allFlags)) { return false; @@ -1675,7 +1790,7 @@ bool ValidateEnumerator(VkMemoryHeapFlagBits const& enumerator) } static -std::string EnumeratorString(VkMemoryHeapFlagBits const& enumerator) +std::string EnumeratorString(VkCmdPoolCreateFlagBits const& enumerator) { if(!ValidateEnumerator(enumerator)) { @@ -1683,9 +1798,13 @@ std::string EnumeratorString(VkMemoryHeapFlagBits const& enumerator) } std::vector strings; - if(enumerator & VK_MEMORY_HEAP_HOST_LOCAL) + if(enumerator & VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT) { - strings.push_back("VK_MEMORY_HEAP_HOST_LOCAL"); + strings.push_back("VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"); + } + if(enumerator & VK_CMD_POOL_CREATE_TRANSIENT_BIT) + { + strings.push_back("VK_CMD_POOL_CREATE_TRANSIENT_BIT"); } std::string enumeratorString; @@ -1702,160 +1821,371 @@ std::string EnumeratorString(VkMemoryHeapFlagBits const& enumerator) return enumeratorString; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateInstance( - const VkInstanceCreateInfo* pCreateInfo, - VkInstance* pInstance) -{ - VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, *pInstance); - VkResult result = pTable->CreateInstance(pCreateInfo, pInstance); - - if (result == VK_SUCCESS) { - layer_data *data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); - data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->extensionCount, - pCreateInfo->ppEnabledExtensionNames); - - InitParamChecker(data); - } - - return result; -} - -VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance( - VkInstance instance) +static +bool ValidateEnumerator(VkCmdPoolResetFlagBits const& enumerator) { - // Grab the key before the instance is destroyed. - dispatch_key key = get_dispatch_key(instance); - VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance); - VkResult result = pTable->DestroyInstance(instance); - - // Clean up logging callback, if any - layer_data *data = get_my_data_ptr(key, layer_data_map); - if(data->logging_callback) + VkCmdPoolResetFlagBits allFlags = (VkCmdPoolResetFlagBits)(VK_CMD_POOL_RESET_RELEASE_RESOURCES); + if(enumerator & (~allFlags)) { - layer_destroy_msg_callback(data->report_data, data->logging_callback); + return false; } - layer_debug_report_destroy_instance(mid(instance)); - layer_data_map.erase(pTable); - - pc_instance_table_map.erase(key); - assert(pc_instance_table_map.size() == 0 && "Should not have any instance mappings hanging around"); - - return result; + return true; } -bool PostEnumeratePhysicalDevices( - VkInstance instance, - uint32_t* pPhysicalDeviceCount, - VkPhysicalDevice* pPhysicalDevices, - VkResult result) +static +std::string EnumeratorString(VkCmdPoolResetFlagBits const& enumerator) { - - if(pPhysicalDeviceCount == nullptr) + if(!ValidateEnumerator(enumerator)) { - log_msg(mid(instance), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkEnumeratePhysicalDevices parameter, uint32_t* pPhysicalDeviceCount, is null pointer"); - return false; + return "unrecognized enumerator"; } - if(pPhysicalDevices == nullptr) + std::vector strings; + if(enumerator & VK_CMD_POOL_RESET_RELEASE_RESOURCES) { - log_msg(mid(instance), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkEnumeratePhysicalDevices parameter, VkPhysicalDevice* pPhysicalDevices, is null pointer"); - return false; + strings.push_back("VK_CMD_POOL_RESET_RELEASE_RESOURCES"); } - if(result != VK_SUCCESS) + std::string enumeratorString; + for(auto const& string : strings) { - std::string reason = "vkEnumeratePhysicalDevices parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mid(instance), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } - - return true; -} - -VK_LAYER_EXPORT VkResult VKAPI vkEnumeratePhysicalDevices( - VkInstance instance, - uint32_t* pPhysicalDeviceCount, - VkPhysicalDevice* pPhysicalDevices) -{ - VkResult result = get_dispatch_table(pc_instance_table_map, instance)->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices); + enumeratorString += string; - PostEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, result); + if(string != strings.back()) + { + enumeratorString += '|'; + } + } - return result; + return enumeratorString; } -bool PostGetPhysicalDeviceFeatures( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures* pFeatures, - VkResult result) +static +bool ValidateEnumerator(VkCmdBufferOptimizeFlagBits const& enumerator) { - - if(pFeatures == nullptr) - { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceFeatures parameter, VkPhysicalDeviceFeatures* pFeatures, is null pointer"); - return false; - } - - if(result != VK_SUCCESS) + VkCmdBufferOptimizeFlagBits allFlags = (VkCmdBufferOptimizeFlagBits)(VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT | + VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT | + VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT | + VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT | + VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT); + if(enumerator & (~allFlags)) { - std::string reason = "vkGetPhysicalDeviceFeatures parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } return true; } -VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures* pFeatures) +static +std::string EnumeratorString(VkCmdBufferOptimizeFlagBits const& enumerator) { - VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFeatures(physicalDevice, pFeatures); + if(!ValidateEnumerator(enumerator)) + { + return "unrecognized enumerator"; + } - PostGetPhysicalDeviceFeatures(physicalDevice, pFeatures, result); + std::vector strings; + if(enumerator & VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT) + { + strings.push_back("VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT"); + } + if(enumerator & VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT) + { + strings.push_back("VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT"); + } + if(enumerator & VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT) + { + strings.push_back("VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT"); + } + if(enumerator & VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT) + { + strings.push_back("VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT"); + } + if(enumerator & VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT) + { + strings.push_back("VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT"); + } + + std::string enumeratorString; + for(auto const& string : strings) + { + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } + } + + return enumeratorString; +} + +static +bool ValidateEnumerator(VkCmdBufferResetFlagBits const& enumerator) +{ + VkCmdBufferResetFlagBits allFlags = (VkCmdBufferResetFlagBits)(VK_CMD_BUFFER_RESET_RELEASE_RESOURCES); + if(enumerator & (~allFlags)) + { + return false; + } + + return true; +} + +static +std::string EnumeratorString(VkCmdBufferResetFlagBits const& enumerator) +{ + if(!ValidateEnumerator(enumerator)) + { + return "unrecognized enumerator"; + } + + std::vector strings; + if(enumerator & VK_CMD_BUFFER_RESET_RELEASE_RESOURCES) + { + strings.push_back("VK_CMD_BUFFER_RESET_RELEASE_RESOURCES"); + } + + std::string enumeratorString; + for(auto const& string : strings) + { + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } + } + + return enumeratorString; +} + +static +bool ValidateEnumerator(VkImageAspectFlagBits const& enumerator) +{ + VkImageAspectFlagBits allFlags = (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_METADATA_BIT | + VK_IMAGE_ASPECT_STENCIL_BIT | + VK_IMAGE_ASPECT_DEPTH_BIT | + VK_IMAGE_ASPECT_COLOR_BIT); + if(enumerator & (~allFlags)) + { + return false; + } + + return true; +} + +static +std::string EnumeratorString(VkImageAspectFlagBits const& enumerator) +{ + if(!ValidateEnumerator(enumerator)) + { + return "unrecognized enumerator"; + } + + std::vector strings; + if(enumerator & VK_IMAGE_ASPECT_METADATA_BIT) + { + strings.push_back("VK_IMAGE_ASPECT_METADATA_BIT"); + } + if(enumerator & VK_IMAGE_ASPECT_STENCIL_BIT) + { + strings.push_back("VK_IMAGE_ASPECT_STENCIL_BIT"); + } + if(enumerator & VK_IMAGE_ASPECT_DEPTH_BIT) + { + strings.push_back("VK_IMAGE_ASPECT_DEPTH_BIT"); + } + if(enumerator & VK_IMAGE_ASPECT_COLOR_BIT) + { + strings.push_back("VK_IMAGE_ASPECT_COLOR_BIT"); + } + + std::string enumeratorString; + for(auto const& string : strings) + { + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } + } + + return enumeratorString; +} + +static +bool ValidateEnumerator(VkQueryControlFlagBits const& enumerator) +{ + VkQueryControlFlagBits allFlags = (VkQueryControlFlagBits)(VK_QUERY_CONTROL_CONSERVATIVE_BIT); + if(enumerator & (~allFlags)) + { + return false; + } + + return true; +} + +static +std::string EnumeratorString(VkQueryControlFlagBits const& enumerator) +{ + if(!ValidateEnumerator(enumerator)) + { + return "unrecognized enumerator"; + } + + std::vector strings; + if(enumerator & VK_QUERY_CONTROL_CONSERVATIVE_BIT) + { + strings.push_back("VK_QUERY_CONTROL_CONSERVATIVE_BIT"); + } + + std::string enumeratorString; + for(auto const& string : strings) + { + enumeratorString += string; + + if(string != strings.back()) + { + enumeratorString += '|'; + } + } + + return enumeratorString; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateInstance( + const VkInstanceCreateInfo* pCreateInfo, + VkInstance* pInstance) +{ + VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, *pInstance); + VkResult result = pTable->CreateInstance(pCreateInfo, pInstance); + + if (result == VK_SUCCESS) { + layer_data *data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); + data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->extensionCount, + pCreateInfo->ppEnabledExtensionNames); + + InitParamChecker(data); + } + + return result; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance( + VkInstance instance) +{ + // Grab the key before the instance is destroyed. + dispatch_key key = get_dispatch_key(instance); + VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance); + VkResult result = pTable->DestroyInstance(instance); + + // Clean up logging callback, if any + layer_data *data = get_my_data_ptr(key, layer_data_map); + if(data->logging_callback) + { + layer_destroy_msg_callback(data->report_data, data->logging_callback); + } + + layer_debug_report_destroy_instance(mid(instance)); + layer_data_map.erase(pTable); + + pc_instance_table_map.erase(key); + assert(pc_instance_table_map.size() == 0 && "Should not have any instance mappings hanging around"); return result; } -bool PostGetPhysicalDeviceFormatProperties( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties* pFormatInfo, +bool PostEnumeratePhysicalDevices( + VkInstance instance, + uint32_t* pPhysicalDeviceCount, + VkPhysicalDevice* pPhysicalDevices, VkResult result) { - if(format < VK_FORMAT_BEGIN_RANGE || - format > VK_FORMAT_END_RANGE) + if(pPhysicalDeviceCount != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceFormatProperties parameter, VkFormat format, is unrecognized enumerator"); - return false; } - if(pFormatInfo == nullptr) + if(pPhysicalDevices != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceFormatProperties parameter, VkFormatProperties* pFormatInfo, is null pointer"); + } + + if(result < VK_SUCCESS) + { + std::string reason = "vkEnumeratePhysicalDevices parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mid(instance), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures)) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkEnumeratePhysicalDevices( + VkInstance instance, + uint32_t* pPhysicalDeviceCount, + VkPhysicalDevice* pPhysicalDevices) +{ + VkResult result = get_dispatch_table(pc_instance_table_map, instance)->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices); + + PostEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, result); + + return result; +} + +bool PostGetPhysicalDeviceFeatures( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures* pFeatures, + VkResult result) +{ + + if(pFeatures != nullptr) + { + } + + if(result < VK_SUCCESS) { - std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkFormatFeatureFlags pFormatInfo->linearTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures); + std::string reason = "vkGetPhysicalDeviceFeatures parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures)) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures* pFeatures) +{ + VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFeatures(physicalDevice, pFeatures); + + PostGetPhysicalDeviceFeatures(physicalDevice, pFeatures, result); + + return result; +} + +bool PostGetPhysicalDeviceFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties* pFormatProperties, + VkResult result) +{ + + if(format < VK_FORMAT_BEGIN_RANGE || + format > VK_FORMAT_END_RANGE) { - std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkFormatFeatureFlags pFormatInfo->optimalTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures); - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkGetPhysicalDeviceFormatProperties parameter, VkFormat format, is an unrecognized enumerator"); return false; } - if(result != VK_SUCCESS) + if(pFormatProperties != nullptr) + { + } + + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -1868,31 +2198,57 @@ bool PostGetPhysicalDeviceFormatProperties( VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, - VkFormatProperties* pFormatInfo) + VkFormatProperties* pFormatProperties) { - VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatInfo); + VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties); - PostGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatInfo, result); + PostGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, result); return result; } -bool PostGetPhysicalDeviceLimits( +bool PostGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, - VkPhysicalDeviceLimits* pLimits, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageFormatProperties* pImageFormatProperties, VkResult result) { - if(pLimits == nullptr) + if(format < VK_FORMAT_BEGIN_RANGE || + format > VK_FORMAT_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceLimits parameter, VkPhysicalDeviceLimits* pLimits, is null pointer"); + "vkGetPhysicalDeviceImageFormatProperties parameter, VkFormat format, is an unrecognized enumerator"); return false; } - if(result != VK_SUCCESS) + if(type < VK_IMAGE_TYPE_BEGIN_RANGE || + type > VK_IMAGE_TYPE_END_RANGE) { - std::string reason = "vkGetPhysicalDeviceLimits parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkGetPhysicalDeviceImageFormatProperties parameter, VkImageType type, is an unrecognized enumerator"); + return false; + } + + if(tiling < VK_IMAGE_TILING_BEGIN_RANGE || + tiling > VK_IMAGE_TILING_END_RANGE) + { + log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkGetPhysicalDeviceImageFormatProperties parameter, VkImageTiling tiling, is an unrecognized enumerator"); + return false; + } + + + if(pImageFormatProperties != nullptr) + { + } + + if(result < VK_SUCCESS) + { + std::string reason = "vkGetPhysicalDeviceImageFormatProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -1900,47 +2256,48 @@ bool PostGetPhysicalDeviceLimits( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits( +VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, - VkPhysicalDeviceLimits* pLimits) + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageFormatProperties* pImageFormatProperties) { - VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceLimits(physicalDevice, pLimits); + VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, pImageFormatProperties); - PostGetPhysicalDeviceLimits(physicalDevice, pLimits, result); + PostGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, pImageFormatProperties, result); return result; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice( +bool PostGetPhysicalDeviceLimits( VkPhysicalDevice physicalDevice, - const VkDeviceCreateInfo* pCreateInfo, - VkDevice* pDevice) + VkPhysicalDeviceLimits* pLimits, + VkResult result) { - VkLayerDispatchTable *pTable = get_dispatch_table(pc_device_table_map, *pDevice); - VkResult result = pTable->CreateDevice(physicalDevice, pCreateInfo, pDevice); - if(result == VK_SUCCESS) + + if(pLimits != nullptr) { - layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); - layer_data *device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map); - device_data->report_data = layer_debug_report_create_device(instance_data->report_data, *pDevice); } - return result; + if(result < VK_SUCCESS) + { + std::string reason = "vkGetPhysicalDeviceLimits parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; + } + + return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice( - VkDevice device) +VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceLimits* pLimits) { - layer_debug_report_destroy_device(device); - - dispatch_key key = get_dispatch_key(device); -#if DISPATCH_MAP_DEBUG - fprintf(stderr, "Device: %p, key: %p\n", device, key); -#endif + VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceLimits(physicalDevice, pLimits); - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDevice(device); - pc_device_table_map.erase(key); - assert(pc_device_table_map.size() == 0 && "Should not have any instance mappings hanging around"); + PostGetPhysicalDeviceLimits(physicalDevice, pLimits, result); return result; } @@ -1951,21 +2308,18 @@ bool PostGetPhysicalDeviceProperties( VkResult result) { - if(pProperties == nullptr) + if(pProperties != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceProperties parameter, VkPhysicalDeviceProperties* pProperties, is null pointer"); - return false; - } if(pProperties->deviceType < VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE || pProperties->deviceType > VK_PHYSICAL_DEVICE_TYPE_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceProperties parameter, VkPhysicalDeviceType pProperties->deviceType, is unrecognized enumerator"); + "vkGetPhysicalDeviceProperties parameter, VkPhysicalDeviceType pProperties->deviceType, is an unrecognized enumerator"); return false; } + } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -1992,14 +2346,11 @@ bool PostGetPhysicalDeviceQueueCount( VkResult result) { - if(pCount == nullptr) + if(pCount != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceQueueCount parameter, uint32_t* pCount, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceQueueCount parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2028,20 +2379,11 @@ bool PostGetPhysicalDeviceQueueProperties( { - if(pQueueProperties == nullptr) - { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceQueueProperties parameter, VkPhysicalDeviceQueueProperties* pQueueProperties, is null pointer"); - return false; - } - if(!ValidateEnumerator((VkQueueFlagBits)pQueueProperties->queueFlags)) + if(pQueueProperties != nullptr) { - std::string reason = "vkGetPhysicalDeviceQueueProperties parameter, VkQueueFlags pQueueProperties->queueFlags, is " + EnumeratorString((VkQueueFlagBits)pQueueProperties->queueFlags); - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceQueueProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2065,18 +2407,15 @@ VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueProperties( bool PostGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties* pMemoryProperies, + VkPhysicalDeviceMemoryProperties* pMemoryProperties, VkResult result) { - if(pMemoryProperies == nullptr) + if(pMemoryProperties != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceMemoryProperties parameter, VkPhysicalDeviceMemoryProperties* pMemoryProperies, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceMemoryProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2088,18 +2427,52 @@ bool PostGetPhysicalDeviceMemoryProperties( VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties* pMemoryProperies) + VkPhysicalDeviceMemoryProperties* pMemoryProperties) +{ + VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties); + + PostGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, result); + + return result; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice( + VkPhysicalDevice physicalDevice, + const VkDeviceCreateInfo* pCreateInfo, + VkDevice* pDevice) +{ + VkLayerDispatchTable *pTable = get_dispatch_table(pc_device_table_map, *pDevice); + VkResult result = pTable->CreateDevice(physicalDevice, pCreateInfo, pDevice); + if(result == VK_SUCCESS) + { + layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); + layer_data *device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map); + device_data->report_data = layer_debug_report_create_device(instance_data->report_data, *pDevice); + } + + return result; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice( + VkDevice device) { - VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperies); + layer_debug_report_destroy_device(device); + + dispatch_key key = get_dispatch_key(device); +#if DISPATCH_MAP_DEBUG + fprintf(stderr, "Device: %p, key: %p\n", device, key); +#endif - PostGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperies, result); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDevice(device); + pc_device_table_map.erase(key); + assert(pc_device_table_map.size() == 0 && "Should not have any instance mappings hanging around"); return result; } bool PostGetDeviceQueue( VkDevice device, - uint32_t queueNodeIndex, + uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue, VkResult result) @@ -2107,14 +2480,11 @@ bool PostGetDeviceQueue( - if(pQueue == nullptr) + if(pQueue != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetDeviceQueue parameter, VkQueue* pQueue, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetDeviceQueue parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2126,13 +2496,13 @@ bool PostGetDeviceQueue( VK_LAYER_EXPORT VkResult VKAPI vkGetDeviceQueue( VkDevice device, - uint32_t queueNodeIndex, + uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue); + VkResult result = get_dispatch_table(pc_device_table_map, device)->GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue); - PostGetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue, result); + PostGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, result); return result; } @@ -2141,11 +2511,8 @@ bool PreQueueSubmit( VkQueue queue, const VkCmdBuffer* pCmdBuffers) { - if(pCmdBuffers == nullptr) + if(pCmdBuffers != nullptr) { - log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkQueueSubmit parameter, const VkCmdBuffer* pCmdBuffers, is null pointer"); - return false; } return true; @@ -2160,7 +2527,7 @@ bool PostQueueSubmit( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueSubmit parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2190,7 +2557,7 @@ bool PostQueueWaitIdle( VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueWaitIdle parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2215,7 +2582,7 @@ bool PostDeviceWaitIdle( VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDeviceWaitIdle parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2239,19 +2606,15 @@ bool PreAllocMemory( VkDevice device, const VkMemoryAllocInfo* pAllocInfo) { - if(pAllocInfo == nullptr) + if(pAllocInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocMemory parameter, const VkMemoryAllocInfo* pAllocInfo, is null pointer"); - return false; - } - if(pAllocInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pAllocInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pAllocInfo->sType != VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocMemory parameter, VkStructureType pAllocInfo->sType, is unrecognized enumerator"); + "vkAllocMemory parameter, VkStructureType pAllocInfo->sType, is an invalid enumerator"); return false; } + } return true; } @@ -2262,14 +2625,11 @@ bool PostAllocMemory( VkResult result) { - if(pMem == nullptr) + if(pMem != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocMemory parameter, VkDeviceMemory* pMem, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkAllocMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2300,7 +2660,7 @@ bool PostFreeMemory( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkFreeMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2335,14 +2695,11 @@ bool PostMapMemory( - if(ppData == nullptr) + if(ppData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkMapMemory parameter, void** ppData, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkMapMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2374,7 +2731,7 @@ bool PostUnmapMemory( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkUnmapMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2399,19 +2756,15 @@ bool PreFlushMappedMemoryRanges( VkDevice device, const VkMappedMemoryRange* pMemRanges) { - if(pMemRanges == nullptr) + if(pMemRanges != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkFlushMappedMemoryRanges parameter, const VkMappedMemoryRange* pMemRanges, is null pointer"); - return false; - } - if(pMemRanges->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pMemRanges->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pMemRanges->sType != VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkFlushMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is unrecognized enumerator"); + "vkFlushMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is an invalid enumerator"); return false; } + } return true; } @@ -2423,7 +2776,7 @@ bool PostFlushMappedMemoryRanges( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkFlushMappedMemoryRanges parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2451,19 +2804,15 @@ bool PreInvalidateMappedMemoryRanges( VkDevice device, const VkMappedMemoryRange* pMemRanges) { - if(pMemRanges == nullptr) + if(pMemRanges != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkInvalidateMappedMemoryRanges parameter, const VkMappedMemoryRange* pMemRanges, is null pointer"); - return false; - } - if(pMemRanges->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pMemRanges->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pMemRanges->sType != VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkInvalidateMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is unrecognized enumerator"); + "vkInvalidateMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is an invalid enumerator"); return false; } + } return true; } @@ -2475,7 +2824,7 @@ bool PostInvalidateMappedMemoryRanges( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkInvalidateMappedMemoryRanges parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2499,13 +2848,37 @@ VK_LAYER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges( return result; } +bool PostGetDeviceMemoryCommitment( + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize* pCommittedMemoryInBytes, + VkResult result) +{ + + + if(pCommittedMemoryInBytes != nullptr) + { + } + + if(result < VK_SUCCESS) + { + std::string reason = "vkGetDeviceMemoryCommitment parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; + } + + return true; +} + VK_LAYER_EXPORT VkResult VKAPI vkGetDeviceMemoryCommitment( - VkDevice device, - VkDeviceMemory memory, - VkDeviceSize* pCommittedMemoryInBytes) + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize* pCommittedMemoryInBytes) { VkResult result = get_dispatch_table(pc_device_table_map, device)->GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes); + PostGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, result); + return result; } @@ -2520,7 +2893,7 @@ bool PostBindBufferMemory( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkBindBufferMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2554,7 +2927,7 @@ bool PostBindImageMemory( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkBindImageMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2585,14 +2958,11 @@ bool PostGetBufferMemoryRequirements( { - if(pMemoryRequirements == nullptr) + if(pMemoryRequirements != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetBufferMemoryRequirements parameter, VkMemoryRequirements* pMemoryRequirements, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetBufferMemoryRequirements parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2622,14 +2992,11 @@ bool PostGetImageMemoryRequirements( { - if(pMemoryRequirements == nullptr) + if(pMemoryRequirements != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageMemoryRequirements parameter, VkMemoryRequirements* pMemoryRequirements, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetImageMemoryRequirements parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2660,34 +3027,22 @@ bool PostGetImageSparseMemoryRequirements( { - if(pNumRequirements == nullptr) + if(pNumRequirements != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSparseMemoryRequirements parameter, uint32_t* pNumRequirements, is null pointer"); - return false; } - if(pSparseMemoryRequirements == nullptr) + if(pSparseMemoryRequirements != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSparseMemoryRequirements parameter, VkSparseImageMemoryRequirements* pSparseMemoryRequirements, is null pointer"); - return false; - } if(pSparseMemoryRequirements->formatProps.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pSparseMemoryRequirements->formatProps.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProps.aspect, is unrecognized enumerator"); + "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProps.aspect, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkSparseImageFormatFlagBits)pSparseMemoryRequirements->formatProps.flags)) - { - std::string reason = "vkGetImageSparseMemoryRequirements parameter, VkSparseImageFormatFlags pSparseMemoryRequirements->formatProps.flags, is " + EnumeratorString((VkSparseImageFormatFlagBits)pSparseMemoryRequirements->formatProps.flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetImageSparseMemoryRequirements parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2726,7 +3081,7 @@ bool PostGetPhysicalDeviceSparseImageFormatProperties( format > VK_FORMAT_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkFormat format, is unrecognized enumerator"); + "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkFormat format, is an unrecognized enumerator"); return false; } @@ -2734,54 +3089,36 @@ bool PostGetPhysicalDeviceSparseImageFormatProperties( type > VK_IMAGE_TYPE_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageType type, is unrecognized enumerator"); + "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageType type, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkImageUsageFlagBits)usage)) - { - std::string reason = "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageUsageFlags usage, is " + EnumeratorString((VkImageUsageFlagBits)usage); - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } if(tiling < VK_IMAGE_TILING_BEGIN_RANGE || tiling > VK_IMAGE_TILING_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageTiling tiling, is unrecognized enumerator"); + "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageTiling tiling, is an unrecognized enumerator"); return false; } - if(pNumProperties == nullptr) + if(pNumProperties != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, uint32_t* pNumProperties, is null pointer"); - return false; } - if(pProperties == nullptr) + if(pProperties != nullptr) { - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkSparseImageFormatProperties* pProperties, is null pointer"); - return false; - } if(pProperties->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pProperties->aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageAspect pProperties->aspect, is unrecognized enumerator"); + "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageAspect pProperties->aspect, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkSparseImageFormatFlagBits)pProperties->flags)) - { - std::string reason = "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkSparseImageFormatFlags pProperties->flags, is " + EnumeratorString((VkSparseImageFormatFlagBits)pProperties->flags); - log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2812,11 +3149,8 @@ bool PreQueueBindSparseBufferMemory( VkQueue queue, const VkSparseMemoryBindInfo* pBindInfo) { - if(pBindInfo == nullptr) + if(pBindInfo != nullptr) { - log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkQueueBindSparseBufferMemory parameter, const VkSparseMemoryBindInfo* pBindInfo, is null pointer"); - return false; } return true; @@ -2831,7 +3165,7 @@ bool PostQueueBindSparseBufferMemory( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueBindSparseBufferMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2860,11 +3194,8 @@ bool PreQueueBindSparseImageOpaqueMemory( VkQueue queue, const VkSparseMemoryBindInfo* pBindInfo) { - if(pBindInfo == nullptr) + if(pBindInfo != nullptr) { - log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkQueueBindSparseImageOpaqueMemory parameter, const VkSparseMemoryBindInfo* pBindInfo, is null pointer"); - return false; } return true; @@ -2879,7 +3210,7 @@ bool PostQueueBindSparseImageOpaqueMemory( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueBindSparseImageOpaqueMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2908,24 +3239,15 @@ bool PreQueueBindSparseImageMemory( VkQueue queue, const VkSparseImageMemoryBindInfo* pBindInfo) { - if(pBindInfo == nullptr) + if(pBindInfo != nullptr) { - log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkQueueBindSparseImageMemory parameter, const VkSparseImageMemoryBindInfo* pBindInfo, is null pointer"); - return false; - } if(pBindInfo->subresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pBindInfo->subresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkQueueBindSparseImageMemory parameter, VkImageAspect pBindInfo->subresource.aspect, is unrecognized enumerator"); + "vkQueueBindSparseImageMemory parameter, VkImageAspect pBindInfo->subresource.aspect, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkSparseMemoryBindFlagBits)pBindInfo->flags)) - { - std::string reason = "vkQueueBindSparseImageMemory parameter, VkSparseMemoryBindFlags pBindInfo->flags, is " + EnumeratorString((VkSparseMemoryBindFlagBits)pBindInfo->flags); - log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; @@ -2940,7 +3262,7 @@ bool PostQueueBindSparseImageMemory( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueBindSparseImageMemory parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -2969,24 +3291,14 @@ bool PreCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFence parameter, const VkFenceCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_FENCE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFence parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateFence parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(!ValidateEnumerator((VkFenceCreateFlagBits)pCreateInfo->flags)) - { - std::string reason = "vkCreateFence parameter, VkFenceCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkFenceCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; @@ -2998,14 +3310,11 @@ bool PostCreateFence( VkResult result) { - if(pFence == nullptr) + if(pFence != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFence parameter, VkFence* pFence, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateFence parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3036,7 +3345,7 @@ bool PostDestroyFence( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyFence parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3061,11 +3370,8 @@ bool PreResetFences( VkDevice device, const VkFence* pFences) { - if(pFences == nullptr) + if(pFences != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkResetFences parameter, const VkFence* pFences, is null pointer"); - return false; } return true; @@ -3078,7 +3384,7 @@ bool PostResetFences( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkResetFences parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3109,7 +3415,7 @@ bool PostGetFenceStatus( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetFenceStatus parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3134,11 +3440,8 @@ bool PreWaitForFences( VkDevice device, const VkFence* pFences) { - if(pFences == nullptr) + if(pFences != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkWaitForFences parameter, const VkFence* pFences, is null pointer"); - return false; } return true; @@ -3155,7 +3458,7 @@ bool PostWaitForFences( - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkWaitForFences parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3185,19 +3488,15 @@ bool PreCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSemaphore parameter, const VkSemaphoreCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSemaphore parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateSemaphore parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } + } return true; } @@ -3208,14 +3507,11 @@ bool PostCreateSemaphore( VkResult result) { - if(pSemaphore == nullptr) + if(pSemaphore != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSemaphore parameter, VkSemaphore* pSemaphore, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateSemaphore parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3246,7 +3542,7 @@ bool PostDestroySemaphore( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroySemaphore parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3274,7 +3570,7 @@ bool PostQueueSignalSemaphore( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueSignalSemaphore parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3302,7 +3598,7 @@ bool PostQueueWaitSemaphore( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkQueueWaitSemaphore parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3327,19 +3623,15 @@ bool PreCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateEvent parameter, const VkEventCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_EVENT_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateEvent parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateEvent parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } + } return true; } @@ -3350,14 +3642,11 @@ bool PostCreateEvent( VkResult result) { - if(pEvent == nullptr) + if(pEvent != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateEvent parameter, VkEvent* pEvent, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateEvent parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3388,7 +3677,7 @@ bool PostDestroyEvent( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyEvent parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3416,7 +3705,7 @@ bool PostGetEventStatus( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetEventStatus parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3444,7 +3733,7 @@ bool PostSetEvent( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkSetEvent parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3472,7 +3761,7 @@ bool PostResetEvent( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkResetEvent parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3497,31 +3786,21 @@ bool PreCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateQueryPool parameter, const VkQueryPoolCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateQueryPool parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateQueryPool parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } if(pCreateInfo->queryType < VK_QUERY_TYPE_BEGIN_RANGE || pCreateInfo->queryType > VK_QUERY_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateQueryPool parameter, VkQueryType pCreateInfo->queryType, is unrecognized enumerator"); + "vkCreateQueryPool parameter, VkQueryType pCreateInfo->queryType, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkQueryPipelineStatisticFlagBits)pCreateInfo->pipelineStatistics)) - { - std::string reason = "vkCreateQueryPool parameter, VkQueryPipelineStatisticFlags pCreateInfo->pipelineStatistics, is " + EnumeratorString((VkQueryPipelineStatisticFlagBits)pCreateInfo->pipelineStatistics); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; @@ -3533,14 +3812,11 @@ bool PostCreateQueryPool( VkResult result) { - if(pQueryPool == nullptr) + if(pQueryPool != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateQueryPool parameter, VkQueryPool* pQueryPool, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateQueryPool parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3571,7 +3847,7 @@ bool PostDestroyQueryPool( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyQueryPool parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3606,28 +3882,16 @@ bool PostGetQueryPoolResults( - if(pDataSize == nullptr) + if(pDataSize != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetQueryPoolResults parameter, size_t* pDataSize, is null pointer"); - return false; } - if(pData == nullptr) + if(pData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetQueryPoolResults parameter, void* pData, is null pointer"); - return false; } - if(!ValidateEnumerator((VkQueryResultFlagBits)flags)) - { - std::string reason = "vkGetQueryPoolResults parameter, VkQueryResultFlags flags, is " + EnumeratorString((VkQueryResultFlagBits)flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetQueryPoolResults parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3657,30 +3921,24 @@ bool PreCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBuffer parameter, const VkBufferCreateInfo* pCreateInfo, is null pointer"); + "vkCreateBuffer parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sharingMode < VK_SHARING_MODE_BEGIN_RANGE || + pCreateInfo->sharingMode > VK_SHARING_MODE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateBuffer parameter, VkSharingMode pCreateInfo->sharingMode, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkBufferUsageFlagBits)pCreateInfo->usage)) + if(pCreateInfo->pQueueFamilyIndices != nullptr) { - std::string reason = "vkCreateBuffer parameter, VkBufferUsageFlags pCreateInfo->usage, is " + EnumeratorString((VkBufferUsageFlagBits)pCreateInfo->usage); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(!ValidateEnumerator((VkBufferCreateFlagBits)pCreateInfo->flags)) - { - std::string reason = "vkCreateBuffer parameter, VkBufferCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkBufferCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; @@ -3692,14 +3950,11 @@ bool PostCreateBuffer( VkResult result) { - if(pBuffer == nullptr) + if(pBuffer != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBuffer parameter, VkBuffer* pBuffer, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3730,7 +3985,7 @@ bool PostDestroyBuffer( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3755,33 +4010,29 @@ bool PreCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBufferView parameter, const VkBufferViewCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBufferView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateBufferView parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } if(pCreateInfo->viewType < VK_BUFFER_VIEW_TYPE_BEGIN_RANGE || pCreateInfo->viewType > VK_BUFFER_VIEW_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBufferView parameter, VkBufferViewType pCreateInfo->viewType, is unrecognized enumerator"); + "vkCreateBufferView parameter, VkBufferViewType pCreateInfo->viewType, is an unrecognized enumerator"); return false; } if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE || pCreateInfo->format > VK_FORMAT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBufferView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator"); + "vkCreateBufferView parameter, VkFormat pCreateInfo->format, is an unrecognized enumerator"); return false; } + } return true; } @@ -3792,14 +4043,11 @@ bool PostCreateBufferView( VkResult result) { - if(pView == nullptr) + if(pView != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateBufferView parameter, VkBufferView* pView, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateBufferView parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3830,7 +4078,7 @@ bool PostDestroyBufferView( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyBufferView parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3855,51 +4103,45 @@ bool PreCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, const VkImageCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateImage parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } if(pCreateInfo->imageType < VK_IMAGE_TYPE_BEGIN_RANGE || pCreateInfo->imageType > VK_IMAGE_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, VkImageType pCreateInfo->imageType, is unrecognized enumerator"); + "vkCreateImage parameter, VkImageType pCreateInfo->imageType, is an unrecognized enumerator"); return false; } if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE || pCreateInfo->format > VK_FORMAT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, VkFormat pCreateInfo->format, is unrecognized enumerator"); + "vkCreateImage parameter, VkFormat pCreateInfo->format, is an unrecognized enumerator"); return false; } if(pCreateInfo->tiling < VK_IMAGE_TILING_BEGIN_RANGE || pCreateInfo->tiling > VK_IMAGE_TILING_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, VkImageTiling pCreateInfo->tiling, is unrecognized enumerator"); + "vkCreateImage parameter, VkImageTiling pCreateInfo->tiling, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkImageUsageFlagBits)pCreateInfo->usage)) + if(pCreateInfo->sharingMode < VK_SHARING_MODE_BEGIN_RANGE || + pCreateInfo->sharingMode > VK_SHARING_MODE_END_RANGE) { - std::string reason = "vkCreateImage parameter, VkImageUsageFlags pCreateInfo->usage, is " + EnumeratorString((VkImageUsageFlagBits)pCreateInfo->usage); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateImage parameter, VkSharingMode pCreateInfo->sharingMode, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkImageCreateFlagBits)pCreateInfo->flags)) + if(pCreateInfo->pQueueFamilyIndices != nullptr) { - std::string reason = "vkCreateImage parameter, VkImageCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkImageCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; + } } return true; @@ -3911,14 +4153,11 @@ bool PostCreateImage( VkResult result) { - if(pImage == nullptr) + if(pImage != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImage parameter, VkImage* pImage, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateImage parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3949,7 +4188,7 @@ bool PostDestroyImage( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyImage parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -3974,19 +4213,16 @@ bool PreGetImageSubresourceLayout( VkDevice device, const VkImageSubresource* pSubresource) { - if(pSubresource == nullptr) + if(pSubresource != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSubresourceLayout parameter, const VkImageSubresource* pSubresource, is null pointer"); - return false; - } if(pSubresource->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pSubresource->aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSubresourceLayout parameter, VkImageAspect pSubresource->aspect, is unrecognized enumerator"); + "vkGetImageSubresourceLayout parameter, VkImageAspect pSubresource->aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -3999,14 +4235,11 @@ bool PostGetImageSubresourceLayout( { - if(pLayout == nullptr) + if(pLayout != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkGetImageSubresourceLayout parameter, VkSubresourceLayout* pLayout, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkGetImageSubresourceLayout parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -4035,68 +4268,64 @@ bool PreCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, const VkImageViewCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateImageView parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } if(pCreateInfo->viewType < VK_IMAGE_VIEW_TYPE_BEGIN_RANGE || pCreateInfo->viewType > VK_IMAGE_VIEW_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkImageViewType pCreateInfo->viewType, is unrecognized enumerator"); + "vkCreateImageView parameter, VkImageViewType pCreateInfo->viewType, is an unrecognized enumerator"); return false; } if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE || pCreateInfo->format > VK_FORMAT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator"); + "vkCreateImageView parameter, VkFormat pCreateInfo->format, is an unrecognized enumerator"); return false; } if(pCreateInfo->channels.r < VK_CHANNEL_SWIZZLE_BEGIN_RANGE || pCreateInfo->channels.r > VK_CHANNEL_SWIZZLE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.r, is unrecognized enumerator"); + "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.r, is an unrecognized enumerator"); return false; } if(pCreateInfo->channels.g < VK_CHANNEL_SWIZZLE_BEGIN_RANGE || pCreateInfo->channels.g > VK_CHANNEL_SWIZZLE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.g, is unrecognized enumerator"); + "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.g, is an unrecognized enumerator"); return false; } if(pCreateInfo->channels.b < VK_CHANNEL_SWIZZLE_BEGIN_RANGE || pCreateInfo->channels.b > VK_CHANNEL_SWIZZLE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.b, is unrecognized enumerator"); + "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.b, is an unrecognized enumerator"); return false; } if(pCreateInfo->channels.a < VK_CHANNEL_SWIZZLE_BEGIN_RANGE || pCreateInfo->channels.a > VK_CHANNEL_SWIZZLE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.a, is unrecognized enumerator"); + "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.a, is an unrecognized enumerator"); return false; } if(pCreateInfo->subresourceRange.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pCreateInfo->subresourceRange.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkImageAspect pCreateInfo->subresourceRange.aspect, is unrecognized enumerator"); + "vkCreateImageView parameter, VkImageAspect pCreateInfo->subresourceRange.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -4107,14 +4336,11 @@ bool PostCreateImageView( VkResult result) { - if(pView == nullptr) + if(pView != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateImageView parameter, VkImageView* pView, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateImageView parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -4145,7 +4371,7 @@ bool PostDestroyImageView( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyImageView parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -4166,42 +4392,62 @@ VK_LAYER_EXPORT VkResult VKAPI vkDestroyImageView( return result; } -void PreCreateAttachmentView( +bool PreCreateAttachmentView( VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, const VkAttachmentViewCreateInfo* pCreateInfo, is null pointer"); - return; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return; - } - if(pCreateInfo->image.handle == 0) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkImage pCreateInfo->image, is null pointer"); - return; + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateAttachmentView parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); + return false; } if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE || pCreateInfo->format > VK_FORMAT_END_RANGE) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator"); - return; + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateAttachmentView parameter, VkFormat pCreateInfo->format, is an unrecognized enumerator"); + return false; + } + } + + return true; +} + +bool PostCreateAttachmentView( + VkDevice device, + VkAttachmentView* pView, + VkResult result) +{ + + if(pView != nullptr) + { } - if(!ValidateEnumerator((VkAttachmentViewCreateFlagBits)pCreateInfo->flags)) + + if(result < VK_SUCCESS) { - std::string reason = "vkCreateAttachmentView parameter, VkAttachmentViewCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkAttachmentViewCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return; + std::string reason = "vkCreateAttachmentView parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; } + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateAttachmentView( + VkDevice device, + const VkAttachmentViewCreateInfo* pCreateInfo, + VkAttachmentView* pView) +{ + PreCreateAttachmentView(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateAttachmentView(device, pCreateInfo, pView); + + PostCreateAttachmentView(device, pView, result); + + return result; } bool PostDestroyAttachmentView( @@ -4211,7 +4457,7 @@ bool PostDestroyAttachmentView( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyAttachmentView parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -4232,63 +4478,98 @@ VK_LAYER_EXPORT VkResult VKAPI vkDestroyAttachmentView( return result; } - -void PostCreateAttachmentView( +bool PostDestroyShaderModule( VkDevice device, - VkAttachmentView* pView, + VkShaderModule shaderModule, VkResult result) { - if(device == nullptr) + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkDevice device, is null pointer"); - return; + std::string reason = "vkDestroyShaderModule parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; } - if(pView == nullptr) + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyShaderModule( + VkDevice device, + VkShaderModule shaderModule) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyShaderModule(device, shaderModule); + + PostDestroyShaderModule(device, shaderModule, result); + + return result; +} + +bool PreCreateShader( + VkDevice device, + const VkShaderCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_SHADER_CREATE_INFO) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateShader parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); + return false; + } + if(pCreateInfo->pName != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkAttachmentView* pView, is null pointer"); - return; } - if((*pView).handle == 0) + } + + return true; +} + +bool PostCreateShader( + VkDevice device, + VkShader* pShader, + VkResult result) +{ + + if(pShader != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateAttachmentView parameter, VkAttachmentView* pView, is null pointer"); - return; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateAttachmentView parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return; + std::string reason = "vkCreateShader parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; } + + return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateAttachmentView( +VK_LAYER_EXPORT VkResult VKAPI vkCreateShader( VkDevice device, - const VkAttachmentViewCreateInfo* pCreateInfo, - VkAttachmentView* pView) + const VkShaderCreateInfo* pCreateInfo, + VkShader* pShader) { - PreCreateAttachmentView(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateAttachmentView(device, pCreateInfo, pView); + PreCreateShader(device, pCreateInfo); - PostCreateAttachmentView(device, pView, result); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateShader(device, pCreateInfo, pShader); + + PostCreateShader(device, pShader, result); return result; } -bool PostDestroyShaderModule( +bool PostDestroyShader( VkDevice device, - VkShaderModule shaderModule, + VkShader shader, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyShaderModule parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyShader parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -4296,60 +4577,132 @@ bool PostDestroyShaderModule( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyShaderModule( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyShader( VkDevice device, - VkShaderModule shaderModule) + VkShader shader) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyShaderModule(device, shaderModule); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyShader(device, shader); - PostDestroyShaderModule(device, shaderModule, result); + PostDestroyShader(device, shader, result); return result; } -bool PreCreateShader( +bool PreCreatePipelineCache( VkDevice device, - const VkShaderCreateInfo* pCreateInfo) + const VkPipelineCacheCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateShader parameter, const VkShaderCreateInfo* pCreateInfo, is null pointer"); + "vkCreatePipelineCache parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->initialData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateShader parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + } + } + + return true; +} + +bool PostCreatePipelineCache( + VkDevice device, + VkPipelineCache* pPipelineCache, + VkResult result) +{ + + if(pPipelineCache != nullptr) + { + } + + if(result < VK_SUCCESS) + { + std::string reason = "vkCreatePipelineCache parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pName == nullptr) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreatePipelineCache( + VkDevice device, + const VkPipelineCacheCreateInfo* pCreateInfo, + VkPipelineCache* pPipelineCache) +{ + PreCreatePipelineCache(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreatePipelineCache(device, pCreateInfo, pPipelineCache); + + PostCreatePipelineCache(device, pPipelineCache, result); + + return result; +} + +bool PostDestroyPipelineCache( + VkDevice device, + VkPipelineCache pipelineCache, + VkResult result) +{ + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateShader parameter, const char* pCreateInfo->pName, is null pointer"); + std::string reason = "vkDestroyPipelineCache parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } return true; } -bool PostCreateShader( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipelineCache( + VkDevice device, + VkPipelineCache pipelineCache) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipelineCache(device, pipelineCache); + + PostDestroyPipelineCache(device, pipelineCache, result); + + return result; +} + +bool PostGetPipelineCacheSize( + VkDevice device, + VkPipelineCache pipelineCache) +{ + + + return true; +} + +VK_LAYER_EXPORT size_t VKAPI vkGetPipelineCacheSize( VkDevice device, - VkShader* pShader, + VkPipelineCache pipelineCache) +{ + get_dispatch_table(pc_device_table_map, device)->GetPipelineCacheSize(device, pipelineCache); + + PostGetPipelineCacheSize(device, pipelineCache); +} + +bool PostGetPipelineCacheData( + VkDevice device, + VkPipelineCache pipelineCache, + void* pData, VkResult result) { - if(pShader == nullptr) + + if(pData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateShader parameter, VkShader* pShader, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateShader parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkGetPipelineCacheData parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -4357,28 +4710,41 @@ bool PostCreateShader( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateShader( +VK_LAYER_EXPORT VkResult VKAPI vkGetPipelineCacheData( VkDevice device, - const VkShaderCreateInfo* pCreateInfo, - VkShader* pShader) + VkPipelineCache pipelineCache, + void* pData) { - PreCreateShader(device, pCreateInfo); - - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateShader(device, pCreateInfo, pShader); + VkResult result = get_dispatch_table(pc_device_table_map, device)->GetPipelineCacheData(device, pipelineCache, pData); - PostCreateShader(device, pShader, result); + PostGetPipelineCacheData(device, pipelineCache, pData, result); return result; } -bool PostDestroyShader( +bool PreMergePipelineCaches( VkDevice device, - VkShader shader, + const VkPipelineCache* pSrcCaches) +{ + if(pSrcCaches != nullptr) + { + } + + return true; +} + +bool PostMergePipelineCaches( + VkDevice device, + VkPipelineCache destCache, + uint32_t srcCacheCount, VkResult result) { - if(result != VK_SUCCESS) + + + + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyShader parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkMergePipelineCaches parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -4386,382 +4752,315 @@ bool PostDestroyShader( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyShader( +VK_LAYER_EXPORT VkResult VKAPI vkMergePipelineCaches( VkDevice device, - VkShader shader) + VkPipelineCache destCache, + uint32_t srcCacheCount, + const VkPipelineCache* pSrcCaches) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyShader(device, shader); + PreMergePipelineCaches(device, pSrcCaches); - PostDestroyShader(device, shader, result); + VkResult result = get_dispatch_table(pc_device_table_map, device)->MergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches); + + PostMergePipelineCaches(device, destCache, srcCacheCount, result); return result; } -//TODO handle count > 1 -bool PreCreateGraphicsPipeline( +bool PreCreateGraphicsPipelines( VkDevice device, - uint32_t count, - const VkGraphicsPipelineCreateInfo* pCreateInfo) + const VkGraphicsPipelineCreateInfo* pCreateInfos) { - if(pCreateInfo == nullptr) + if(pCreateInfos != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkGraphicsPipelineCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->sType != VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pStages == nullptr) + if(pCreateInfos->pStages != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineShaderStageCreateInfo* pCreateInfo->pStages, is null pointer"); - return false; - } - if(pCreateInfo->pStages->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pStages->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pStages->sType != VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pStages->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pStages->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pStages->stage < VK_SHADER_STAGE_BEGIN_RANGE || - pCreateInfo->pStages->stage > VK_SHADER_STAGE_END_RANGE) + if(pCreateInfos->pStages->stage < VK_SHADER_STAGE_BEGIN_RANGE || + pCreateInfos->pStages->stage > VK_SHADER_STAGE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkShaderStage pCreateInfo->pStages->stage, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkShaderStage pCreateInfos->pStages->stage, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pStages->pSpecializationInfo == nullptr) + if(pCreateInfos->pStages->pSpecializationInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkSpecializationInfo* pCreateInfo->pStages->pSpecializationInfo, is null pointer"); - return false; - } - if(pCreateInfo->pStages->pSpecializationInfo->pMap == nullptr) + if(pCreateInfos->pStages->pSpecializationInfo->pMap != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkSpecializationMapEntry* pCreateInfo->pStages->pSpecializationInfo->pMap, is null pointer"); - return false; } - if(pCreateInfo->pStages->pSpecializationInfo->pData == nullptr) + if(pCreateInfos->pStages->pSpecializationInfo->pData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pStages->pSpecializationInfo->pData, is null pointer"); - return false; } - if(pCreateInfo->pVertexInputState == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineVertexInputStateCreateInfo* pCreateInfo->pVertexInputState, is null pointer"); - return false; } - if(pCreateInfo->pVertexInputState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pVertexInputState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pVertexInputState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions == nullptr) + if(pCreateInfos->pVertexInputState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkVertexInputBindingDescription* pCreateInfo->pVertexInputState->pVertexBindingDescriptions, is null pointer"); - return false; - } - if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate < VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE || - pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate > VK_VERTEX_INPUT_STEP_RATE_END_RANGE) + if(pCreateInfos->pVertexInputState->sType != VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkVertexInputStepRate pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pVertexInputState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions == nullptr) + if(pCreateInfos->pVertexInputState->pVertexBindingDescriptions != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkVertexInputAttributeDescription* pCreateInfo->pVertexInputState->pVertexAttributeDescriptions, is null pointer"); - return false; - } - if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format < VK_FORMAT_BEGIN_RANGE || - pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format > VK_FORMAT_END_RANGE) + if(pCreateInfos->pVertexInputState->pVertexBindingDescriptions->stepRate < VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE || + pCreateInfos->pVertexInputState->pVertexBindingDescriptions->stepRate > VK_VERTEX_INPUT_STEP_RATE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkFormat pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkVertexInputStepRate pCreateInfos->pVertexInputState->pVertexBindingDescriptions->stepRate, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pInputAssemblyState == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineIaStateCreateInfo* pCreateInfo->pIaState, is null pointer"); - return false; } - if(pCreateInfo->pInputAssemblyState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pInputAssemblyState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pVertexInputState->pVertexAttributeDescriptions != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pIaState->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pInputAssemblyState->topology < VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE || - pCreateInfo->pInputAssemblyState->topology > VK_PRIMITIVE_TOPOLOGY_END_RANGE) + if(pCreateInfos->pVertexInputState->pVertexAttributeDescriptions->format < VK_FORMAT_BEGIN_RANGE || + pCreateInfos->pVertexInputState->pVertexAttributeDescriptions->format > VK_FORMAT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkPrimitiveTopology pCreateInfo->pIaState->topology, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkFormat pCreateInfos->pVertexInputState->pVertexAttributeDescriptions->format, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pTessellationState == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineTessStateCreateInfo* pCreateInfo->pTessState, is null pointer"); - return false; } - if(pCreateInfo->pTessellationState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pTessellationState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pTessState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pViewportState == nullptr) + if(pCreateInfos->pInputAssemblyState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineVpStateCreateInfo* pCreateInfo->pVpState, is null pointer"); - return false; - } - if(pCreateInfo->pViewportState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pViewportState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pInputAssemblyState->sType != VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pVpState->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pInputAssemblyState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pRasterState == nullptr) + if(pCreateInfos->pInputAssemblyState->topology < VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE || + pCreateInfos->pInputAssemblyState->topology > VK_PRIMITIVE_TOPOLOGY_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineRsStateCreateInfo* pCreateInfo->pRsState, is null pointer"); + "vkCreateGraphicsPipelines parameter, VkPrimitiveTopology pCreateInfos->pInputAssemblyState->topology, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pRasterState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pRasterState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pRsState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pRasterState->fillMode < VK_FILL_MODE_BEGIN_RANGE || - pCreateInfo->pRasterState->fillMode > VK_FILL_MODE_END_RANGE) + if(pCreateInfos->pTessellationState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkFillMode pCreateInfo->pRsState->fillMode, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pRasterState->cullMode < VK_CULL_MODE_BEGIN_RANGE || - pCreateInfo->pRasterState->cullMode > VK_CULL_MODE_END_RANGE) + if(pCreateInfos->pTessellationState->sType != VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkCullMode pCreateInfo->pRsState->cullMode, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pTessellationState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pRasterState->frontFace < VK_FRONT_FACE_BEGIN_RANGE || - pCreateInfo->pRasterState->frontFace > VK_FRONT_FACE_END_RANGE) + } + if(pCreateInfos->pViewportState != nullptr) + { + if(pCreateInfos->pViewportState->sType != VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkFrontFace pCreateInfo->pRsState->frontFace, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pViewportState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pMultisampleState == nullptr) + } + if(pCreateInfos->pRasterState != nullptr) + { + if(pCreateInfos->pRasterState->sType != VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineMsStateCreateInfo* pCreateInfo->pMsState, is null pointer"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pRasterState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pMultisampleState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pMultisampleState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pRasterState->fillMode < VK_FILL_MODE_BEGIN_RANGE || + pCreateInfos->pRasterState->fillMode > VK_FILL_MODE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pMsState->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkFillMode pCreateInfos->pRasterState->fillMode, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState == nullptr) + if(pCreateInfos->pRasterState->cullMode < VK_CULL_MODE_BEGIN_RANGE || + pCreateInfos->pRasterState->cullMode > VK_CULL_MODE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineDsStateCreateInfo* pCreateInfo->pDsState, is null pointer"); + "vkCreateGraphicsPipelines parameter, VkCullMode pCreateInfos->pRasterState->cullMode, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pRasterState->frontFace < VK_FRONT_FACE_BEGIN_RANGE || + pCreateInfos->pRasterState->frontFace > VK_FRONT_FACE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkFrontFace pCreateInfos->pRasterState->frontFace, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->depthCompareOp > VK_COMPARE_OP_END_RANGE) + } + if(pCreateInfos->pMultisampleState != nullptr) + { + if(pCreateInfos->pMultisampleState->sType != VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->depthCompareOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pMultisampleState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilFailOp > VK_STENCIL_OP_END_RANGE) + } + if(pCreateInfos->pDepthStencilState != nullptr) + { + if(pCreateInfos->pDepthStencilState->sType != VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilFailOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pDepthStencilState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilPassOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->depthCompareOp > VK_COMPARE_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilPassOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkCompareOp pCreateInfos->pDepthStencilState->depthCompareOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->front.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->front.stencilFailOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilDepthFailOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->front.stencilFailOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilCompareOp > VK_COMPARE_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->front.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->front.stencilPassOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->front.stencilCompareOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->front.stencilPassOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->front.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->front.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilFailOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->front.stencilDepthFailOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilPassOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->front.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->front.stencilCompareOp > VK_COMPARE_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilPassOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkCompareOp pCreateInfos->pDepthStencilState->front.stencilCompareOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->back.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->back.stencilFailOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilDepthFailOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->back.stencilFailOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilCompareOp > VK_COMPARE_OP_END_RANGE) + if(pCreateInfos->pDepthStencilState->back.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->back.stencilPassOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->back.stencilCompareOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->back.stencilPassOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState == nullptr) + if(pCreateInfos->pDepthStencilState->back.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->back.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineCbStateCreateInfo* pCreateInfo->pCbState, is null pointer"); + "vkCreateGraphicsPipelines parameter, VkStencilOp pCreateInfos->pDepthStencilState->back.stencilDepthFailOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pColorBlendState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->pDepthStencilState->back.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || + pCreateInfos->pDepthStencilState->back.stencilCompareOp > VK_COMPARE_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pCbState->sType, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkCompareOp pCreateInfos->pDepthStencilState->back.stencilCompareOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->logicOp < VK_LOGIC_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->logicOp > VK_LOGIC_OP_END_RANGE) + } + if(pCreateInfos->pColorBlendState != nullptr) + { + if(pCreateInfos->pColorBlendState->sType != VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkLogicOp pCreateInfo->pCbState->logicOp, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkStructureType pCreateInfos->pColorBlendState->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments == nullptr) + if(pCreateInfos->pColorBlendState->logicOp < VK_LOGIC_OP_BEGIN_RANGE || + pCreateInfos->pColorBlendState->logicOp > VK_LOGIC_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, const VkPipelineCbAttachmentState* pCreateInfo->pCbState->pAttachments, is null pointer"); + "vkCreateGraphicsPipelines parameter, VkLogicOp pCreateInfos->pColorBlendState->logicOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->srcBlendColor < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->srcBlendColor > VK_BLEND_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments != nullptr) + { + if(pCreateInfos->pColorBlendState->pAttachments->srcBlendColor < VK_BLEND_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->srcBlendColor > VK_BLEND_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendColor, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlend pCreateInfos->pColorBlendState->pAttachments->srcBlendColor, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->destBlendColor < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->destBlendColor > VK_BLEND_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments->destBlendColor < VK_BLEND_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->destBlendColor > VK_BLEND_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendColor, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlend pCreateInfos->pColorBlendState->pAttachments->destBlendColor, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->blendOpColor < VK_BLEND_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->blendOpColor > VK_BLEND_OP_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments->blendOpColor < VK_BLEND_OP_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->blendOpColor > VK_BLEND_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpColor, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlendOp pCreateInfos->pColorBlendState->pAttachments->blendOpColor, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->srcBlendAlpha < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->srcBlendAlpha > VK_BLEND_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments->srcBlendAlpha < VK_BLEND_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->srcBlendAlpha > VK_BLEND_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendAlpha, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlend pCreateInfos->pColorBlendState->pAttachments->srcBlendAlpha, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->destBlendAlpha < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->destBlendAlpha > VK_BLEND_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments->destBlendAlpha < VK_BLEND_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->destBlendAlpha > VK_BLEND_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendAlpha, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlend pCreateInfos->pColorBlendState->pAttachments->destBlendAlpha, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->blendOpAlpha < VK_BLEND_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->blendOpAlpha > VK_BLEND_OP_END_RANGE) + if(pCreateInfos->pColorBlendState->pAttachments->blendOpAlpha < VK_BLEND_OP_BEGIN_RANGE || + pCreateInfos->pColorBlendState->pAttachments->blendOpAlpha > VK_BLEND_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpAlpha, is unrecognized enumerator"); + "vkCreateGraphicsPipelines parameter, VkBlendOp pCreateInfos->pColorBlendState->pAttachments->blendOpAlpha, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask)) - { - std::string reason = "vkCreateGraphicsPipeline parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags)) - { - std::string reason = "vkCreateGraphicsPipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; + } } return true; } -bool PostCreateGraphicsPipeline( +bool PostCreateGraphicsPipelines( VkDevice device, - VkPipeline* pPipeline, + VkPipelineCache pipelineCache, + uint32_t count, + VkPipeline* pPipelines, VkResult result) { - if(pPipeline == nullptr) + + + if(pPipelines != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateGraphicsPipeline parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateGraphicsPipelines parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -4769,386 +5068,392 @@ bool PostCreateGraphicsPipeline( return true; } -bool PostDestroyPipeline( +VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipelines( VkDevice device, - VkPipeline pipeline, - VkResult result) + VkPipelineCache pipelineCache, + uint32_t count, + const VkGraphicsPipelineCreateInfo* pCreateInfos, + VkPipeline* pPipelines) { - if(result != VK_SUCCESS) - { - std::string reason = "vkDestroyPipeline parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } + PreCreateGraphicsPipelines(device, pCreateInfos); - return true; + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines); + + PostCreateGraphicsPipelines(device, pipelineCache, count, pPipelines, result); + + return result; } -bool PreCreateGraphicsPipelineDerivative( +bool PreCreateComputePipelines( VkDevice device, - const VkGraphicsPipelineCreateInfo* pCreateInfo) + const VkComputePipelineCreateInfo* pCreateInfos) { - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkGraphicsPipelineCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pStages == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineShaderStageCreateInfo* pCreateInfo->pStages, is null pointer"); - return false; - } - if(pCreateInfo->pStages->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pStages->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pStages->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pStages->stage < VK_SHADER_STAGE_BEGIN_RANGE || - pCreateInfo->pStages->stage > VK_SHADER_STAGE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkShaderStage pCreateInfo->pStages->stage, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pStages->pSpecializationInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkSpecializationInfo* pCreateInfo->pStages->pSpecializationInfo, is null pointer"); - return false; - } - if(pCreateInfo->pStages->pSpecializationInfo->pMap == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkSpecializationMapEntry* pCreateInfo->pStages->pSpecializationInfo->pMap, is null pointer"); - return false; - } - if(pCreateInfo->pStages->pSpecializationInfo->pData == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pStages->pSpecializationInfo->pData, is null pointer"); - return false; - } - if(pCreateInfo->pVertexInputState == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineVertexInputStateCreateInfo* pCreateInfo->pVertexInputState, is null pointer"); - return false; - } - if(pCreateInfo->pVertexInputState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pVertexInputState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pVertexInputState->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkVertexInputBindingDescription* pCreateInfo->pVertexInputState->pVertexBindingDescriptions, is null pointer"); - return false; - } - if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate < VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE || - pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate > VK_VERTEX_INPUT_STEP_RATE_END_RANGE) + if(pCreateInfos != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkVertexInputStepRate pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions == nullptr) + if(pCreateInfos->sType != VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkVertexInputAttributeDescription* pCreateInfo->pVertexInputState->pVertexAttributeDescriptions, is null pointer"); + "vkCreateComputePipelines parameter, VkStructureType pCreateInfos->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format < VK_FORMAT_BEGIN_RANGE || - pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format > VK_FORMAT_END_RANGE) + if(pCreateInfos->cs.sType != VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkFormat pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format, is unrecognized enumerator"); + "vkCreateComputePipelines parameter, VkStructureType pCreateInfos->cs.sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pInputAssemblyState == nullptr) + if(pCreateInfos->cs.stage < VK_SHADER_STAGE_BEGIN_RANGE || + pCreateInfos->cs.stage > VK_SHADER_STAGE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineIaStateCreateInfo* pCreateInfo->pIaState, is null pointer"); + "vkCreateComputePipelines parameter, VkShaderStage pCreateInfos->cs.stage, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pInputAssemblyState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pInputAssemblyState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfos->cs.pSpecializationInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pIaState->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pInputAssemblyState->topology < VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE || - pCreateInfo->pInputAssemblyState->topology > VK_PRIMITIVE_TOPOLOGY_END_RANGE) + if(pCreateInfos->cs.pSpecializationInfo->pMap != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkPrimitiveTopology pCreateInfo->pIaState->topology, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pTessellationState == nullptr) + if(pCreateInfos->cs.pSpecializationInfo->pData != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineTessStateCreateInfo* pCreateInfo->pTessState, is null pointer"); - return false; } - if(pCreateInfo->pTessellationState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pTessellationState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pTessState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pViewportState == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineVpStateCreateInfo* pCreateInfo->pVpState, is null pointer"); - return false; } - if(pCreateInfo->pViewportState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pViewportState->sType > VK_STRUCTURE_TYPE_END_RANGE) + + return true; +} + +bool PostCreateComputePipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t count, + VkPipeline* pPipelines, + VkResult result) +{ + + + + if(pPipelines != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pVpState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pRasterState == nullptr) + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineRsStateCreateInfo* pCreateInfo->pRsState, is null pointer"); + std::string reason = "vkCreateComputePipelines parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pRasterState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pRasterState->sType > VK_STRUCTURE_TYPE_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateComputePipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t count, + const VkComputePipelineCreateInfo* pCreateInfos, + VkPipeline* pPipelines) +{ + PreCreateComputePipelines(device, pCreateInfos); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines); + + PostCreateComputePipelines(device, pipelineCache, count, pPipelines, result); + + return result; +} + +bool PostDestroyPipeline( + VkDevice device, + VkPipeline pipeline, + VkResult result) +{ + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pRsState->sType, is unrecognized enumerator"); + std::string reason = "vkDestroyPipeline parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pRasterState->fillMode < VK_FILL_MODE_BEGIN_RANGE || - pCreateInfo->pRasterState->fillMode > VK_FILL_MODE_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipeline( + VkDevice device, + VkPipeline pipeline) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipeline(device, pipeline); + + PostDestroyPipeline(device, pipeline, result); + + return result; +} + +bool PreCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkFillMode pCreateInfo->pRsState->fillMode, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pRasterState->cullMode < VK_CULL_MODE_BEGIN_RANGE || - pCreateInfo->pRasterState->cullMode > VK_CULL_MODE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkCullMode pCreateInfo->pRsState->cullMode, is unrecognized enumerator"); + "vkCreatePipelineLayout parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pRasterState->frontFace < VK_FRONT_FACE_BEGIN_RANGE || - pCreateInfo->pRasterState->frontFace > VK_FRONT_FACE_END_RANGE) + if(pCreateInfo->pSetLayouts != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkFrontFace pCreateInfo->pRsState->frontFace, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pMultisampleState == nullptr) + if(pCreateInfo->pPushConstantRanges != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineMsStateCreateInfo* pCreateInfo->pMsState, is null pointer"); - return false; } - if(pCreateInfo->pMultisampleState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pMultisampleState->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pMsState->sType, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pDepthStencilState == nullptr) + + return true; +} + +bool PostCreatePipelineLayout( + VkDevice device, + VkPipelineLayout* pPipelineLayout, + VkResult result) +{ + + if(pPipelineLayout != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineDsStateCreateInfo* pCreateInfo->pDsState, is null pointer"); - return false; } - if(pCreateInfo->pDepthStencilState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->sType > VK_STRUCTURE_TYPE_END_RANGE) + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator"); + std::string reason = "vkCreatePipelineLayout parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pDepthStencilState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->depthCompareOp > VK_COMPARE_OP_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + VkPipelineLayout* pPipelineLayout) +{ + PreCreatePipelineLayout(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout); + + PostCreatePipelineLayout(device, pPipelineLayout, result); + + return result; +} + +bool PostDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout, + VkResult result) +{ + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->depthCompareOp, is unrecognized enumerator"); + std::string reason = "vkDestroyPipelineLayout parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilFailOp > VK_STENCIL_OP_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipelineLayout(device, pipelineLayout); + + PostDestroyPipelineLayout(device, pipelineLayout, result); + + return result; +} + +bool PreCreateSampler( + VkDevice device, + const VkSamplerCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilFailOp, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pDepthStencilState->front.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilPassOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilPassOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfo->magFilter < VK_TEX_FILTER_BEGIN_RANGE || + pCreateInfo->magFilter > VK_TEX_FILTER_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilDepthFailOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexFilter pCreateInfo->magFilter, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->front.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->front.stencilCompareOp > VK_COMPARE_OP_END_RANGE) + if(pCreateInfo->minFilter < VK_TEX_FILTER_BEGIN_RANGE || + pCreateInfo->minFilter > VK_TEX_FILTER_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->front.stencilCompareOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexFilter pCreateInfo->minFilter, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfo->mipMode < VK_TEX_MIPMAP_MODE_BEGIN_RANGE || + pCreateInfo->mipMode > VK_TEX_MIPMAP_MODE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilFailOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexMipmapMode pCreateInfo->mipMode, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilPassOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfo->addressU < VK_TEX_ADDRESS_BEGIN_RANGE || + pCreateInfo->addressU > VK_TEX_ADDRESS_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilPassOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressU, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE) + if(pCreateInfo->addressV < VK_TEX_ADDRESS_BEGIN_RANGE || + pCreateInfo->addressV > VK_TEX_ADDRESS_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilDepthFailOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressV, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pDepthStencilState->back.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->pDepthStencilState->back.stencilCompareOp > VK_COMPARE_OP_END_RANGE) + if(pCreateInfo->addressW < VK_TEX_ADDRESS_BEGIN_RANGE || + pCreateInfo->addressW > VK_TEX_ADDRESS_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->back.stencilCompareOp, is unrecognized enumerator"); + "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressW, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState == nullptr) + if(pCreateInfo->compareOp < VK_COMPARE_OP_BEGIN_RANGE || + pCreateInfo->compareOp > VK_COMPARE_OP_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineCbStateCreateInfo* pCreateInfo->pCbState, is null pointer"); + "vkCreateSampler parameter, VkCompareOp pCreateInfo->compareOp, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->pColorBlendState->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->borderColor < VK_BORDER_COLOR_BEGIN_RANGE || + pCreateInfo->borderColor > VK_BORDER_COLOR_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pCbState->sType, is unrecognized enumerator"); + "vkCreateSampler parameter, VkBorderColor pCreateInfo->borderColor, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pColorBlendState->logicOp < VK_LOGIC_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->logicOp > VK_LOGIC_OP_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkLogicOp pCreateInfo->pCbState->logicOp, is unrecognized enumerator"); - return false; } - if(pCreateInfo->pColorBlendState->pAttachments == nullptr) + + return true; +} + +bool PostCreateSampler( + VkDevice device, + VkSampler* pSampler, + VkResult result) +{ + + if(pSampler != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineCbAttachmentState* pCreateInfo->pCbState->pAttachments, is null pointer"); - return false; } - if(pCreateInfo->pColorBlendState->pAttachments->srcBlendColor < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->srcBlendColor > VK_BLEND_END_RANGE) + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendColor, is unrecognized enumerator"); + std::string reason = "vkCreateSampler parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->destBlendColor < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->destBlendColor > VK_BLEND_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateSampler( + VkDevice device, + const VkSamplerCreateInfo* pCreateInfo, + VkSampler* pSampler) +{ + PreCreateSampler(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateSampler(device, pCreateInfo, pSampler); + + PostCreateSampler(device, pSampler, result); + + return result; +} + +bool PostDestroySampler( + VkDevice device, + VkSampler sampler, + VkResult result) +{ + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendColor, is unrecognized enumerator"); + std::string reason = "vkDestroySampler parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->blendOpColor < VK_BLEND_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->blendOpColor > VK_BLEND_OP_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroySampler( + VkDevice device, + VkSampler sampler) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroySampler(device, sampler); + + PostDestroySampler(device, sampler, result); + + return result; +} + +bool PreCreateDescriptorSetLayout( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpColor, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pColorBlendState->pAttachments->srcBlendAlpha < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->srcBlendAlpha > VK_BLEND_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendAlpha, is unrecognized enumerator"); + "vkCreateDescriptorSetLayout parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pColorBlendState->pAttachments->destBlendAlpha < VK_BLEND_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->destBlendAlpha > VK_BLEND_END_RANGE) + if(pCreateInfo->pBinding != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendAlpha, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pColorBlendState->pAttachments->blendOpAlpha < VK_BLEND_OP_BEGIN_RANGE || - pCreateInfo->pColorBlendState->pAttachments->blendOpAlpha > VK_BLEND_OP_END_RANGE) + if(pCreateInfo->pBinding->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || + pCreateInfo->pBinding->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpAlpha, is unrecognized enumerator"); + "vkCreateDescriptorSetLayout parameter, VkDescriptorType pCreateInfo->pBinding->descriptorType, is an unrecognized enumerator"); return false; } - if(!ValidateEnumerator((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask)) + if(pCreateInfo->pBinding->pImmutableSamplers != nullptr) { - std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } - if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags)) - { - std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; + } } return true; } -bool PostCreateGraphicsPipelineDerivative( +bool PostCreateDescriptorSetLayout( VkDevice device, - VkPipeline basePipeline, - VkPipeline* pPipeline, + VkDescriptorSetLayout* pSetLayout, VkResult result) { - - if(pPipeline == nullptr) + if(pSetLayout != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipelineDerivative parameter, VkPipeline* pPipeline, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateDescriptorSetLayout parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5156,325 +5461,220 @@ bool PostCreateGraphicsPipelineDerivative( return true; } -bool PreCreateComputePipeline( +VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayout* pSetLayout) +{ + PreCreateDescriptorSetLayout(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout); + + PostCreateDescriptorSetLayout(device, pSetLayout, result); + + return result; +} + +bool PostDestroyDescriptorSetLayout( VkDevice device, - const VkComputePipelineCreateInfo* pCreateInfo) + VkDescriptorSetLayout descriptorSetLayout, + VkResult result) { - if(pCreateInfo == nullptr) + + + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkComputePipelineCreateInfo* pCreateInfo, is null pointer"); + std::string reason = "vkDestroyDescriptorSetLayout parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout( + VkDevice device, + VkDescriptorSetLayout descriptorSetLayout) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDescriptorSetLayout(device, descriptorSetLayout); + + PostDestroyDescriptorSetLayout(device, descriptorSetLayout, result); + + return result; +} + +bool PreCreateDescriptorPool( + VkDevice device, + const VkDescriptorPoolCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->cs.sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->cs.sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->cs.sType, is unrecognized enumerator"); + "vkCreateDescriptorPool parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->cs.stage < VK_SHADER_STAGE_BEGIN_RANGE || - pCreateInfo->cs.stage > VK_SHADER_STAGE_END_RANGE) + if(pCreateInfo->pTypeCount != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkShaderStage pCreateInfo->cs.stage, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->cs.pSpecializationInfo == nullptr) + if(pCreateInfo->pTypeCount->type < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || + pCreateInfo->pTypeCount->type > VK_DESCRIPTOR_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkSpecializationInfo* pCreateInfo->cs.pSpecializationInfo, is null pointer"); + "vkCreateDescriptorPool parameter, VkDescriptorType pCreateInfo->pTypeCount->type, is an unrecognized enumerator"); return false; } - if(pCreateInfo->cs.pSpecializationInfo->pMap == nullptr) + } + } + + return true; +} + +bool PostCreateDescriptorPool( + VkDevice device, + VkDescriptorPoolUsage poolUsage, + uint32_t maxSets, + VkDescriptorPool* pDescriptorPool, + VkResult result) +{ + + if(poolUsage < VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE || + poolUsage > VK_DESCRIPTOR_POOL_USAGE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkSpecializationMapEntry* pCreateInfo->cs.pSpecializationInfo->pMap, is null pointer"); + "vkCreateDescriptorPool parameter, VkDescriptorPoolUsage poolUsage, is an unrecognized enumerator"); return false; } - if(pCreateInfo->cs.pSpecializationInfo->pData == nullptr) + + + if(pDescriptorPool != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pSpecializationInfo->pData, is null pointer"); - return false; } - if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags)) + + if(result < VK_SUCCESS) { - std::string reason = "vkCreateComputePipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags); + std::string reason = "vkCreateDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - return true; + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool( + VkDevice device, + VkDescriptorPoolUsage poolUsage, + uint32_t maxSets, + const VkDescriptorPoolCreateInfo* pCreateInfo, + VkDescriptorPool* pDescriptorPool) +{ + PreCreateDescriptorPool(device, pCreateInfo); + + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); + + PostCreateDescriptorPool(device, poolUsage, maxSets, pDescriptorPool, result); + + return result; } -bool PostCreateComputePipeline( +bool PostDestroyDescriptorPool( VkDevice device, - VkPipeline* pPipeline, + VkDescriptorPool descriptorPool, VkResult result) { - if(pPipeline == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkPipeline* pPipeline, is null pointer"); - return false; - } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkPipelineLayout pCreateInfo->layout, is null pointer"); + std::string reason = "vkDestroyDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipeline( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDescriptorPool( VkDevice device, - VkPipeline pipeline) + VkDescriptorPool descriptorPool) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipeline(device, pipeline); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDescriptorPool(device, descriptorPool); - PostDestroyPipeline(device, pipeline, result); + PostDestroyDescriptorPool(device, descriptorPool, result); return result; } -//TODO handle count > 1 -void PostCreateGraphicsPipeline( +bool PostResetDescriptorPool( VkDevice device, - uint32_t count, - VkPipeline* pPipeline, + VkDescriptorPool descriptorPool, VkResult result) { - if(device == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkDevice device, is null pointer"); - return; - } - if(pPipeline == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer"); - return; - } - if((*pPipeline).handle == 0) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer"); - return; - } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateGraphicsPipeline parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return; + std::string reason = "vkResetDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; } + + return true; } -//TODO add intercept of pipelineCache entrypoints -VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipelines( +VK_LAYER_EXPORT VkResult VKAPI vkResetDescriptorPool( VkDevice device, - VkPipelineCache pipelineCache, - uint32_t count, - const VkGraphicsPipelineCreateInfo* pCreateInfos, - VkPipeline* pPipelines) + VkDescriptorPool descriptorPool) { - PreCreateGraphicsPipeline(device, count, pCreateInfos); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines); + VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetDescriptorPool(device, descriptorPool); - PostCreateGraphicsPipeline(device, count, pPipelines, result); + PostResetDescriptorPool(device, descriptorPool, result); return result; } -//TODO handle count > 1 -void PreCreateComputePipeline( +bool PreAllocDescriptorSets( VkDevice device, - uint32_t count, - const VkComputePipelineCreateInfo* pCreateInfo) + const VkDescriptorSetLayout* pSetLayouts) { - if(device == nullptr) + if(pSetLayouts != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkDevice device, is null pointer"); - return; } - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkComputePipelineCreateInfo* pCreateInfo, is null pointer"); - return; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return; - } - if(pCreateInfo->cs.sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->cs.sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->cs.sType, is unrecognized enumerator"); - return; - } - if(pCreateInfo->cs.pNext == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pNext, is null pointer"); - return; - } - if(pCreateInfo->cs.stage < VK_SHADER_STAGE_BEGIN_RANGE || - pCreateInfo->cs.stage > VK_SHADER_STAGE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkShaderStage pCreateInfo->cs.stage, is unrecognized enumerator"); - return; - } - if(pCreateInfo->cs.shader.handle == 0) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkShader pCreateInfo->cs.shader, is null pointer"); - return; - } - if(pCreateInfo->cs.pSpecializationInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkSpecializationInfo* pCreateInfo->cs.pSpecializationInfo, is null pointer"); - return; - } - if(pCreateInfo->cs.pSpecializationInfo->pMap == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const VkSpecializationMapEntry* pCreateInfo->cs.pSpecializationInfo->pMap, is null pointer"); - return; - } - if(pCreateInfo->cs.pSpecializationInfo->pData == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pSpecializationInfo->pData, is null pointer"); - return; - } - if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags)) - { - std::string reason = "vkCreateComputePipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags); - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return; - } - if(pCreateInfo->layout.handle == 0) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkPipelineLayout pCreateInfo->layout, is null pointer"); - return; - } + return true; } -//TODO handle count > 1 -void PostCreateComputePipeline( +bool PostAllocDescriptorSets( VkDevice device, + VkDescriptorPool descriptorPool, + VkDescriptorSetUsage setUsage, uint32_t count, - VkPipeline* pPipeline, + VkDescriptorSet* pDescriptorSets, + uint32_t* pCount, VkResult result) { - if(device == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkDevice device, is null pointer"); - return; - } - if(pPipeline == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkPipeline* pPipeline, is null pointer"); - return; - } - if((*pPipeline).handle == 0) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateComputePipeline parameter, VkPipeline* pPipeline, is null pointer"); - return; - } - if(result != VK_SUCCESS) + if(setUsage < VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE || + setUsage > VK_DESCRIPTOR_SET_USAGE_END_RANGE) { - std::string reason = "vkCreateComputePipeline parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return; + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkAllocDescriptorSets parameter, VkDescriptorSetUsage setUsage, is an unrecognized enumerator"); + return false; } -} - -VK_LAYER_EXPORT VkResult VKAPI vkCreateComputePipelines( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t count, - const VkComputePipelineCreateInfo* pCreateInfos, - VkPipeline* pPipelines) -{ - PreCreateComputePipeline(device, count, pCreateInfos); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines); - - PostCreateComputePipeline(device, count, pPipelines, result); - return result; -} -void PreCreatePipelineLayout( - VkDevice device, - const VkPipelineLayoutCreateInfo* pCreateInfo) -{ - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreatePipelineLayout parameter, const VkPipelineLayoutCreateInfo* pCreateInfo, is null pointer"); - return; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreatePipelineLayout parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return; - } - if(pCreateInfo->pSetLayouts == nullptr) + if(pDescriptorSets != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreatePipelineLayout parameter, const VkDescriptorSetLayout* pCreateInfo->pSetLayouts, is null pointer"); - return; } -} - -bool PostCreatePipelineLayout( - VkDevice device, - VkPipelineLayout* pPipelineLayout, - VkResult result) -{ - if(pPipelineLayout == nullptr) + if(pCount != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreatePipelineLayout parameter, VkPipelineLayout* pPipelineLayout, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreatePipelineLayout parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkAllocDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5482,30 +5682,47 @@ bool PostCreatePipelineLayout( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreatePipelineLayout( +VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets( VkDevice device, - const VkPipelineLayoutCreateInfo* pCreateInfo, - VkPipelineLayout* pPipelineLayout) + VkDescriptorPool descriptorPool, + VkDescriptorSetUsage setUsage, + uint32_t count, + const VkDescriptorSetLayout* pSetLayouts, + VkDescriptorSet* pDescriptorSets, + uint32_t* pCount) { - PreCreatePipelineLayout(device, pCreateInfo); + PreAllocDescriptorSets(device, pSetLayouts); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout); + VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); - PostCreatePipelineLayout(device, pPipelineLayout, result); + PostAllocDescriptorSets(device, descriptorPool, setUsage, count, pDescriptorSets, pCount, result); return result; } -bool PostDestroyPipelineLayout( +bool PreFreeDescriptorSets( VkDevice device, - VkPipelineLayout pipelineLayout, + const VkDescriptorSet* pDescriptorSets) +{ + if(pDescriptorSets != nullptr) + { + } + + return true; +} + +bool PostFreeDescriptorSets( + VkDevice device, + VkDescriptorPool descriptorPool, + uint32_t count, VkResult result) { - if(result != VK_SUCCESS) + + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyPipelineLayout parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkFreeDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5513,141 +5730,78 @@ bool PostDestroyPipelineLayout( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipelineLayout( +VK_LAYER_EXPORT VkResult VKAPI vkFreeDescriptorSets( VkDevice device, - VkPipelineLayout pipelineLayout) + VkDescriptorPool descriptorPool, + uint32_t count, + const VkDescriptorSet* pDescriptorSets) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipelineLayout(device, pipelineLayout); + PreFreeDescriptorSets(device, pDescriptorSets); - PostDestroyPipelineLayout(device, pipelineLayout, result); + VkResult result = get_dispatch_table(pc_device_table_map, device)->FreeDescriptorSets(device, descriptorPool, count, pDescriptorSets); + + PostFreeDescriptorSets(device, descriptorPool, count, result); return result; } -bool PreCreateSampler( +bool PreUpdateDescriptorSets( VkDevice device, - const VkSamplerCreateInfo* pCreateInfo) + const VkWriteDescriptorSet* pDescriptorWrites, + const VkCopyDescriptorSet* pDescriptorCopies) { - if(pCreateInfo == nullptr) + if(pDescriptorWrites != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, const VkSamplerCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pDescriptorWrites->sType != VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorWrites->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->magFilter < VK_TEX_FILTER_BEGIN_RANGE || - pCreateInfo->magFilter > VK_TEX_FILTER_END_RANGE) + if(pDescriptorWrites->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || + pDescriptorWrites->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexFilter pCreateInfo->magFilter, is unrecognized enumerator"); + "vkUpdateDescriptorSets parameter, VkDescriptorType pDescriptorWrites->descriptorType, is an unrecognized enumerator"); return false; } - if(pCreateInfo->minFilter < VK_TEX_FILTER_BEGIN_RANGE || - pCreateInfo->minFilter > VK_TEX_FILTER_END_RANGE) + if(pDescriptorWrites->pDescriptors != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexFilter pCreateInfo->minFilter, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->mipMode < VK_TEX_MIPMAP_MODE_BEGIN_RANGE || - pCreateInfo->mipMode > VK_TEX_MIPMAP_MODE_END_RANGE) + if(pDescriptorWrites->pDescriptors->imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pDescriptorWrites->pDescriptors->imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexMipmapMode pCreateInfo->mipMode, is unrecognized enumerator"); + "vkUpdateDescriptorSets parameter, VkImageLayout pDescriptorWrites->pDescriptors->imageLayout, is an unrecognized enumerator"); return false; } - if(pCreateInfo->addressU < VK_TEX_ADDRESS_BEGIN_RANGE || - pCreateInfo->addressU > VK_TEX_ADDRESS_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressU, is unrecognized enumerator"); - return false; } - if(pCreateInfo->addressV < VK_TEX_ADDRESS_BEGIN_RANGE || - pCreateInfo->addressV > VK_TEX_ADDRESS_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressV, is unrecognized enumerator"); - return false; } - if(pCreateInfo->addressW < VK_TEX_ADDRESS_BEGIN_RANGE || - pCreateInfo->addressW > VK_TEX_ADDRESS_END_RANGE) + + if(pDescriptorCopies != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressW, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->compareOp < VK_COMPARE_OP_BEGIN_RANGE || - pCreateInfo->compareOp > VK_COMPARE_OP_END_RANGE) + if(pDescriptorCopies->sType != VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkCompareOp pCreateInfo->compareOp, is unrecognized enumerator"); + "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorCopies->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->borderColor < VK_BORDER_COLOR_BEGIN_RANGE || - pCreateInfo->borderColor > VK_BORDER_COLOR_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkBorderColor pCreateInfo->borderColor, is unrecognized enumerator"); - return false; } return true; } -bool PostCreateSampler( +bool PostUpdateDescriptorSets( VkDevice device, - VkSampler* pSampler, + uint32_t writeCount, + uint32_t copyCount, VkResult result) { - if(pSampler == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateSampler parameter, VkSampler* pSampler, is null pointer"); - return false; - } - - if(result != VK_SUCCESS) - { - std::string reason = "vkCreateSampler parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } - - return true; -} - -VK_LAYER_EXPORT VkResult VKAPI vkCreateSampler( - VkDevice device, - const VkSamplerCreateInfo* pCreateInfo, - VkSampler* pSampler) -{ - PreCreateSampler(device, pCreateInfo); - - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateSampler(device, pCreateInfo, pSampler); - - PostCreateSampler(device, pSampler, result); - - return result; -} - -bool PostDestroySampler( - VkDevice device, - VkSampler sampler, - VkResult result) -{ - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroySampler parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkUpdateDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5655,73 +5809,58 @@ bool PostDestroySampler( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroySampler( +VK_LAYER_EXPORT VkResult VKAPI vkUpdateDescriptorSets( VkDevice device, - VkSampler sampler) + uint32_t writeCount, + const VkWriteDescriptorSet* pDescriptorWrites, + uint32_t copyCount, + const VkCopyDescriptorSet* pDescriptorCopies) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroySampler(device, sampler); + PreUpdateDescriptorSets(device, pDescriptorWrites, pDescriptorCopies); - PostDestroySampler(device, sampler, result); + VkResult result = get_dispatch_table(pc_device_table_map, device)->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies); + + PostUpdateDescriptorSets(device, writeCount, copyCount, result); return result; } -bool PreCreateDescriptorSetLayout( +bool PreCreateDynamicViewportState( VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo) + const VkDynamicViewportStateCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorSetLayout parameter, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorSetLayout parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateDynamicViewportState parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pBinding == nullptr) + if(pCreateInfo->pViewports != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorSetLayout parameter, const VkDescriptorSetLayoutBinding* pCreateInfo->pBinding, is null pointer"); - return false; } - if(pCreateInfo->pBinding->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || - pCreateInfo->pBinding->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE) + if(pCreateInfo->pScissors != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorSetLayout parameter, VkDescriptorType pCreateInfo->pBinding->descriptorType, is unrecognized enumerator"); - return false; } - if(!ValidateEnumerator((VkShaderStageFlagBits)pCreateInfo->pBinding->stageFlags)) - { - std::string reason = "vkCreateDescriptorSetLayout parameter, VkShaderStageFlags pCreateInfo->pBinding->stageFlags, is " + EnumeratorString((VkShaderStageFlagBits)pCreateInfo->pBinding->stageFlags); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; } -bool PostCreateDescriptorSetLayout( +bool PostCreateDynamicViewportState( VkDevice device, - VkDescriptorSetLayout* pSetLayout, + VkDynamicViewportState* pState, VkResult result) { - if(pSetLayout == nullptr) + if(pState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorSetLayout parameter, VkDescriptorSetLayout* pSetLayout, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDescriptorSetLayout parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateDynamicViewportState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5729,30 +5868,30 @@ bool PostCreateDescriptorSetLayout( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout( +VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicViewportState( VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayout* pSetLayout) + const VkDynamicViewportStateCreateInfo* pCreateInfo, + VkDynamicViewportState* pState) { - PreCreateDescriptorSetLayout(device, pCreateInfo); + PreCreateDynamicViewportState(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicViewportState(device, pCreateInfo, pState); - PostCreateDescriptorSetLayout(device, pSetLayout, result); + PostCreateDynamicViewportState(device, pState, result); return result; } -bool PostDestroyDescriptorSetLayout( +bool PostDestroyDynamicViewportState( VkDevice device, - VkDescriptorSetLayout descriptorSetLayout, + VkDynamicViewportState dynamicViewportState, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDescriptorSetLayout parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyDynamicViewportState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5760,78 +5899,47 @@ bool PostDestroyDescriptorSetLayout( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState( VkDevice device, - VkDescriptorSetLayout descriptorSetLayout) + VkDynamicViewportState dynamicViewportState) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDescriptorSetLayout(device, descriptorSetLayout); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicViewportState(device, dynamicViewportState); - PostDestroyDescriptorSetLayout(device, descriptorSetLayout, result); + PostDestroyDynamicViewportState(device, dynamicViewportState, result); return result; } -bool PreCreateDescriptorPool( +bool PreCreateDynamicRasterState( VkDevice device, - const VkDescriptorPoolCreateInfo* pCreateInfo) + const VkDynamicRasterStateCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, const VkDescriptorPoolCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pTypeCount == nullptr) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, const VkDescriptorTypeCount* pCreateInfo->pTypeCount, is null pointer"); + "vkCreateDynamicRasterState parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pTypeCount->type < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || - pCreateInfo->pTypeCount->type > VK_DESCRIPTOR_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, VkDescriptorType pCreateInfo->pTypeCount->type, is unrecognized enumerator"); - return false; } return true; } -bool PostCreateDescriptorPool( +bool PostCreateDynamicRasterState( VkDevice device, - VkDescriptorPoolUsage poolUsage, - uint32_t maxSets, - VkDescriptorPool* pDescriptorPool, + VkDynamicRasterState* pState, VkResult result) { - if(poolUsage < VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE || - poolUsage > VK_DESCRIPTOR_POOL_USAGE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, VkDescriptorPoolUsage poolUsage, is unrecognized enumerator"); - return false; - } - - - if(pDescriptorPool == nullptr) + if(pState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDescriptorPool parameter, VkDescriptorPool* pDescriptorPool, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateDynamicRasterState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5839,32 +5947,30 @@ bool PostCreateDescriptorPool( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool( +VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicRasterState( VkDevice device, - VkDescriptorPoolUsage poolUsage, - uint32_t maxSets, - const VkDescriptorPoolCreateInfo* pCreateInfo, - VkDescriptorPool* pDescriptorPool) + const VkDynamicRasterStateCreateInfo* pCreateInfo, + VkDynamicRasterState* pState) { - PreCreateDescriptorPool(device, pCreateInfo); + PreCreateDynamicRasterState(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicRasterState(device, pCreateInfo, pState); - PostCreateDescriptorPool(device, poolUsage, maxSets, pDescriptorPool, result); + PostCreateDynamicRasterState(device, pState, result); return result; } -bool PostDestroyDescriptorPool( +bool PostDestroyDynamicRasterState( VkDevice device, - VkDescriptorPool descriptorPool, + VkDynamicRasterState dynamicRasterState, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyDynamicRasterState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5872,96 +5978,47 @@ bool PostDestroyDescriptorPool( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDescriptorPool( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState( VkDevice device, - VkDescriptorPool descriptorPool) + VkDynamicRasterState dynamicRasterState) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDescriptorPool(device, descriptorPool); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicRasterState(device, dynamicRasterState); - PostDestroyDescriptorPool(device, descriptorPool, result); + PostDestroyDynamicRasterState(device, dynamicRasterState, result); return result; } -bool PostResetDescriptorPool( +bool PreCreateDynamicColorBlendState( VkDevice device, - VkDescriptorPool descriptorPool, - VkResult result) + const VkDynamicColorBlendStateCreateInfo* pCreateInfo) { - - - if(result != VK_SUCCESS) + if(pCreateInfo != nullptr) { - std::string reason = "vkResetDescriptorPool parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } - - return true; -} - -VK_LAYER_EXPORT VkResult VKAPI vkResetDescriptorPool( - VkDevice device, - VkDescriptorPool descriptorPool) -{ - VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetDescriptorPool(device, descriptorPool); - - PostResetDescriptorPool(device, descriptorPool, result); - - return result; -} - -bool PreAllocDescriptorSets( - VkDevice device, - const VkDescriptorSetLayout* pSetLayouts) -{ - if(pSetLayouts == nullptr) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocDescriptorSets parameter, const VkDescriptorSetLayout* pSetLayouts, is null pointer"); + "vkCreateDynamicColorBlendState parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } + } return true; } -bool PostAllocDescriptorSets( +bool PostCreateDynamicColorBlendState( VkDevice device, - VkDescriptorPool descriptorPool, - VkDescriptorSetUsage setUsage, - uint32_t count, - VkDescriptorSet* pDescriptorSets, - uint32_t* pCount, + VkDynamicColorBlendState* pState, VkResult result) { - - if(setUsage < VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE || - setUsage > VK_DESCRIPTOR_SET_USAGE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocDescriptorSets parameter, VkDescriptorSetUsage setUsage, is unrecognized enumerator"); - return false; - } - - - if(pDescriptorSets == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocDescriptorSets parameter, VkDescriptorSet* pDescriptorSets, is null pointer"); - return false; - } - - if(pCount == nullptr) + if(pState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkAllocDescriptorSets parameter, uint32_t* pCount, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkAllocDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateDynamicColorBlendState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -5969,92 +6026,30 @@ bool PostAllocDescriptorSets( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets( +VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState( VkDevice device, - VkDescriptorPool descriptorPool, - VkDescriptorSetUsage setUsage, - uint32_t count, - const VkDescriptorSetLayout* pSetLayouts, - VkDescriptorSet* pDescriptorSets, - uint32_t* pCount) + const VkDynamicColorBlendStateCreateInfo* pCreateInfo, + VkDynamicColorBlendState* pState) { - PreAllocDescriptorSets(device, pSetLayouts); + PreCreateDynamicColorBlendState(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicColorBlendState(device, pCreateInfo, pState); - PostAllocDescriptorSets(device, descriptorPool, setUsage, count, pDescriptorSets, pCount, result); + PostCreateDynamicColorBlendState(device, pState, result); return result; } -bool PreUpdateDescriptorSets( - VkDevice device, - const VkWriteDescriptorSet* pDescriptorWrites, - const VkCopyDescriptorSet* pDescriptorCopies) -{ - if(pDescriptorWrites == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, const VkWriteDescriptorSet* pDescriptorWrites, is null pointer"); - return false; - } - if(pDescriptorWrites->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pDescriptorWrites->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorWrites->sType, is unrecognized enumerator"); - return false; - } - if(pDescriptorWrites->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE || - pDescriptorWrites->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, VkDescriptorType pDescriptorWrites->descriptorType, is unrecognized enumerator"); - return false; - } - if(pDescriptorWrites->pDescriptors == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, const VkDescriptorInfo* pDescriptorWrites->pDescriptors, is null pointer"); - return false; - } - if(pDescriptorWrites->pDescriptors->imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || - pDescriptorWrites->pDescriptors->imageLayout > VK_IMAGE_LAYOUT_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, VkImageLayout pDescriptorWrites->pDescriptors->imageLayout, is unrecognized enumerator"); - return false; - } - - if(pDescriptorCopies == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, const VkCopyDescriptorSet* pDescriptorCopies, is null pointer"); - return false; - } - if(pDescriptorCopies->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pDescriptorCopies->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorCopies->sType, is unrecognized enumerator"); - return false; - } - - return true; -} - -bool PostUpdateDescriptorSets( +bool PostDestroyDynamicColorBlendState( VkDevice device, - uint32_t writeCount, - uint32_t copyCount, + VkDynamicColorBlendState dynamicColorBlendState, VkResult result) { - - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkUpdateDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyDynamicColorBlendState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6062,71 +6057,47 @@ bool PostUpdateDescriptorSets( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkUpdateDescriptorSets( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState( VkDevice device, - uint32_t writeCount, - const VkWriteDescriptorSet* pDescriptorWrites, - uint32_t copyCount, - const VkCopyDescriptorSet* pDescriptorCopies) + VkDynamicColorBlendState dynamicColorBlendState) { - PreUpdateDescriptorSets(device, pDescriptorWrites, pDescriptorCopies); - - VkResult result = get_dispatch_table(pc_device_table_map, device)->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicColorBlendState(device, dynamicColorBlendState); - PostUpdateDescriptorSets(device, writeCount, copyCount, result); + PostDestroyDynamicColorBlendState(device, dynamicColorBlendState, result); return result; } -bool PreCreateDynamicViewportState( +bool PreCreateDynamicDepthStencilState( VkDevice device, - const VkDynamicViewportStateCreateInfo* pCreateInfo) -{ - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicViewportState parameter, const VkDynamicViewportStateCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + const VkDynamicDepthStencilStateCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicViewportState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pViewports == nullptr) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicViewportState parameter, const VkViewport* pCreateInfo->pViewports, is null pointer"); + "vkCreateDynamicDepthStencilState parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->pScissors == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicViewportState parameter, const VkRect2D* pCreateInfo->pScissors, is null pointer"); - return false; } return true; } -bool PostCreateDynamicViewportState( +bool PostCreateDynamicDepthStencilState( VkDevice device, - VkDynamicViewportState* pState, + VkDynamicDepthStencilState* pState, VkResult result) { - if(pState == nullptr) + if(pState != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicViewportState parameter, VkDynamicViewportState* pState, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDynamicViewportState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateDynamicDepthStencilState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6134,30 +6105,30 @@ bool PostCreateDynamicViewportState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicViewportState( +VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState( VkDevice device, - const VkDynamicViewportStateCreateInfo* pCreateInfo, - VkDynamicViewportState* pState) + const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, + VkDynamicDepthStencilState* pState) { - PreCreateDynamicViewportState(device, pCreateInfo); + PreCreateDynamicDepthStencilState(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicViewportState(device, pCreateInfo, pState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicDepthStencilState(device, pCreateInfo, pState); - PostCreateDynamicViewportState(device, pState, result); + PostCreateDynamicDepthStencilState(device, pState, result); return result; } -bool PostDestroyDynamicViewportState( +bool PostDestroyDynamicDepthStencilState( VkDevice device, - VkDynamicViewportState dynamicViewportState, + VkDynamicDepthStencilState dynamicDepthStencilState, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDynamicViewportState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyDynamicDepthStencilState parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6165,54 +6136,57 @@ bool PostDestroyDynamicViewportState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState( VkDevice device, - VkDynamicViewportState dynamicViewportState) + VkDynamicDepthStencilState dynamicDepthStencilState) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicViewportState(device, dynamicViewportState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState); - PostDestroyDynamicViewportState(device, dynamicViewportState, result); + PostDestroyDynamicDepthStencilState(device, dynamicDepthStencilState, result); return result; } -bool PreCreateDynamicRasterState( +bool PreCreateFramebuffer( VkDevice device, - const VkDynamicRasterStateCreateInfo* pCreateInfo) + const VkFramebufferCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicRasterState parameter, const VkDynamicRasterStateCreateInfo* pCreateInfo, is null pointer"); + "vkCreateFramebuffer parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->pAttachments != nullptr) + { + if(pCreateInfo->pAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicRasterState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateFramebuffer parameter, VkImageLayout pCreateInfo->pAttachments->layout, is an unrecognized enumerator"); return false; } + } + } return true; } -bool PostCreateDynamicRasterState( +bool PostCreateFramebuffer( VkDevice device, - VkDynamicRasterState* pState, + VkFramebuffer* pFramebuffer, VkResult result) { - if(pState == nullptr) + if(pFramebuffer != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicRasterState parameter, VkDynamicRasterState* pState, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDynamicRasterState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateFramebuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6220,30 +6194,30 @@ bool PostCreateDynamicRasterState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicRasterState( +VK_LAYER_EXPORT VkResult VKAPI vkCreateFramebuffer( VkDevice device, - const VkDynamicRasterStateCreateInfo* pCreateInfo, - VkDynamicRasterState* pState) + const VkFramebufferCreateInfo* pCreateInfo, + VkFramebuffer* pFramebuffer) { - PreCreateDynamicRasterState(device, pCreateInfo); + PreCreateFramebuffer(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicRasterState(device, pCreateInfo, pState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateFramebuffer(device, pCreateInfo, pFramebuffer); - PostCreateDynamicRasterState(device, pState, result); + PostCreateFramebuffer(device, pFramebuffer, result); return result; } -bool PostDestroyDynamicRasterState( +bool PostDestroyFramebuffer( VkDevice device, - VkDynamicRasterState dynamicRasterState, + VkFramebuffer framebuffer, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDynamicRasterState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyFramebuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6251,54 +6225,177 @@ bool PostDestroyDynamicRasterState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyFramebuffer( VkDevice device, - VkDynamicRasterState dynamicRasterState) + VkFramebuffer framebuffer) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicRasterState(device, dynamicRasterState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyFramebuffer(device, framebuffer); - PostDestroyDynamicRasterState(device, dynamicRasterState, result); + PostDestroyFramebuffer(device, framebuffer, result); return result; } -bool PreCreateDynamicColorBlendState( +bool PreCreateRenderPass( VkDevice device, - const VkDynamicColorBlendStateCreateInfo* pCreateInfo) + const VkRenderPassCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); + return false; + } + if(pCreateInfo->pAttachments != nullptr) + { + if(pCreateInfo->pAttachments->sType != VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pAttachments->sType, is an invalid enumerator"); + return false; + } + if(pCreateInfo->pAttachments->format < VK_FORMAT_BEGIN_RANGE || + pCreateInfo->pAttachments->format > VK_FORMAT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkFormat pCreateInfo->pAttachments->format, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->loadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE || + pCreateInfo->pAttachments->loadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkAttachmentLoadOp pCreateInfo->pAttachments->loadOp, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->storeOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE || + pCreateInfo->pAttachments->storeOp > VK_ATTACHMENT_STORE_OP_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkAttachmentStoreOp pCreateInfo->pAttachments->storeOp, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->stencilLoadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE || + pCreateInfo->pAttachments->stencilLoadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkAttachmentLoadOp pCreateInfo->pAttachments->stencilLoadOp, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->stencilStoreOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE || + pCreateInfo->pAttachments->stencilStoreOp > VK_ATTACHMENT_STORE_OP_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkAttachmentStoreOp pCreateInfo->pAttachments->stencilStoreOp, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->initialLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pAttachments->initialLayout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pAttachments->initialLayout, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pAttachments->finalLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pAttachments->finalLayout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pAttachments->finalLayout, is an unrecognized enumerator"); + return false; + } + } + if(pCreateInfo->pSubpasses != nullptr) + { + if(pCreateInfo->pSubpasses->sType != VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pSubpasses->sType, is an invalid enumerator"); + return false; + } + if(pCreateInfo->pSubpasses->pipelineBindPoint < VK_PIPELINE_BIND_POINT_BEGIN_RANGE || + pCreateInfo->pSubpasses->pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkPipelineBindPoint pCreateInfo->pSubpasses->pipelineBindPoint, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pSubpasses->inputAttachments != nullptr) + { + if(pCreateInfo->pSubpasses->inputAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pSubpasses->inputAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->inputAttachments->layout, is an unrecognized enumerator"); + return false; + } + } + if(pCreateInfo->pSubpasses->colorAttachments != nullptr) + { + if(pCreateInfo->pSubpasses->colorAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pSubpasses->colorAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->colorAttachments->layout, is an unrecognized enumerator"); + return false; + } + } + if(pCreateInfo->pSubpasses->resolveAttachments != nullptr) + { + if(pCreateInfo->pSubpasses->resolveAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pSubpasses->resolveAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->resolveAttachments->layout, is an unrecognized enumerator"); + return false; + } + } + if(pCreateInfo->pSubpasses->depthStencilAttachment.layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pSubpasses->depthStencilAttachment.layout > VK_IMAGE_LAYOUT_END_RANGE) + { + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->depthStencilAttachment.layout, is an unrecognized enumerator"); + return false; + } + if(pCreateInfo->pSubpasses->preserveAttachments != nullptr) + { + if(pCreateInfo->pSubpasses->preserveAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pCreateInfo->pSubpasses->preserveAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicColorBlendState parameter, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, is null pointer"); + "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->preserveAttachments->layout, is an unrecognized enumerator"); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + } + } + if(pCreateInfo->pDependencies != nullptr) + { + if(pCreateInfo->pDependencies->sType != VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicColorBlendState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pDependencies->sType, is an invalid enumerator"); return false; } + } + } return true; } -bool PostCreateDynamicColorBlendState( +bool PostCreateRenderPass( VkDevice device, - VkDynamicColorBlendState* pState, + VkRenderPass* pRenderPass, VkResult result) { - if(pState == nullptr) + if(pRenderPass != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicColorBlendState parameter, VkDynamicColorBlendState* pState, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDynamicColorBlendState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateRenderPass parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6306,30 +6403,30 @@ bool PostCreateDynamicColorBlendState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState( +VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass( VkDevice device, - const VkDynamicColorBlendStateCreateInfo* pCreateInfo, - VkDynamicColorBlendState* pState) + const VkRenderPassCreateInfo* pCreateInfo, + VkRenderPass* pRenderPass) { - PreCreateDynamicColorBlendState(device, pCreateInfo); + PreCreateRenderPass(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicColorBlendState(device, pCreateInfo, pState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateRenderPass(device, pCreateInfo, pRenderPass); - PostCreateDynamicColorBlendState(device, pState, result); + PostCreateRenderPass(device, pRenderPass, result); return result; } -bool PostDestroyDynamicColorBlendState( +bool PostDestroyRenderPass( VkDevice device, - VkDynamicColorBlendState dynamicColorBlendState, + VkRenderPass renderPass, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDynamicColorBlendState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyRenderPass parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6337,54 +6434,81 @@ bool PostDestroyDynamicColorBlendState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyRenderPass( VkDevice device, - VkDynamicColorBlendState dynamicColorBlendState) + VkRenderPass renderPass) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicColorBlendState(device, dynamicColorBlendState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyRenderPass(device, renderPass); - PostDestroyDynamicColorBlendState(device, dynamicColorBlendState, result); + PostDestroyRenderPass(device, renderPass, result); return result; } -bool PreCreateDynamicDepthStencilState( +bool PostGetRenderAreaGranularity( VkDevice device, - const VkDynamicDepthStencilStateCreateInfo* pCreateInfo) + VkRenderPass renderPass, + VkExtent2D* pGranularity, + VkResult result) { - if(pCreateInfo == nullptr) + + + if(pGranularity != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicDepthStencilState parameter, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, is null pointer"); + } + + if(result < VK_SUCCESS) + { + std::string reason = "vkGetRenderAreaGranularity parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkGetRenderAreaGranularity( + VkDevice device, + VkRenderPass renderPass, + VkExtent2D* pGranularity) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->GetRenderAreaGranularity(device, renderPass, pGranularity); + + PostGetRenderAreaGranularity(device, renderPass, pGranularity, result); + + return result; +} + +bool PreCreateCommandPool( + VkDevice device, + const VkCmdPoolCreateInfo* pCreateInfo) +{ + if(pCreateInfo != nullptr) + { + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicDepthStencilState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateCommandPool parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } + } return true; } -bool PostCreateDynamicDepthStencilState( +bool PostCreateCommandPool( VkDevice device, - VkDynamicDepthStencilState* pState, + VkCmdPool* pCmdPool, VkResult result) { - if(pState == nullptr) + if(pCmdPool != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateDynamicDepthStencilState parameter, VkDynamicDepthStencilState* pState, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkCreateDynamicDepthStencilState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkCreateCommandPool parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6392,30 +6516,30 @@ bool PostCreateDynamicDepthStencilState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState( +VK_LAYER_EXPORT VkResult VKAPI vkCreateCommandPool( VkDevice device, - const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, - VkDynamicDepthStencilState* pState) + const VkCmdPoolCreateInfo* pCreateInfo, + VkCmdPool* pCmdPool) { - PreCreateDynamicDepthStencilState(device, pCreateInfo); + PreCreateCommandPool(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicDepthStencilState(device, pCreateInfo, pState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateCommandPool(device, pCreateInfo, pCmdPool); - PostCreateDynamicDepthStencilState(device, pState, result); + PostCreateCommandPool(device, pCmdPool, result); return result; } -bool PostDestroyDynamicDepthStencilState( +bool PostDestroyCommandPool( VkDevice device, - VkDynamicDepthStencilState dynamicDepthStencilState, + VkCmdPool cmdPool, VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { - std::string reason = "vkDestroyDynamicDepthStencilState parameter, VkResult result, is " + EnumeratorString(result); + std::string reason = "vkDestroyCommandPool parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); return false; } @@ -6423,13 +6547,44 @@ bool PostDestroyDynamicDepthStencilState( return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState( +VK_LAYER_EXPORT VkResult VKAPI vkDestroyCommandPool( VkDevice device, - VkDynamicDepthStencilState dynamicDepthStencilState) + VkCmdPool cmdPool) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState); + VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyCommandPool(device, cmdPool); - PostDestroyDynamicDepthStencilState(device, dynamicDepthStencilState, result); + PostDestroyCommandPool(device, cmdPool, result); + + return result; +} + +bool PostResetCommandPool( + VkDevice device, + VkCmdPool cmdPool, + VkCmdPoolResetFlags flags, + VkResult result) +{ + + + + if(result < VK_SUCCESS) + { + std::string reason = "vkResetCommandPool parameter, VkResult result, is " + EnumeratorString(result); + log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); + return false; + } + + return true; +} + +VK_LAYER_EXPORT VkResult VKAPI vkResetCommandPool( + VkDevice device, + VkCmdPool cmdPool, + VkCmdPoolResetFlags flags) +{ + VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetCommandPool(device, cmdPool, flags); + + PostResetCommandPool(device, cmdPool, flags, result); return result; } @@ -6438,26 +6593,22 @@ bool PreCreateCommandBuffer( VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo) { - if(pCreateInfo == nullptr) + if(pCreateInfo != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateCommandBuffer parameter, const VkCmdBufferCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pCreateInfo->sType != VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateCommandBuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + "vkCreateCommandBuffer parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator"); return false; } if(pCreateInfo->level < VK_CMD_BUFFER_LEVEL_BEGIN_RANGE || pCreateInfo->level > VK_CMD_BUFFER_LEVEL_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateCommandBuffer parameter, VkCmdBufferLevel pCreateInfo->level, is unrecognized enumerator"); + "vkCreateCommandBuffer parameter, VkCmdBufferLevel pCreateInfo->level, is an unrecognized enumerator"); return false; } + } return true; } @@ -6468,14 +6619,11 @@ bool PostCreateCommandBuffer( VkResult result) { - if(pCmdBuffer == nullptr) + if(pCmdBuffer != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateCommandBuffer parameter, VkCmdBuffer* pCmdBuffer, is null pointer"); - return false; } - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkCreateCommandBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -6506,7 +6654,7 @@ bool PostDestroyCommandBuffer( { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkDestroyCommandBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -6531,24 +6679,14 @@ bool PreBeginCommandBuffer( VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { - if(pBeginInfo == nullptr) + if(pBeginInfo != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkBeginCommandBuffer parameter, const VkCmdBufferBeginInfo* pBeginInfo, is null pointer"); - return false; - } - if(pBeginInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pBeginInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pBeginInfo->sType != VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkBeginCommandBuffer parameter, VkStructureType pBeginInfo->sType, is unrecognized enumerator"); + "vkBeginCommandBuffer parameter, VkStructureType pBeginInfo->sType, is an invalid enumerator"); return false; } - if(!ValidateEnumerator((VkCmdBufferOptimizeFlagBits)pBeginInfo->flags)) - { - std::string reason = "vkBeginCommandBuffer parameter, VkCmdBufferOptimizeFlags pBeginInfo->flags, is " + EnumeratorString((VkCmdBufferOptimizeFlagBits)pBeginInfo->flags); - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; @@ -6559,7 +6697,7 @@ bool PostBeginCommandBuffer( VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkBeginCommandBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -6587,7 +6725,7 @@ bool PostEndCommandBuffer( VkResult result) { - if(result != VK_SUCCESS) + if(result < VK_SUCCESS) { std::string reason = "vkEndCommandBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -6609,10 +6747,12 @@ VK_LAYER_EXPORT VkResult VKAPI vkEndCommandBuffer( bool PostResetCommandBuffer( VkCmdBuffer cmdBuffer, + VkCmdBufferResetFlags flags, VkResult result) { - if(result != VK_SUCCESS) + + if(result < VK_SUCCESS) { std::string reason = "vkResetCommandBuffer parameter, VkResult result, is " + EnumeratorString(result); log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); @@ -6628,7 +6768,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkResetCommandBuffer( { VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->ResetCommandBuffer(cmdBuffer, flags); - PostResetCommandBuffer(cmdBuffer, result); + PostResetCommandBuffer(cmdBuffer, flags, result); return result; } @@ -6643,7 +6783,7 @@ bool PostCmdBindPipeline( pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindPipeline parameter, VkPipelineBindPoint pipelineBindPoint, is unrecognized enumerator"); + "vkCmdBindPipeline parameter, VkPipelineBindPoint pipelineBindPoint, is an unrecognized enumerator"); return false; } @@ -6738,13 +6878,13 @@ bool PreCmdBindDescriptorSets( const VkDescriptorSet* pDescriptorSets, const uint32_t* pDynamicOffsets) { - if(pDescriptorSets == nullptr) + if(pDescriptorSets != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindDescriptorSets parameter, const VkDescriptorSet* pDescriptorSets, is null pointer"); - return false; } + if(pDynamicOffsets != nullptr) + { + } return true; } @@ -6762,7 +6902,7 @@ bool PostCmdBindDescriptorSets( pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindDescriptorSets parameter, VkPipelineBindPoint pipelineBindPoint, is unrecognized enumerator"); + "vkCmdBindDescriptorSets parameter, VkPipelineBindPoint pipelineBindPoint, is an unrecognized enumerator"); return false; } @@ -6803,7 +6943,7 @@ bool PostCmdBindIndexBuffer( indexType > VK_INDEX_TYPE_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindIndexBuffer parameter, VkIndexType indexType, is unrecognized enumerator"); + "vkCmdBindIndexBuffer parameter, VkIndexType indexType, is an unrecognized enumerator"); return false; } @@ -6826,18 +6966,12 @@ bool PreCmdBindVertexBuffers( const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { - if(pBuffers == nullptr) + if(pBuffers != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindVertexBuffers parameter, const VkBuffer* pBuffers, is null pointer"); - return false; } - if(pOffsets == nullptr) + if(pOffsets != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBindVertexBuffers parameter, const VkDeviceSize* pOffsets, is null pointer"); - return false; } return true; @@ -7028,11 +7162,8 @@ bool PreCmdCopyBuffer( VkCmdBuffer cmdBuffer, const VkBufferCopy* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyBuffer parameter, const VkBufferCopy* pRegions, is null pointer"); - return false; } return true; @@ -7069,26 +7200,23 @@ bool PreCmdCopyImage( VkCmdBuffer cmdBuffer, const VkImageCopy* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImage parameter, const VkImageCopy* pRegions, is null pointer"); - return false; - } if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator"); + "vkCmdCopyImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is an unrecognized enumerator"); return false; } if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator"); + "vkCmdCopyImage parameter, VkImageAspect pRegions->destSubresource.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7107,7 +7235,7 @@ bool PostCmdCopyImage( srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator"); + "vkCmdCopyImage parameter, VkImageLayout srcImageLayout, is an unrecognized enumerator"); return false; } @@ -7116,7 +7244,7 @@ bool PostCmdCopyImage( destImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator"); + "vkCmdCopyImage parameter, VkImageLayout destImageLayout, is an unrecognized enumerator"); return false; } @@ -7144,26 +7272,23 @@ bool PreCmdBlitImage( VkCmdBuffer cmdBuffer, const VkImageBlit* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, const VkImageBlit* pRegions, is null pointer"); - return false; - } if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator"); + "vkCmdBlitImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is an unrecognized enumerator"); return false; } if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator"); + "vkCmdBlitImage parameter, VkImageAspect pRegions->destSubresource.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7183,7 +7308,7 @@ bool PostCmdBlitImage( srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator"); + "vkCmdBlitImage parameter, VkImageLayout srcImageLayout, is an unrecognized enumerator"); return false; } @@ -7192,7 +7317,7 @@ bool PostCmdBlitImage( destImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator"); + "vkCmdBlitImage parameter, VkImageLayout destImageLayout, is an unrecognized enumerator"); return false; } @@ -7201,7 +7326,7 @@ bool PostCmdBlitImage( filter > VK_TEX_FILTER_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBlitImage parameter, VkTexFilter filter, is unrecognized enumerator"); + "vkCmdBlitImage parameter, VkTexFilter filter, is an unrecognized enumerator"); return false; } @@ -7229,19 +7354,16 @@ bool PreCmdCopyBufferToImage( VkCmdBuffer cmdBuffer, const VkBufferImageCopy* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyBufferToImage parameter, const VkBufferImageCopy* pRegions, is null pointer"); - return false; - } if(pRegions->imageSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->imageSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyBufferToImage parameter, VkImageAspect pRegions->imageSubresource.aspect, is unrecognized enumerator"); + "vkCmdCopyBufferToImage parameter, VkImageAspect pRegions->imageSubresource.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7260,7 +7382,7 @@ bool PostCmdCopyBufferToImage( destImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyBufferToImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator"); + "vkCmdCopyBufferToImage parameter, VkImageLayout destImageLayout, is an unrecognized enumerator"); return false; } @@ -7287,19 +7409,16 @@ bool PreCmdCopyImageToBuffer( VkCmdBuffer cmdBuffer, const VkBufferImageCopy* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImageToBuffer parameter, const VkBufferImageCopy* pRegions, is null pointer"); - return false; - } if(pRegions->imageSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->imageSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImageToBuffer parameter, VkImageAspect pRegions->imageSubresource.aspect, is unrecognized enumerator"); + "vkCmdCopyImageToBuffer parameter, VkImageAspect pRegions->imageSubresource.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7317,7 +7436,7 @@ bool PostCmdCopyImageToBuffer( srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdCopyImageToBuffer parameter, VkImageLayout srcImageLayout, is unrecognized enumerator"); + "vkCmdCopyImageToBuffer parameter, VkImageLayout srcImageLayout, is an unrecognized enumerator"); return false; } @@ -7345,11 +7464,8 @@ bool PreCmdUpdateBuffer( VkCmdBuffer cmdBuffer, const uint32_t* pData) { - if(pData == nullptr) + if(pData != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdUpdateBuffer parameter, const uint32_t* pData, is null pointer"); - return false; } return true; @@ -7414,26 +7530,20 @@ bool PreCmdClearColorImage( const VkClearColorValue* pColor, const VkImageSubresourceRange* pRanges) { - if(pColor == nullptr) + if(pColor != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorImage parameter, const VkClearColorValue* pColor, is null pointer"); - return false; } - if(pRanges == nullptr) + if(pRanges != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorImage parameter, const VkImageSubresourceRange* pRanges, is null pointer"); - return false; - } if(pRanges->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRanges->aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorImage parameter, VkImageAspect pRanges->aspect, is unrecognized enumerator"); + "vkCmdClearColorImage parameter, VkImageAspect pRanges->aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7450,7 +7560,7 @@ bool PostCmdClearColorImage( imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorImage parameter, VkImageLayout imageLayout, is unrecognized enumerator"); + "vkCmdClearColorImage parameter, VkImageLayout imageLayout, is an unrecognized enumerator"); return false; } @@ -7477,19 +7587,16 @@ bool PreCmdClearDepthStencilImage( VkCmdBuffer cmdBuffer, const VkImageSubresourceRange* pRanges) { - if(pRanges == nullptr) + if(pRanges != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearDepthStencilImage parameter, const VkImageSubresourceRange* pRanges, is null pointer"); - return false; - } if(pRanges->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRanges->aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearDepthStencilImage parameter, VkImageAspect pRanges->aspect, is unrecognized enumerator"); + "vkCmdClearDepthStencilImage parameter, VkImageAspect pRanges->aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7508,7 +7615,7 @@ bool PostCmdClearDepthStencilImage( imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearDepthStencilImage parameter, VkImageLayout imageLayout, is unrecognized enumerator"); + "vkCmdClearDepthStencilImage parameter, VkImageLayout imageLayout, is an unrecognized enumerator"); return false; } @@ -7539,18 +7646,12 @@ bool PreCmdClearColorAttachment( const VkClearColorValue* pColor, const VkRect3D* pRects) { - if(pColor == nullptr) + if(pColor != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorAttachment parameter, const VkClearColorValue* pColor, is null pointer"); - return false; } - if(pRects == nullptr) + if(pRects != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorAttachment parameter, const VkRect3D* pRects, is null pointer"); - return false; } return true; @@ -7568,7 +7669,7 @@ bool PostCmdClearColorAttachment( imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearColorAttachment parameter, VkImageLayout imageLayout, is unrecognized enumerator"); + "vkCmdClearColorAttachment parameter, VkImageLayout imageLayout, is an unrecognized enumerator"); return false; } @@ -7595,11 +7696,8 @@ bool PreCmdClearDepthStencilAttachment( VkCmdBuffer cmdBuffer, const VkRect3D* pRects) { - if(pRects == nullptr) + if(pRects != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearDepthStencilAttachment parameter, const VkRect3D* pRects, is null pointer"); - return false; } return true; @@ -7614,18 +7712,12 @@ bool PostCmdClearDepthStencilAttachment( uint32_t rectCount) { - if(!ValidateEnumerator((VkImageAspectFlagBits)imageAspectMask)) - { - std::string reason = "vkCmdClearDepthStencilAttachment parameter, VkImageAspectFlags imageAspectMask, is " + EnumeratorString((VkImageAspectFlagBits)imageAspectMask); - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } if(imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdClearDepthStencilAttachment parameter, VkImageLayout imageLayout, is unrecognized enumerator"); + "vkCmdClearDepthStencilAttachment parameter, VkImageLayout imageLayout, is an unrecognized enumerator"); return false; } @@ -7655,26 +7747,23 @@ bool PreCmdResolveImage( VkCmdBuffer cmdBuffer, const VkImageResolve* pRegions) { - if(pRegions == nullptr) + if(pRegions != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdResolveImage parameter, const VkImageResolve* pRegions, is null pointer"); - return false; - } if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdResolveImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator"); + "vkCmdResolveImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is an unrecognized enumerator"); return false; } if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE || pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdResolveImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator"); + "vkCmdResolveImage parameter, VkImageAspect pRegions->destSubresource.aspect, is an unrecognized enumerator"); return false; } + } return true; } @@ -7693,7 +7782,7 @@ bool PostCmdResolveImage( srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdResolveImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator"); + "vkCmdResolveImage parameter, VkImageLayout srcImageLayout, is an unrecognized enumerator"); return false; } @@ -7702,7 +7791,7 @@ bool PostCmdResolveImage( destImageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdResolveImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator"); + "vkCmdResolveImage parameter, VkImageLayout destImageLayout, is an unrecognized enumerator"); return false; } @@ -7773,18 +7862,12 @@ bool PreCmdWaitEvents( const VkEvent* pEvents, const void* const* ppMemBarriers) { - if(pEvents == nullptr) + if(pEvents != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdWaitEvents parameter, const VkEvent* pEvents, is null pointer"); - return false; } - if(ppMemBarriers == nullptr) + if(ppMemBarriers != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdWaitEvents parameter, const void** ppMemBarriers, is null pointer"); - return false; } return true; @@ -7793,7 +7876,7 @@ bool PreCmdWaitEvents( bool PostCmdWaitEvents( VkCmdBuffer cmdBuffer, uint32_t eventCount, - VkPipelineStageFlags sourceStageMask, + VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount) { @@ -7809,27 +7892,24 @@ VK_LAYER_EXPORT void VKAPI vkCmdWaitEvents( VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, - VkPipelineStageFlags sourceStageMask, + VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) { PreCmdWaitEvents(cmdBuffer, pEvents, ppMemBarriers); - get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers); + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, eventCount, pEvents, srcStageMask, destStageMask, memBarrierCount, ppMemBarriers); - PostCmdWaitEvents(cmdBuffer, eventCount, sourceStageMask, destStageMask, memBarrierCount); + PostCmdWaitEvents(cmdBuffer, eventCount, srcStageMask, destStageMask, memBarrierCount); } bool PreCmdPipelineBarrier( VkCmdBuffer cmdBuffer, const void* const* ppMemBarriers) { - if(ppMemBarriers == nullptr) + if(ppMemBarriers != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdPipelineBarrier parameter, const void** ppMemBarriers, is null pointer"); - return false; } return true; @@ -7874,12 +7954,6 @@ bool PostCmdBeginQuery( - if(!ValidateEnumerator((VkQueryControlFlagBits)flags)) - { - std::string reason = "vkCmdBeginQuery parameter, VkQueryControlFlags flags, is " + EnumeratorString((VkQueryControlFlagBits)flags); - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } return true; } @@ -7951,7 +8025,7 @@ bool PostCmdWriteTimestamp( timestampType > VK_TIMESTAMP_TYPE_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdWriteTimestamp parameter, VkTimestampType timestampType, is unrecognized enumerator"); + "vkCmdWriteTimestamp parameter, VkTimestampType timestampType, is an unrecognized enumerator"); return false; } @@ -7988,12 +8062,6 @@ bool PostCmdCopyQueryPoolResults( - if(!ValidateEnumerator((VkQueryResultFlagBits)flags)) - { - std::string reason = "vkCmdCopyQueryPoolResults parameter, VkQueryResultFlags flags, is " + EnumeratorString((VkQueryResultFlagBits)flags); - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } return true; } @@ -8013,297 +8081,141 @@ VK_LAYER_EXPORT void VKAPI vkCmdCopyQueryPoolResults( PostCmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags); } -bool PreCreateFramebuffer( - VkDevice device, - const VkFramebufferCreateInfo* pCreateInfo) -{ - if(pCreateInfo == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, const VkFramebufferCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); - return false; - } - if(pCreateInfo->pAttachments == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, const VkAttachmentBindInfo* pCreateInfo->pAttachments, is null pointer"); - return false; - } - if(pCreateInfo->pAttachments->view.handle == 0) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, VkAttachmentView pCreateInfo->pAttachments->view, is null pointer"); - return false; - } - if(pCreateInfo->pAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || - pCreateInfo->pAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, VkImageLayout pCreateInfo->pAttachments->layout, is unrecognized enumerator"); - return false; - } - - return true; -} - -bool PostCreateFramebuffer( - VkDevice device, - VkFramebuffer* pFramebuffer, - VkResult result) +bool PreCmdPushConstants( + VkCmdBuffer cmdBuffer, + const void* values) { - - if(pFramebuffer == nullptr) - { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateFramebuffer parameter, VkFramebuffer* pFramebuffer, is null pointer"); - return false; - } - - if(result != VK_SUCCESS) + if(values != nullptr) { - std::string reason = "vkCreateFramebuffer parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateFramebuffer( - VkDevice device, - const VkFramebufferCreateInfo* pCreateInfo, - VkFramebuffer* pFramebuffer) +bool PostCmdPushConstants( + VkCmdBuffer cmdBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t start, + uint32_t length) { - PreCreateFramebuffer(device, pCreateInfo); - - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateFramebuffer(device, pCreateInfo, pFramebuffer); - PostCreateFramebuffer(device, pFramebuffer, result); - return result; -} -bool PostDestroyFramebuffer( - VkDevice device, - VkFramebuffer framebuffer, - VkResult result) -{ - if(result != VK_SUCCESS) - { - std::string reason = "vkDestroyFramebuffer parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; - } return true; } -VK_LAYER_EXPORT VkResult VKAPI vkDestroyFramebuffer( - VkDevice device, - VkFramebuffer framebuffer) +VK_LAYER_EXPORT void VKAPI vkCmdPushConstants( + VkCmdBuffer cmdBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t start, + uint32_t length, + const void* values) { - VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyFramebuffer(device, framebuffer); + PreCmdPushConstants(cmdBuffer, values); - PostDestroyFramebuffer(device, framebuffer, result); + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdPushConstants(cmdBuffer, layout, stageFlags, start, length, values); - return result; + PostCmdPushConstants(cmdBuffer, layout, stageFlags, start, length); } -bool PreCreateRenderPass( - VkDevice device, - const VkRenderPassCreateInfo* pCreateInfo) +bool PreCmdBeginRenderPass( + VkCmdBuffer cmdBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin) { - if(pCreateInfo == nullptr) + if(pRenderPassBegin != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, const VkRenderPassCreateInfo* pCreateInfo, is null pointer"); - return false; - } - if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE || - pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE) + if(pRenderPassBegin->sType != VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator"); + log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCmdBeginRenderPass parameter, VkStructureType pRenderPassBegin->sType, is an invalid enumerator"); return false; } - - for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) - { - const VkAttachmentDescription *att = &pCreateInfo->pAttachments[i]; - - if(att->format < VK_FORMAT_BEGIN_RANGE || att->format > VK_FORMAT_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkFormat in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - if(att->initialLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || att->initialLayout > VK_IMAGE_LAYOUT_END_RANGE || - att->finalLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || att->finalLayout > VK_IMAGE_LAYOUT_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkImageLayout in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - if(att->loadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE || att->loadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkAttachmentLoadOp in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - if(att->storeOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE || att->storeOp > VK_ATTACHMENT_STORE_OP_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkAttachmentStoreOp in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - if(att->stencilLoadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE || att->stencilLoadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkAttachmentLoadOp in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - if(att->stencilStoreOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE || att->stencilStoreOp > VK_ATTACHMENT_STORE_OP_END_RANGE) - { - log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkAttachmentStoreOp in pCreateInfo->pAttachments, is unrecognized enumerator"); - return false; - } - } - - return true; -} - -bool PostCreateRenderPass( - VkDevice device, - VkRenderPass* pRenderPass, - VkResult result) -{ - - if(pRenderPass == nullptr) + if(pRenderPassBegin->pAttachmentClearValues != nullptr) { - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkRenderPass* pRenderPass, is null pointer"); - return false; } - - if(result != VK_SUCCESS) - { - std::string reason = "vkCreateRenderPass parameter, VkResult result, is " + EnumeratorString(result); - log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str()); - return false; } return true; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass( - VkDevice device, - const VkRenderPassCreateInfo* pCreateInfo, - VkRenderPass* pRenderPass) -{ - PreCreateRenderPass(device, pCreateInfo); - - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateRenderPass(device, pCreateInfo, pRenderPass); - - PostCreateRenderPass(device, pRenderPass, result); - - return result; -} - -bool PreCmdBeginRenderPass( +bool PostCmdBeginRenderPass( VkCmdBuffer cmdBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) { - if(pRenderPassBegin == nullptr) - { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBeginRenderPass parameter, const VkRenderPassBegin* pRenderPassBegin, is null pointer"); - return false; - } + if(contents < VK_RENDER_PASS_CONTENTS_BEGIN_RANGE || - contents > VK_RENDER_PASS_CONTENTS_END_RANGE) + contents > VK_RENDER_PASS_CONTENTS_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBeginRenderPass parameter, VkRenderPassContents pRenderPassBegin->contents, is unrecognized enumerator"); + "vkCmdBeginRenderPass parameter, VkRenderPassContents contents, is an unrecognized enumerator"); return false; } return true; } -bool PostCmdBeginRenderPass( - VkCmdBuffer cmdBuffer) -{ - - return true; -} - VK_LAYER_EXPORT void VKAPI vkCmdBeginRenderPass( VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) { - PreCmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents); + PreCmdBeginRenderPass(cmdBuffer, pRenderPassBegin); + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents); - PostCmdBeginRenderPass(cmdBuffer); + PostCmdBeginRenderPass(cmdBuffer, contents); } -void PreCmdNextSubpass( +bool PostCmdNextSubpass( VkCmdBuffer cmdBuffer, VkRenderPassContents contents) { if(contents < VK_RENDER_PASS_CONTENTS_BEGIN_RANGE || - contents > VK_RENDER_PASS_CONTENTS_END_RANGE) + contents > VK_RENDER_PASS_CONTENTS_END_RANGE) { log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdBeginRenderPass parameter, VkRenderPassContents pRenderPassBegin->contents, is unrecognized enumerator"); - return; + "vkCmdNextSubpass parameter, VkRenderPassContents contents, is an unrecognized enumerator"); + return false; } - return; -} - -void PostCmdNextSubpass( - VkCmdBuffer cmdBuffer) -{ - if(cmdBuffer == nullptr) - { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdNextSubpass parameter, VkCmdBuffer cmdBuffer, is null pointer"); - return; - } + return true; } VK_LAYER_EXPORT void VKAPI vkCmdNextSubpass( VkCmdBuffer cmdBuffer, VkRenderPassContents contents) { - PreCmdNextSubpass(cmdBuffer, contents); get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdNextSubpass(cmdBuffer, contents); - PostCmdNextSubpass(cmdBuffer); + PostCmdNextSubpass(cmdBuffer, contents); +} + +bool PostCmdEndRenderPass( + VkCmdBuffer cmdBuffer) +{ + + return true; +} + +VK_LAYER_EXPORT void VKAPI vkCmdEndRenderPass( + VkCmdBuffer cmdBuffer) +{ + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdEndRenderPass(cmdBuffer); + + PostCmdEndRenderPass(cmdBuffer); } bool PreCmdExecuteCommands( VkCmdBuffer cmdBuffer, const VkCmdBuffer* pCmdBuffers) { - if(pCmdBuffers == nullptr) + if(pCmdBuffers != nullptr) { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdExecuteCommands parameter, VkCmdBuffer cmdBuffer, is null pointer"); - return false; } return true; @@ -8317,27 +8229,6 @@ bool PostCmdExecuteCommands( return true; } -void PreCmdExecuteCommands( - VkCmdBuffer cmdBuffer) -{ - if(cmdBuffer == nullptr) - { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdExecuteCommands parameter, VkCmdBuffer cmdBuffer, is null pointer"); - return; - } -} - -void PostCmdExecuteCommands( - VkCmdBuffer cmdBuffer) -{ - if(cmdBuffer == nullptr) - { - log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", - "vkCmdExecuteCommands parameter, VkCmdBuffer cmdBuffer, is null pointer"); - return; - } -} VK_LAYER_EXPORT void VKAPI vkCmdExecuteCommands( VkCmdBuffer cmdBuffer, -- cgit v1.2.3