MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-ValidationLayers / ApplySingleImageBarrier

Method ApplySingleImageBarrier

layers/sync/sync_op.cpp:428–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

426}
427
428void 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
446void SyncOpPipelineBarrier::ApplySingleMemoryBarrier(CommandExecutionContext& exec_context,
447 const SyncBarrier& memory_barrier) const {

Callers

nothing calls this directly

Calls 6

CanTransitionDepthSlicesFunction · 0.85
MakeImageRangeGenMethod · 0.80
RegisterGlobalBarrierMethod · 0.80
GetQueueIdMethod · 0.45
GetImageTypeMethod · 0.45

Tested by

no test coverage detected