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

Function AccessScopeByAccess

layers/sync/sync_barrier.cpp:53–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51}
52
53static SyncAccessFlags AccessScopeByAccess(VkAccessFlags2 accesses) {
54 SyncAccessFlags sync_accesses = AccessScopeImpl(ExpandAccessFlags(accesses), syncAccessMaskByAccessBit());
55
56 // The above access expansion replaces SHADER_READ meta access with atomic accesses as defined by the specification.
57 // ACCELERATION_STRUCTURE_BUILD and MICROMAP_BUILD stages are special in a way that they use SHADER_READ access directly.
58 // It is an implementation detail of how SHADER_READ is used by the driver, and we cannot make assumption about specific
59 // atomic accesses. If we make such assumption then it can be a problem when after applying synchronization we won't be
60 // able to get full SHADER_READ access back, but only a subset of accesses, for example, only SHADER_STORAGE_READ.
61 // It would mean we made (incorrect) assumption how the driver represents SHADER_READ in the context of AS build.
62 //
63 // Handle special cases that use non-expanded meta accesses.
64 if (accesses & VK_ACCESS_2_SHADER_READ_BIT) {
65 sync_accesses |= SYNC_ACCELERATION_STRUCTURE_BUILD_SHADER_READ_BIT;
66 sync_accesses |= SYNC_MICROMAP_BUILD_EXT_SHADER_READ_BIT;
67 }
68 return sync_accesses;
69}
70
71static SyncAccessFlags AccessScope(const SyncAccessFlags& stage_scope, VkAccessFlags2 accesses) {
72 SyncAccessFlags access_scope = stage_scope & AccessScopeByAccess(accesses);

Callers 1

AccessScopeFunction · 0.85

Calls 2

AccessScopeImplFunction · 0.85
ExpandAccessFlagsFunction · 0.85

Tested by

no test coverage detected