aboutsummaryrefslogtreecommitdiff
path: root/layers/draw_state.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-11-30 16:48:53 -0700
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:50:57 -0700
commitf3466f68e6b4f81ada1b0bf42557e717cc32a7b5 (patch)
treebf01a1dfb65cc7cacd565d43f8098f21be46ce8d /layers/draw_state.cpp
parent930aacbbe56c75cc8593347fdee81f06db13b680 (diff)
downloadusermoji-f3466f68e6b4f81ada1b0bf42557e717cc32a7b5.tar.xz
layers: Disable image layout transition validation in DrawState
Caused too many invalid failure messages
Diffstat (limited to 'layers/draw_state.cpp')
-rw-r--r--layers/draw_state.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 58374928..78a4e6a4 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -55,6 +55,10 @@
#include "vk_layer_extension_utils.h"
#include "vk_layer_utils.h"
+// This definition controls whether image layout transitions are enabled/disabled.
+// disable until corner cases are fixed
+#define DISABLE_IMAGE_LAYOUT_VALIDATION
+
struct devExts {
VkBool32 debug_marker_enabled;
VkBool32 wsi_enabled;
@@ -1973,7 +1977,11 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint
for (uint32_t submit_idx = 0; submit_idx < submitCount; submit_idx++) {
const VkSubmitInfo *submit = &pSubmits[submit_idx];
for (uint32_t i=0; i < submit->commandBufferCount; i++) {
- skipCall |= ValidateCmdBufImageLayouts(submit->pCommandBuffers[i]);
+
+#ifndef DISABLE_IMAGE_LAYOUT_VALIDATION
+ skipCall |= ValidateCmdBufImageLayouts(submit->pCommandBuffers[i]);
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
// Validate that cmd buffers have been updated
pCB = getCBNode(dev_data, submit->pCommandBuffers[i]);
loader_platform_thread_lock_mutex(&globalLock);
@@ -3244,6 +3252,12 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer comma
bool VerifySourceImageLayout(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout) {
bool skip_call = false;
+
+#ifdef DISABLE_IMAGE_LAYOUT_VALIDATION
+ // TODO: Fix -- initialLayout may have been set in a previous command buffer
+ return skip_call;
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
GLOBAL_CB_NODE* pCB = getCBNode(dev_data, cmdBuffer);
auto src_image_element = pCB->imageLayoutMap.find(srcImage);
@@ -3270,6 +3284,12 @@ bool VerifySourceImageLayout(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImag
bool VerifyDestImageLayout(VkCommandBuffer cmdBuffer, VkImage destImage, VkImageLayout destImageLayout) {
bool skip_call = false;
+
+#ifdef DISABLE_IMAGE_LAYOUT_VALIDATION
+ // TODO: Fix -- initialLayout may have been set in a previous command buffer
+ return skip_call;
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
GLOBAL_CB_NODE* pCB = getCBNode(dev_data, cmdBuffer);
auto dest_image_element = pCB->imageLayoutMap.find(destImage);
@@ -3593,6 +3613,12 @@ bool TransitionImageLayouts(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount,
layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
GLOBAL_CB_NODE* pCB = getCBNode(dev_data, cmdBuffer);
bool skip = false;
+
+#ifdef DISABLE_IMAGE_LAYOUT_VALIDATION
+ // TODO: Fix -- pay attention to image subresource ranges -- not all subresources transition at the same time
+ return skip;
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
for (uint32_t i = 0; i < memBarrierCount; ++i) {
auto mem_barrier = reinterpret_cast<const VkMemoryBarrier*>(ppMemBarriers[i]);
if (mem_barrier && mem_barrier->sType == VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER) {
@@ -4015,6 +4041,11 @@ VkBool32 ValidateDependencies(const layer_data* my_data, VkDevice device, const
bool ValidateLayouts(const layer_data* my_data, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo) {
bool skip = false;
+
+#ifdef DISABLE_IMAGE_LAYOUT_VALIDATION
+ return skip;
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
for (uint32_t i = 0; i < pCreateInfo->subpassCount; ++i) {
const VkSubpassDescription& subpass = pCreateInfo->pSubpasses[i];
for (uint32_t j = 0; j < subpass.inputAttachmentCount; ++j) {
@@ -4411,7 +4442,12 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
void **ppData)
{
layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
- bool skip_call = ValidateMapImageLayouts(device, mem);
+
+ bool skip_call = VK_FALSE;
+#ifndef DISABLE_IMAGE_LAYOUT_VALIDATION
+ skip_call = ValidateMapImageLayouts(device, mem);
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
+
if (VK_FALSE == skip_call) {
return dev_data->device_dispatch_table->MapMemory(device, mem, offset, size, flags, ppData);
}
@@ -4504,6 +4540,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue,
layer_data* dev_data = get_my_data_ptr(get_dispatch_key(queue), layer_data_map);
bool skip_call = false;
+#ifndef DISABLE_IMAGE_LAYOUT_VALIDATION
if (pPresentInfo) {
for (uint32_t i = 0; i < pPresentInfo->swapchainCount; ++i) {
auto swapchain_data = dev_data->device_extensions.swapchainMap.find(pPresentInfo->pSwapchains[i]);
@@ -4519,6 +4556,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue,
}
}
}
+#endif // DISABLE_IMAGE_LAYOUT_VALIDATION
if (VK_FALSE == skip_call)
return dev_data->device_dispatch_table->QueuePresentKHR(queue, pPresentInfo);