diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-03-01 15:45:52 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-03-13 16:02:59 -0600 |
| commit | 7cdb3f5946cc2108e3026adb83e5b4c1af30717d (patch) | |
| tree | e587c17a75dfe511b7d2e5e22ac323b537ce5491 /layers/parameter_validation.cpp | |
| parent | b74c683ea7e241d0592138db5f32f260fd95d8a4 (diff) | |
| download | usermoji-7cdb3f5946cc2108e3026adb83e5b4c1af30717d.tar.xz | |
layers: Finish multiViewport dev feature validation
Change-Id: I58397785e7b73099d2a890246207075dae643652
Diffstat (limited to 'layers/parameter_validation.cpp')
| -rw-r--r-- | layers/parameter_validation.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp index 8cd7df74..f0b37040 100644 --- a/layers/parameter_validation.cpp +++ b/layers/parameter_validation.cpp @@ -4166,7 +4166,7 @@ VKAPI_ATTR void VKAPI_CALL CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipe } } -static bool preCmdSetViewport(layer_data *my_data, uint32_t viewport_count, const VkViewport *viewports) { +static bool preCmdSetViewport(layer_data *my_data, uint32_t first_viewport, uint32_t viewport_count, const VkViewport *viewports) { debug_report_data *report_data = my_data->report_data; bool skip = @@ -4177,6 +4177,23 @@ static bool preCmdSetViewport(layer_data *my_data, uint32_t viewport_count, cons for (uint32_t viewportIndex = 0; viewportIndex < viewport_count; ++viewportIndex) { const VkViewport &viewport = viewports[viewportIndex]; + if (my_data->physical_device_features.multiViewport == false) { + if (viewport_count != 1) { + skip |= log_msg( + report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + DEVICE_FEATURE, LayerName, + "vkCmdSetViewport(): The multiViewport feature is not enabled, so viewportCount must be 1 but is %d.", + viewport_count); + } + if (first_viewport != 0) { + skip |= log_msg( + report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + DEVICE_FEATURE, LayerName, + "vkCmdSetViewport(): The multiViewport feature is not enabled, so firstViewport must be 0 but is %d.", + first_viewport); + } + } + if (viewport.width <= 0 || viewport.width > limits.maxViewportDimensions[0]) { skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_01448, LayerName, @@ -4239,7 +4256,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetViewport(VkCommandBuffer commandBuffer, uint32_ layer_data *my_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); assert(my_data != NULL); - skip |= preCmdSetViewport(my_data, viewportCount, pViewports); + skip |= preCmdSetViewport(my_data, firstViewport, viewportCount, pViewports); if (!skip) { my_data->dispatch_table.CmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports); @@ -4255,6 +4272,21 @@ VKAPI_ATTR void VKAPI_CALL CmdSetScissor(VkCommandBuffer commandBuffer, uint32_t skip |= parameter_validation_vkCmdSetScissor(my_data->report_data, firstScissor, scissorCount, pScissors); + if (my_data->physical_device_features.multiViewport == false) { + if (scissorCount != 1) { + skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + DEVICE_FEATURE, LayerName, + "vkCmdSetScissor(): The multiViewport feature is not enabled, so scissorCount must be 1 but is %d.", + scissorCount); + } + if (firstScissor != 0) { + skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + DEVICE_FEATURE, LayerName, + "vkCmdSetScissor(): The multiViewport feature is not enabled, so firstScissor must be 0 but is %d.", + firstScissor); + } + } + for (uint32_t scissorIndex = 0; scissorIndex < scissorCount; ++scissorIndex) { const VkRect2D &pScissor = pScissors[scissorIndex]; |
