aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2015-12-16 07:17:23 -0700
committerMark Lobodzinski <mark@lunarg.com>2015-12-28 11:54:29 -0700
commit16319b66e172d2edfa49887d8efbe250e9ed9f09 (patch)
tree6978f37aa1c00a6cba9ae5e1e64e59751ebc5b60
parentbcceb6d776c78bc0da040d5676cf846f97b49345 (diff)
downloadusermoji-16319b66e172d2edfa49887d8efbe250e9ed9f09.tar.xz
layers: Fix DrawState BeginCommandBuffer check
According to the spec, framebuffer parameter can be NULL when vkBeginCommandBuffer() is called on a secondary command buffer, however it may result in lower performance. Changed this ERROR to a PERF_WARN. Conflicts: layers/draw_state.cpp
-rw-r--r--layers/draw_state.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 056a6038..3e47c374 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -3508,13 +3508,16 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuf
if (pBeginInfo->renderPass || pBeginInfo->framebuffer) {
// These should be NULL for a Primary CB
skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS",
- "vkBeginCommandBuffer(): Primary Command Buffer (%p) may not specify framebuffer or renderpass parameters", (void*)commandBuffer);
+ "vkBeginCommandBuffer(): Primary Command Buffer (%p) may not specify framebuffer or renderpass parameters.", (void*)commandBuffer);
}
- } else {
- if (!pBeginInfo->renderPass || !pBeginInfo->framebuffer) {
- // These should NOT be null for an Secondary CB
+ } else { // Secondary Command Buffer
+ if (!pBeginInfo->renderPass) { // renderpass should NOT be null for an Secondary CB
skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS",
- "vkBeginCommandBuffer(): Secondary Command Buffers (%p) must specify framebuffer and renderpass parameters", (void*)commandBuffer);
+ "vkBeginCommandBuffer(): Secondary Command Buffers (%p) must specify a valid renderpass parameter.", (void*)commandBuffer);
+ }
+ if (!pBeginInfo->framebuffer) { // framebuffer may be null for an Secondary CB, but this affects perf
+ skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_PERF_WARN_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, 0, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS",
+ "vkBeginCommandBuffer(): Secondary Command Buffers (%p) may perform better if a valid framebuffer parameter is specified.", (void*)commandBuffer);
}
}
pCB->beginInfo = *pBeginInfo;