Skip to content
This repository has been archived by the owner on Jul 19, 2018. It is now read-only.

Commit

Permalink
layers:Add read/write mappings for AMD draws
Browse files Browse the repository at this point in the history
These extended draw types were added without updating the read/write
flag LUT. Doh! Initially adding data as copies of matching non-AMD cmds
which should work. Added comments to double-check and make sure those
are the correct flags.

Also added a magic number entry at the end of the LUT CommandToFlags
array and a static_assert to make sure this array is correctly sized at
compile time.
  • Loading branch information
tobine committed Sep 14, 2017
1 parent ae690c5 commit 91b6474
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion layers/core_validation_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@ static const uint32_t READ_INDEX = 0;
static const uint32_t WRITE_INDEX = 1;

// Per-cmd read/write flags Read flags in slot 0, Write in 1
static const CmdFlags CommandToFlags[CMD_COUNT][2] = {
constexpr CmdFlags CommandToFlags[CMD_COUNT + 1][2] = {
// CMD_NONE,
{{0, 0}, {0, 0}},
// CMD_BINDPIPELINE,
Expand Down Expand Up @@ -495,12 +495,24 @@ static const CmdFlags CommandToFlags[CMD_COUNT][2] = {
VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | VK_ACCESS_SHADER_READ_BIT},
{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, 0}},
// CMD_DRAWINDIRECT,
{{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
VK_ACCESS_SHADER_READ_BIT},
{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, 0}},
// CMD_DRAWINDIRECTCOUNTAMD, TODO : Make sure these are right
{{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
VK_ACCESS_SHADER_READ_BIT},
{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, 0}},
// CMD_DRAWINDEXEDINDIRECT,
{{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT |
VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | VK_ACCESS_SHADER_READ_BIT},
{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, 0}},
// CMD_DRAWINDEXEDINDIRECTCOUNTAMD, TODO : Make sure these are right
{{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT |
Expand Down Expand Up @@ -594,8 +606,13 @@ static const CmdFlags CommandToFlags[CMD_COUNT][2] = {
{{0, 0}, {0, 0}},
// CMD_END, // Should be last command in any RECORDED cmd buffer
{{0, 0}, {0, 0}},
// MAGIC NUMBER ENTRY TO MAKE SURE ARRAY IS CORRECT SIZE
{{0, 0}, {0, 0xDEADBEEF}},
};

static_assert((CommandToFlags[CMD_END + 1][WRITE_INDEX].access_flags) == (0xDEADBEEF),
"CommandToFlags is not correct size. Must have an entry for each CMD_TYPE.");

// fwd decl class for ptr below
class Command;
// Store details of memory access by a cmd
Expand Down

0 comments on commit 91b6474

Please sign in to comment.