@@ -453,7 +453,7 @@ static const uint32_t READ_INDEX = 0;
453453static const uint32_t WRITE_INDEX = 1 ;
454454
455455// Per-cmd read/write flags Read flags in slot 0, Write in 1
456- static const CmdFlags CommandToFlags[CMD_COUNT ][2 ] = {
456+ constexpr CmdFlags CommandToFlags[CMD_COUNT + 1 ][2 ] = {
457457 // CMD_NONE,
458458 {{0 , 0 }, {0 , 0 }},
459459 // CMD_BINDPIPELINE,
@@ -495,12 +495,24 @@ static const CmdFlags CommandToFlags[CMD_COUNT][2] = {
495495 VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | VK_ACCESS_SHADER_READ_BIT },
496496 {VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT , 0 }},
497497 // CMD_DRAWINDIRECT,
498+ {{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
499+ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT ,
500+ VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
501+ VK_ACCESS_SHADER_READ_BIT },
502+ {VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT , 0 }},
503+ // CMD_DRAWINDIRECTCOUNTAMD, TODO : Make sure these are right
498504 {{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
499505 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT ,
500506 VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
501507 VK_ACCESS_SHADER_READ_BIT },
502508 {VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT , 0 }},
503509 // CMD_DRAWINDEXEDINDIRECT,
510+ {{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
511+ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT ,
512+ VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT |
513+ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT | VK_ACCESS_SHADER_READ_BIT },
514+ {VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT , 0 }},
515+ // CMD_DRAWINDEXEDINDIRECTCOUNTAMD, TODO : Make sure these are right
504516 {{VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
505517 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT ,
506518 VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_INDIRECT_COMMAND_READ_BIT |
@@ -594,8 +606,13 @@ static const CmdFlags CommandToFlags[CMD_COUNT][2] = {
594606 {{0 , 0 }, {0 , 0 }},
595607 // CMD_END, // Should be last command in any RECORDED cmd buffer
596608 {{0 , 0 }, {0 , 0 }},
609+ // MAGIC NUMBER ENTRY TO MAKE SURE ARRAY IS CORRECT SIZE
610+ {{0 , 0 }, {0 , 0xDEADBEEF }},
597611};
598612
613+ static_assert ((CommandToFlags[CMD_END + 1 ][WRITE_INDEX ].access_flags) == (0xDEADBEEF ),
614+ " CommandToFlags is not correct size. Must have an entry for each CMD_TYPE." );
615+
599616// fwd decl class for ptr below
600617class Command ;
601618// Store details of memory access by a cmd
0 commit comments