vulkan.h: Bug 14181 - Barriers need to be more precise
diff --git a/icd/intel/cmd_mi.c b/icd/intel/cmd_mi.c
index 4ecb46b..63dca79 100644
--- a/icd/intel/cmd_mi.c
+++ b/icd/intel/cmd_mi.c
@@ -165,56 +165,41 @@
}
static void cmd_write_event_value(struct intel_cmd *cmd, struct intel_event *event,
- VkPipeEvent pipeEvent, uint32_t value)
+ VkPipelineStageFlags stageMask, uint32_t value)
{
- uint32_t pipe_control_flags;
+ uint32_t pipe_control_flags = 0;
/* Event setting is done with PIPE_CONTROL post-sync write immediate.
* With no other PIPE_CONTROL flags set, it behaves as VK_PIPE_EVENT_TOP_OF_PIPE.
* All other pipeEvent values will behave as VK_PIPE_EVENT_COMMANDS_COMPLETE.
*/
- switch(pipeEvent)
- {
- case VK_PIPE_EVENT_TOP_OF_PIPE:
- pipe_control_flags = 0;
- break;
- case VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE:
- case VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE:
- case VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE:
- case VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE:
- case VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE:
- case VK_PIPE_EVENT_TRANSFER_COMPLETE:
- case VK_PIPE_EVENT_COMMANDS_COMPLETE:
+ if (stageMask & VK_PIPELINE_STAGE_ALL_GRAPHICS) {
pipe_control_flags = GEN6_PIPE_CONTROL_CS_STALL;
- break;
- default:
- cmd_fail(cmd, VK_ERROR_UNKNOWN);
- return;
- break;
}
+
cmd_batch_immediate(cmd, pipe_control_flags, event->obj.mem->bo, 0, value);
}
ICD_EXPORT void VKAPI vkCmdSetEvent(
VkCmdBuffer cmdBuffer,
- VkEvent event_,
- VkPipeEvent pipeEvent)
+ VkEvent event_,
+ VkPipelineStageFlags stageMask)
{
struct intel_cmd *cmd = intel_cmd(cmdBuffer);
struct intel_event *event = intel_event(event_);
- cmd_write_event_value(cmd, event, pipeEvent, 1);
+ cmd_write_event_value(cmd, event, stageMask, 1);
}
ICD_EXPORT void VKAPI vkCmdResetEvent(
VkCmdBuffer cmdBuffer,
- VkEvent event_,
- VkPipeEvent pipeEvent)
+ VkEvent event_,
+ VkPipelineStageFlags stageMask)
{
struct intel_cmd *cmd = intel_cmd(cmdBuffer);
struct intel_event *event = intel_event(event_);
- cmd_write_event_value(cmd, event, pipeEvent, 0);
+ cmd_write_event_value(cmd, event, stageMask, 0);
}
ICD_EXPORT void VKAPI vkCmdCopyQueryPoolResults(