aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorTony Barbour <tony@LunarG.com>2015-06-29 16:20:35 -0600
committerTony Barbour <tony@LunarG.com>2015-07-01 13:05:16 -0600
commit50bbca4293c3d2ee5b87fedb824e71f0f19e0c46 (patch)
tree3ab83c8db0587ff66ec67c1b6bce44571fc4a318 /layers
parent08ca8c9558891e43cb0431872ea188f1de3d39af (diff)
downloadusermoji-50bbca4293c3d2ee5b87fedb824e71f0f19e0c46.tar.xz
vulkan.h: Bug 14181 - Barriers need to be more precise
Diffstat (limited to 'layers')
-rw-r--r--layers/draw_state.cpp16
-rw-r--r--layers/param_checker.cpp88
2 files changed, 33 insertions, 71 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 146c6410..ee891d62 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -2546,56 +2546,56 @@ VK_LAYER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer,
}
}
-VK_LAYER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent)
+VK_LAYER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
if (pCB->state == CB_UPDATE_ACTIVE) {
updateCBTracking(cmdBuffer);
addCmd(pCB, CMD_SETEVENT);
- get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdSetEvent(cmdBuffer, event, pipeEvent);
+ get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdSetEvent(cmdBuffer, event, stageMask);
} else {
report_error_no_cb_begin(cmdBuffer, "vkCmdBindIndexBuffer()");
}
}
}
-VK_LAYER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent)
+VK_LAYER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
if (pCB->state == CB_UPDATE_ACTIVE) {
updateCBTracking(cmdBuffer);
addCmd(pCB, CMD_RESETEVENT);
- get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdResetEvent(cmdBuffer, event, pipeEvent);
+ get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdResetEvent(cmdBuffer, event, stageMask);
} else {
report_error_no_cb_begin(cmdBuffer, "vkCmdBindIndexBuffer()");
}
}
}
-VK_LAYER_EXPORT void VKAPI vkCmdWaitEvents(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, uint32_t memBarrierCount, const void** ppMemBarriers)
+VK_LAYER_EXPORT void VKAPI vkCmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void** ppMemBarriers)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
if (pCB->state == CB_UPDATE_ACTIVE) {
updateCBTracking(cmdBuffer);
addCmd(pCB, CMD_WAITEVENTS);
- get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, waitEvent, eventCount, pEvents, memBarrierCount, ppMemBarriers);
+ get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
} else {
report_error_no_cb_begin(cmdBuffer, "vkCmdBindIndexBuffer()");
}
}
}
-VK_LAYER_EXPORT void VKAPI vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t pipeEventCount, const VkPipeEvent* pPipeEvents, uint32_t memBarrierCount, const void** ppMemBarriers)
+VK_LAYER_EXPORT void VKAPI vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags destStageMask, bool32_t byRegion, uint32_t memBarrierCount, const void** ppMemBarriers)
{
GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
if (pCB) {
if (pCB->state == CB_UPDATE_ACTIVE) {
updateCBTracking(cmdBuffer);
addCmd(pCB, CMD_PIPELINEBARRIER);
- get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdPipelineBarrier(cmdBuffer, waitEvent, pipeEventCount, pPipeEvents, memBarrierCount, ppMemBarriers);
+ get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
} else {
report_error_no_cb_begin(cmdBuffer, "vkCmdPipelineBarrier()");
}
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 70ced01e..22ca3e08 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -8619,7 +8619,7 @@ void PreCmdSetEvent(
void PostCmdSetEvent(
VkCmdBuffer cmdBuffer,
VkEvent event,
- VkPipeEvent pipeEvent)
+ VkPipelineStageFlags stageMask)
{
if(cmdBuffer == nullptr)
{
@@ -8635,24 +8635,17 @@ void PostCmdSetEvent(
return;
}
- if(pipeEvent < VK_PIPE_EVENT_BEGIN_RANGE ||
- pipeEvent > VK_PIPE_EVENT_END_RANGE)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdSetEvent parameter, VkPipeEvent pipeEvent, is unrecognized enumerator");
- return;
- }
}
VK_LAYER_EXPORT void VKAPI vkCmdSetEvent(
VkCmdBuffer cmdBuffer,
VkEvent event,
- VkPipeEvent pipeEvent)
+ VkPipelineStageFlags stageMask)
{
PreCmdSetEvent(cmdBuffer);
- get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetEvent(cmdBuffer, event, pipeEvent);
+ get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetEvent(cmdBuffer, event, stageMask);
- PostCmdSetEvent(cmdBuffer, event, pipeEvent);
+ PostCmdSetEvent(cmdBuffer, event, stageMask);
}
void PreCmdResetEvent(
@@ -8669,7 +8662,7 @@ void PreCmdResetEvent(
void PostCmdResetEvent(
VkCmdBuffer cmdBuffer,
VkEvent event,
- VkPipeEvent pipeEvent)
+ VkPipelineStageFlags stageMask)
{
if(cmdBuffer == nullptr)
{
@@ -8685,24 +8678,17 @@ void PostCmdResetEvent(
return;
}
- if(pipeEvent < VK_PIPE_EVENT_BEGIN_RANGE ||
- pipeEvent > VK_PIPE_EVENT_END_RANGE)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdResetEvent parameter, VkPipeEvent pipeEvent, is unrecognized enumerator");
- return;
- }
}
VK_LAYER_EXPORT void VKAPI vkCmdResetEvent(
VkCmdBuffer cmdBuffer,
VkEvent event,
- VkPipeEvent pipeEvent)
+ VkPipelineStageFlags stageMask)
{
PreCmdResetEvent(cmdBuffer);
- get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdResetEvent(cmdBuffer, event, pipeEvent);
+ get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdResetEvent(cmdBuffer, event, stageMask);
- PostCmdResetEvent(cmdBuffer, event, pipeEvent);
+ PostCmdResetEvent(cmdBuffer, event, stageMask);
}
void PreCmdWaitEvents(
@@ -8740,8 +8726,9 @@ void PreCmdWaitEvents(
void PostCmdWaitEvents(
VkCmdBuffer cmdBuffer,
- VkWaitEvent waitEvent,
uint32_t eventCount,
+ VkPipelineStageFlags sourceStageMask,
+ VkPipelineStageFlags destStageMask,
uint32_t memBarrierCount)
{
if(cmdBuffer == nullptr)
@@ -8751,34 +8738,28 @@ void PostCmdWaitEvents(
return;
}
- if(waitEvent < VK_WAIT_EVENT_BEGIN_RANGE ||
- waitEvent > VK_WAIT_EVENT_END_RANGE)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdWaitEvents parameter, VkWaitEvent waitEvent, is unrecognized enumerator");
- return;
- }
+
}
VK_LAYER_EXPORT void VKAPI vkCmdWaitEvents(
VkCmdBuffer cmdBuffer,
- VkWaitEvent waitEvent,
uint32_t eventCount,
const VkEvent* pEvents,
+ VkPipelineStageFlags sourceStageMask,
+ VkPipelineStageFlags destStageMask,
uint32_t memBarrierCount,
const void** ppMemBarriers)
{
PreCmdWaitEvents(cmdBuffer, pEvents, ppMemBarriers);
- get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, waitEvent, eventCount, pEvents, memBarrierCount, ppMemBarriers);
+ get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
- PostCmdWaitEvents(cmdBuffer, waitEvent, eventCount, memBarrierCount);
+ PostCmdWaitEvents(cmdBuffer, eventCount, sourceStageMask, destStageMask, memBarrierCount);
}
void PreCmdPipelineBarrier(
VkCmdBuffer cmdBuffer,
- const VkPipeEvent* pPipeEvents,
const void** ppMemBarriers)
{
if(cmdBuffer == nullptr)
@@ -8788,20 +8769,6 @@ void PreCmdPipelineBarrier(
return;
}
- if(pPipeEvents == nullptr)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdPipelineBarrier parameter, const VkPipeEvent* pPipeEvents, is null pointer");
- return;
- }
- if((*pPipeEvents) < VK_PIPE_EVENT_BEGIN_RANGE ||
- (*pPipeEvents) > VK_PIPE_EVENT_END_RANGE)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdPipelineBarrier parameter, const VkPipeEvent* pPipeEvents, is unrecognized enumerator");
- return;
- }
-
if(ppMemBarriers == nullptr)
{
log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
@@ -8812,8 +8779,9 @@ void PreCmdPipelineBarrier(
void PostCmdPipelineBarrier(
VkCmdBuffer cmdBuffer,
- VkWaitEvent waitEvent,
- uint32_t pipeEventCount,
+ VkPipelineStageFlags sourceStageMask,
+ VkPipelineStageFlags destStageMask,
+ bool32_t byRegion,
uint32_t memBarrierCount)
{
if(cmdBuffer == nullptr)
@@ -8823,29 +8791,23 @@ void PostCmdPipelineBarrier(
return;
}
- if(waitEvent < VK_WAIT_EVENT_BEGIN_RANGE ||
- waitEvent > VK_WAIT_EVENT_END_RANGE)
- {
- log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkCmdPipelineBarrier parameter, VkWaitEvent waitEvent, is unrecognized enumerator");
- return;
- }
+
}
VK_LAYER_EXPORT void VKAPI vkCmdPipelineBarrier(
VkCmdBuffer cmdBuffer,
- VkWaitEvent waitEvent,
- uint32_t pipeEventCount,
- const VkPipeEvent* pPipeEvents,
+ VkPipelineStageFlags sourceStageMask,
+ VkPipelineStageFlags destStageMask,
+ bool32_t byRegion,
uint32_t memBarrierCount,
const void** ppMemBarriers)
{
- PreCmdPipelineBarrier(cmdBuffer, pPipeEvents, ppMemBarriers);
- get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdPipelineBarrier(cmdBuffer, waitEvent, pipeEventCount, pPipeEvents, memBarrierCount, ppMemBarriers);
+ PreCmdPipelineBarrier(cmdBuffer, ppMemBarriers);
+ get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
- PostCmdPipelineBarrier(cmdBuffer, waitEvent, pipeEventCount, memBarrierCount);
+ PostCmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount);
}
void PreCmdBeginQuery(