diff options
| author | Tobin Ehlis <tobine@google.com> | 2017-07-24 14:58:09 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2017-07-27 16:53:34 -0600 |
| commit | c4ed8a408ef2f54ed15660daa5dc14722d0dfe87 (patch) | |
| tree | 607fbe61dcc49e6096c3dacb591c7dbfa6941c99 /layers/core_validation.cpp | |
| parent | 2256b3908478ecdcc60667cde59c6f36aa68c46c (diff) | |
| download | usermoji-c4ed8a408ef2f54ed15660daa5dc14722d0dfe87.tar.xz | |
layers:Verify dstAccessMask supported by stageMask
This is VALIDATION_ERROR_1b800942.
Verify that barrier drcAccessMask is supported by drcStageMask.
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 97bf2f16..135b3a72 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -6443,6 +6443,12 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB "%s: pMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, i, mem_barrier.srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); } + if (!ValidateAccessMaskPipelineStage(mem_barrier.dstAccessMask, dst_stage_mask)) { + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", + "%s: pMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, i, + mem_barrier.dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + } } for (uint32_t i = 0; i < imageMemBarrierCount; ++i) { auto mem_barrier = &pImageMemBarriers[i]; @@ -6452,6 +6458,12 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB "%s: pImageMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, i, mem_barrier->srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); } + if (!ValidateAccessMaskPipelineStage(mem_barrier->dstAccessMask, dst_stage_mask)) { + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", + "%s: pImageMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, + i, mem_barrier->dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + } auto image_data = GetImageState(device_data, mem_barrier->image); if (image_data) { uint32_t src_q_f_index = mem_barrier->srcQueueFamilyIndex; @@ -6534,6 +6546,12 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB "%s: pBufferMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, i, mem_barrier->srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); } + if (!ValidateAccessMaskPipelineStage(mem_barrier->dstAccessMask, dst_stage_mask)) { + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", + "%s: pBufferMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, + i, mem_barrier->dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + } // Validate buffer barrier queue family indices if ((mem_barrier->srcQueueFamilyIndex != VK_QUEUE_FAMILY_IGNORED && mem_barrier->srcQueueFamilyIndex >= device_data->phys_dev_properties.queue_family_properties.size()) || |
