mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
pvr: Implement vkCmdSetEvent2 API.
Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com> Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18612>
This commit is contained in:
parent
1b94dfd4b2
commit
de1da8fa76
2 changed files with 39 additions and 4 deletions
|
|
@ -5710,11 +5710,38 @@ void pvr_CmdResetEvent2KHR(VkCommandBuffer commandBuffer,
|
|||
assert(!"Unimplemented");
|
||||
}
|
||||
|
||||
void pvr_CmdSetEvent2KHR(VkCommandBuffer commandBuffer,
|
||||
VkEvent _event,
|
||||
const VkDependencyInfo *pDependencyInfo)
|
||||
void pvr_CmdSetEvent2(VkCommandBuffer commandBuffer,
|
||||
VkEvent _event,
|
||||
const VkDependencyInfo *pDependencyInfo)
|
||||
{
|
||||
assert(!"Unimplemented");
|
||||
PVR_FROM_HANDLE(pvr_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
PVR_FROM_HANDLE(pvr_event, event, _event);
|
||||
VkPipelineStageFlags2 stage_mask = 0;
|
||||
struct pvr_sub_cmd_event *sub_cmd;
|
||||
VkResult result;
|
||||
|
||||
PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer);
|
||||
|
||||
result = pvr_cmd_buffer_start_sub_cmd(cmd_buffer, PVR_SUB_CMD_TYPE_EVENT);
|
||||
if (result != VK_SUCCESS)
|
||||
return;
|
||||
|
||||
for (uint32_t i = 0; i < pDependencyInfo->memoryBarrierCount; i++)
|
||||
stage_mask |= pDependencyInfo->pMemoryBarriers[i].srcStageMask;
|
||||
|
||||
for (uint32_t i = 0; i < pDependencyInfo->bufferMemoryBarrierCount; i++)
|
||||
stage_mask |= pDependencyInfo->pBufferMemoryBarriers[i].srcStageMask;
|
||||
|
||||
for (uint32_t i = 0; i < pDependencyInfo->imageMemoryBarrierCount; i++)
|
||||
stage_mask |= pDependencyInfo->pImageMemoryBarriers[i].srcStageMask;
|
||||
|
||||
sub_cmd = &cmd_buffer->state.current_sub_cmd->event;
|
||||
|
||||
sub_cmd->type = PVR_EVENT_TYPE_SET;
|
||||
sub_cmd->set.event = event;
|
||||
sub_cmd->set.wait_for_stage_mask = pvr_stage_mask_dst(stage_mask);
|
||||
|
||||
pvr_cmd_buffer_end_sub_cmd(cmd_buffer);
|
||||
}
|
||||
|
||||
void pvr_CmdWaitEvents2KHR(VkCommandBuffer commandBuffer,
|
||||
|
|
|
|||
|
|
@ -734,6 +734,14 @@ struct pvr_sub_cmd_transfer {
|
|||
|
||||
struct pvr_sub_cmd_event {
|
||||
enum pvr_event_type type;
|
||||
|
||||
union {
|
||||
struct {
|
||||
struct pvr_event *event;
|
||||
/* Stages to wait for until the event is set. */
|
||||
uint32_t wait_for_stage_mask;
|
||||
} set;
|
||||
};
|
||||
};
|
||||
|
||||
struct pvr_sub_cmd {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue