| 733 | } |
| 734 | |
| 735 | void PendingBarriers::AddWriteBarrier(AccessState* access_state, const SyncBarrier& barrier) { |
| 736 | size_t barrier_index = 0; |
| 737 | for (; barrier_index < write_barriers.size(); barrier_index++) { |
| 738 | const PendingWriteBarrier& pending = write_barriers[barrier_index]; |
| 739 | if (pending.barriers == barrier.dst_access_scope && pending.dependency_chain == barrier.dst_exec_scope.exec_scope) { |
| 740 | break; |
| 741 | } |
| 742 | } |
| 743 | if (barrier_index == write_barriers.size()) { |
| 744 | PendingWriteBarrier& pending = write_barriers.emplace_back(); |
| 745 | pending.barriers = barrier.dst_access_scope; |
| 746 | pending.dependency_chain = barrier.dst_exec_scope.exec_scope; |
| 747 | } |
| 748 | PendingBarrierInfo& info = infos.emplace_back(); |
| 749 | info.type = PendingBarrierType::WriteAccessBarrier; |
| 750 | info.index = (uint32_t)barrier_index; |
| 751 | info.access_state = access_state; |
| 752 | } |
| 753 | |
| 754 | void PendingBarriers::AddLayoutTransition(AccessState* access_state, const OrderingBarrier& layout_transition_ordering_barrier, |
| 755 | uint32_t layout_transition_handle_index) { |
no test coverage detected