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

Method Image

layers/state_tracker/image_state.cpp:135–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

133namespace vvl {
134
135Image::Image(const vvl::DeviceState& dev_data, VkImage img, const VkImageCreateInfo* pCreateInfo, VkFormatFeatureFlags2 ff)
136 : Bindable(img, kVulkanObjectTypeImage, (GetImageCreateFlags(*pCreateInfo) & VK_IMAGE_CREATE_SPARSE_BINDING_BIT) != 0,
137 (GetImageCreateFlags(*pCreateInfo) & VK_IMAGE_CREATE_PROTECTED_BIT) == 0, GetExternalHandleTypes(pCreateInfo)),
138 safe_create_info(pCreateInfo),
139 create_info(*safe_create_info.ptr()),
140 create_flags(GetImageCreateFlags(create_info)),
141 usage(GetImageUsageFlags(create_info)),
142 stencil_usage(GetImageStencilUsageFlags(pCreateInfo->pNext)),
143 layout_locked(false),
144 ahb_format(GetExternalFormat(pCreateInfo->pNext)),
145 full_range{MakeImageFullRange(create_info)},
146 create_from_swapchain(GetSwapchain(pCreateInfo)),
147 owned_by_swapchain(false),
148 swapchain_image_index(0),
149 format_features(ff),
150 disjoint((create_flags & VK_IMAGE_CREATE_DISJOINT_BIT) != 0),
151 requirements(GetMemoryRequirements(dev_data, img, pCreateInfo, disjoint, IsExternalBuffer())),
152 sparse_residency((create_flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) != 0),
153 sparse_requirements(GetSparseRequirements(dev_data, img, sparse_residency)),
154#ifdef VK_USE_PLATFORM_METAL_EXT
155 metal_image_export(GetMetalExport(pCreateInfo, VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT)),
156 metal_io_surface_export(GetMetalExport(pCreateInfo, VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT)),
157#endif // VK_USE_PLATFORM_METAL_EXT
158 subresource_encoder(GetSubresourceEncoderRange(dev_data, full_range)),
159 store_device_as_workaround(dev_data.device), // TODO REMOVE WHEN encoder can be const
160 supported_video_profiles(dev_data.video_profile_cache_.Get(
161 dev_data.physical_device, vku::FindStructInPNextChain<VkVideoProfileListInfoKHR>(pCreateInfo->pNext))) {
162 if (create_flags & VK_IMAGE_CREATE_SPARSE_BINDING_BIT) {
163 bool is_resident = (create_flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) != 0;
164 tracker_.emplace<BindableSparseMemoryTracker>(requirements.data(), is_resident);
165 SetMemoryTracker(&std::get<BindableSparseMemoryTracker>(tracker_));
166 } else if (create_flags & VK_IMAGE_CREATE_DISJOINT_BIT) {
167 tracker_.emplace<BindableMultiplanarMemoryTracker>(requirements.data(), vkuFormatPlaneCount(pCreateInfo->format));
168 SetMemoryTracker(&std::get<BindableMultiplanarMemoryTracker>(tracker_));
169 } else {
170 tracker_.emplace<BindableLinearMemoryTracker>(requirements.data());
171 SetMemoryTracker(&std::get<BindableLinearMemoryTracker>(tracker_));
172 }
173}
174
175Image::Image(const vvl::DeviceState& dev_data, VkImage img, const VkImageCreateInfo* pCreateInfo, VkSwapchainKHR swapchain,
176 uint32_t swapchain_index, VkFormatFeatureFlags2 ff)

Callers

nothing calls this directly

Calls 12

GetImageCreateFlagsFunction · 0.85
GetImageUsageFlagsFunction · 0.85
GetExternalFormatFunction · 0.85
MakeImageFullRangeFunction · 0.85
GetSwapchainFunction · 0.85
GetSparseRequirementsFunction · 0.85
GetExternalHandleTypesFunction · 0.70
GetMemoryRequirementsFunction · 0.70
GetMetalExportFunction · 0.70
GetMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected