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

Method ReplayRecord

layers/sync/sync_op.cpp:531–563  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

529}
530
531void SyncOpPipelineBarrier::ReplayRecord(CommandExecutionContext& exec_context, const ResourceUsageTag exec_tag) const {
532 const bool has_buffer_barriers = !barrier_set_.buffer_barriers.empty();
533 const bool has_image_barriers = !barrier_set_.image_barriers.empty();
534
535 const bool single_buffer_barrier = barrier_set_.buffer_barriers.size() == 1 &&
536 barrier_set_.memory_barriers.size() == 1 && // buffer barrier exec dependency
537 !has_image_barriers;
538
539 const bool single_image_barrier = barrier_set_.image_barriers.size() == 1 &&
540 barrier_set_.memory_barriers.size() == 1 && // image barrier exec dependency
541 !has_buffer_barriers;
542
543 const bool single_memory_barrier = barrier_set_.memory_barriers.size() == 1 && !has_buffer_barriers && !has_image_barriers;
544
545 if (single_buffer_barrier) {
546 ApplySingleBufferBarrier(exec_context, barrier_set_.buffer_barriers[0], barrier_set_.memory_barriers[0]);
547 } else if (single_image_barrier) {
548 ApplySingleImageBarrier(exec_context, barrier_set_.image_barriers[0], barrier_set_.memory_barriers[0], exec_tag);
549 } else if (single_memory_barrier) {
550 ApplySingleMemoryBarrier(exec_context, barrier_set_.memory_barriers[0]);
551 } else {
552 ApplyMultipleBarriers(exec_context, exec_tag);
553 }
554
555 SyncEventsContext& events_context = exec_context.GetEventsContext();
556 if (barrier_set_.single_exec_scope) {
557 events_context.ApplyBarrier(barrier_set_.src_exec_scope, barrier_set_.dst_exec_scope, exec_tag);
558 } else {
559 for (const auto& barrier : barrier_set_.memory_barriers) {
560 events_context.ApplyBarrier(barrier.src_exec_scope, barrier.dst_exec_scope, exec_tag);
561 }
562 }
563}
564
565bool SyncOpPipelineBarrier::ReplayValidate(ReplayState& replay, ResourceUsageTag recorded_tag) const {
566 // The layout transitions happen at the replay tag

Callers 2

ValidateFirstUseMethod · 0.80

Calls 15

SimpleBindingFunction · 0.85
ResourceBaseAddressFunction · 0.85
CanTransitionDepthSlicesFunction · 0.85
RestrictToEventFunction · 0.85
GetFromSharedMethod · 0.80
MakeImageRangeGenMethod · 0.80
ApplyMethod · 0.80
ResetFirstScopeMethod · 0.80
InitFromMethod · 0.80

Tested by

no test coverage detected