aboutsummaryrefslogtreecommitdiff
path: root/layers/param_checker.cpp
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2015-10-27 19:54:37 +0800
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-11-02 15:04:09 -0700
commit1957462626e129223f66949634f4f4a707ec4401 (patch)
treeed48c9f0764e0e7b81faa7fae98699e7a5cee4b8 /layers/param_checker.cpp
parentaed616f1fab9b89cc90a47bd72be8cf108feaad9 (diff)
downloadusermoji-1957462626e129223f66949634f4f4a707ec4401.tar.xz
bug 14965: Merge VK_MEMORY_INPUT/OUTPUT flags to better express write-after-wite hazards (WIP)
s/VkMemoryOutputFlags/VkAccessFlags/g s/VkMemoryInputFlags/VkAccessFlags/g s/outputMask/srcAccessMask/g s/inputMask/dstAccessMask/g s/VK_MEMORY_OUTPUT_HOST_WRITE_BIT/VK_ACCESS_HOST_WRITE_BIT/g s/VK_MEMORY_OUTPUT_SHADER_WRITE_BIT/VK_ACCESS_SHADER_WRITE_BIT/g s/VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT/VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT/g s/VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT/VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT/g s/VK_MEMORY_OUTPUT_TRANSFER_BIT/VK_ACCESS_TRANSFER_WRITE_BIT/g s/VK_MEMORY_INPUT_HOST_READ_BIT/VK_ACCESS_HOST_READ_BIT/g s/VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT/VK_ACCESS_INDIRECT_COMMAND_READ_BIT/g s/VK_MEMORY_INPUT_INDEX_FETCH_BIT/VK_ACCESS_INDEX_READ_BIT/g s/VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT/VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT/g s/VK_MEMORY_INPUT_UNIFORM_READ_BIT/VK_ACCESS_UNIFORM_READ_BIT/g s/VK_MEMORY_INPUT_SHADER_READ_BIT/VK_ACCESS_SHADER_READ_BIT/g s/VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT/VK_ACCESS_COLOR_ATTACHMENT_READ_BIT/g s/VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT/VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT/g s/VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT/VK_ACCESS_INPUT_ATTACHMENT_READ_BIT/g s/VK_MEMORY_INPUT_TRANSFER_BIT/VK_ACCESS_MEMORY_READ_BIT/g https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14965
Diffstat (limited to 'layers/param_checker.cpp')
-rw-r--r--layers/param_checker.cpp135
1 files changed, 56 insertions, 79 deletions
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 3b5bc72f..ad1f2e8a 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -1321,13 +1321,27 @@ std::string EnumeratorString(VkPipelineStageFlagBits const& enumerator)
}
static
-bool ValidateEnumerator(VkMemoryOutputFlagBits 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);
+bool ValidateEnumerator(VkAccessFlagBits const& enumerator)
+{
+ VkAccessFlagBits allFlags = (VkAccessFlagBits)(
+ VK_ACCESS_INDIRECT_COMMAND_READ_BIT |
+ VK_ACCESS_INDEX_READ_BIT |
+ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
+ VK_ACCESS_UNIFORM_READ_BIT |
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT |
+ VK_ACCESS_SHADER_READ_BIT |
+ VK_ACCESS_SHADER_WRITE_BIT |
+ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT |
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT |
+ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
+ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
+ VK_ACCESS_TRANSFER_READ_BIT |
+ VK_ACCESS_TRANSFER_WRITE_BIT |
+ VK_ACCESS_HOST_READ_BIT |
+ VK_ACCESS_HOST_WRITE_BIT |
+ VK_ACCESS_MEMORY_READ_BIT |
+ VK_ACCESS_MEMORY_WRITE_BIT);
+
if(enumerator & (~allFlags))
{
return false;
@@ -1337,7 +1351,7 @@ bool ValidateEnumerator(VkMemoryOutputFlagBits const& enumerator)
}
static
-std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator)
+std::string EnumeratorString(VkAccessFlagBits const& enumerator)
{
if(!ValidateEnumerator(enumerator))
{
@@ -1345,110 +1359,73 @@ std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator)
}
std::vector<std::string> strings;
- if(enumerator & VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT)
+ if(enumerator & VK_ACCESS_INDIRECT_COMMAND_READ_BIT)
{
- strings.push_back("VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT");
+ strings.push_back("VK_ACCESS_INDIRECT_COMMAND_READ_BIT");
}
- if(enumerator & VK_MEMORY_OUTPUT_TRANSFER_BIT)
+ if(enumerator & VK_ACCESS_INDEX_READ_BIT)
{
- strings.push_back("VK_MEMORY_OUTPUT_TRANSFER_BIT");
+ strings.push_back("VK_ACCESS_INDEX_READ_BIT");
}
- if(enumerator & VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT)
+ if(enumerator & VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT)
{
- strings.push_back("VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT");
+ strings.push_back("VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT");
}
- if(enumerator & VK_MEMORY_OUTPUT_SHADER_WRITE_BIT)
+ if(enumerator & VK_ACCESS_UNIFORM_READ_BIT)
{
- strings.push_back("VK_MEMORY_OUTPUT_SHADER_WRITE_BIT");
+ strings.push_back("VK_ACCESS_UNIFORM_READ_BIT");
}
- if(enumerator & VK_MEMORY_OUTPUT_HOST_WRITE_BIT)
+ if(enumerator & VK_ACCESS_INPUT_ATTACHMENT_READ_BIT)
{
- strings.push_back("VK_MEMORY_OUTPUT_HOST_WRITE_BIT");
+ strings.push_back("VK_ACCESS_INPUT_ATTACHMENT_READ_BIT");
}
-
- std::string enumeratorString;
- for(auto const& string : strings)
- {
- enumeratorString += string;
-
- if(string != strings.back())
- {
- enumeratorString += '|';
- }
- }
-
- return enumeratorString;
-}
-
-static
-bool ValidateEnumerator(VkMemoryInputFlagBits 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_INPUT_ATTACHMENT_BIT |
- VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
- VK_MEMORY_INPUT_HOST_READ_BIT);
- if(enumerator & (~allFlags))
+ if(enumerator & VK_ACCESS_SHADER_READ_BIT)
{
- return false;
+ strings.push_back("VK_ACCESS_SHADER_READ_BIT");
}
-
- return true;
-}
-
-static
-std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator)
-{
- if(!ValidateEnumerator(enumerator))
+ if(enumerator & VK_ACCESS_SHADER_WRITE_BIT)
{
- return "unrecognized enumerator";
+ strings.push_back("VK_ACCESS_SHADER_WRITE_BIT");
}
-
- std::vector<std::string> strings;
- if(enumerator & VK_MEMORY_INPUT_TRANSFER_BIT)
+ if(enumerator & VK_ACCESS_COLOR_ATTACHMENT_READ_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_TRANSFER_BIT");
+ strings.push_back("VK_ACCESS_COLOR_ATTACHMENT_READ_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT)
+ if(enumerator & VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT");
+ strings.push_back("VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT)
+ if(enumerator & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT");
+ strings.push_back("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_SHADER_READ_BIT)
+ if(enumerator & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_SHADER_READ_BIT");
+ strings.push_back("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_UNIFORM_READ_BIT)
+ if(enumerator & VK_ACCESS_TRANSFER_READ_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_UNIFORM_READ_BIT");
+ strings.push_back("VK_ACCESS_TRANSFER_READ_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_INDEX_FETCH_BIT)
+ if(enumerator & VK_ACCESS_TRANSFER_WRITE_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_INDEX_FETCH_BIT");
+ strings.push_back("VK_ACCESS_TRANSFER_WRITE_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT)
+ if(enumerator & VK_ACCESS_HOST_READ_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT");
+ strings.push_back("VK_ACCESS_HOST_READ_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT)
+ if(enumerator & VK_ACCESS_HOST_WRITE_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT");
+ strings.push_back("VK_ACCESS_HOST_WRITE_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT)
+ if(enumerator & VK_ACCESS_MEMORY_READ_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT");
+ strings.push_back("VK_ACCESS_MEMORY_READ_BIT");
}
- if(enumerator & VK_MEMORY_INPUT_HOST_READ_BIT)
+ if(enumerator & VK_ACCESS_MEMORY_WRITE_BIT)
{
- strings.push_back("VK_MEMORY_INPUT_HOST_READ_BIT");
+ strings.push_back("VK_ACCESS_MEMORY_WRITE_BIT");
}
std::string enumeratorString;