| 426 | } |
| 427 | |
| 428 | void SyncOpPipelineBarrier::ApplySingleImageBarrier(CommandExecutionContext& exec_context, const SyncImageBarrier& image_barrier, |
| 429 | const SyncBarrier& exec_dep_barrier, const ResourceUsageTag exec_tag) const { |
| 430 | AccessContext& access_context = exec_context.GetCurrentAccessContext(); |
| 431 | const QueueId queue_id = exec_context.GetQueueId(); |
| 432 | |
| 433 | const BarrierScope barrier_scope(image_barrier.barrier, queue_id); |
| 434 | ApplySingleImageBarrierFunctor apply_barrier(access_context, barrier_scope, image_barrier.barrier, |
| 435 | image_barrier.layout_transition, image_barrier.handle_index, exec_tag); |
| 436 | |
| 437 | const auto& sub_state = SubState(*image_barrier.image); |
| 438 | const bool can_transition_depth_slices = CanTransitionDepthSlices(exec_context.GetSyncState().extensions, |
| 439 | sub_state.base.GetImageType(), sub_state.base.create_flags); |
| 440 | auto range_gen = sub_state.MakeImageRangeGen(image_barrier.subresource_range, can_transition_depth_slices); |
| 441 | |
| 442 | access_context.UpdateMemoryAccessState(apply_barrier, range_gen); |
| 443 | access_context.RegisterGlobalBarrier(exec_dep_barrier, queue_id); |
| 444 | } |
| 445 | |
| 446 | void SyncOpPipelineBarrier::ApplySingleMemoryBarrier(CommandExecutionContext& exec_context, |
| 447 | const SyncBarrier& memory_barrier) const { |
nothing calls this directly
no test coverage detected