src/libANGLE/renderer/vulkan/MemoryTracking.h


Log

Author Commit Date CI Message
Amirali Abdolrashidi 54b69688 2025-01-21T11:28:59 Vulkan: Add max memory allocation size limit check During memory allocation, we should make sure that the attempted allocation size does not exceed the maximum allowed size. Failure to do so may result in validation errors. * Added the following object to the renderer: mMaintenance3Properties * It holds the following device property: maxMemoryAllocationSize * Inline renderer function: getMaxMemoryAllocationSize() * Buffer and image allocation sizes will now be checked with the function above. * In case of exceeding the maximum allocation size, a device OOM error is returned after issuing a warning: * MemoryAllocationTracker::onExceedingMaxMemoryAllocationSize() * Removed the suppression for the test failing due to this issue. * Removed the maxMemoryAllocationSize VVL skip targeted for MockICD. * Suppressed tests on S22 that now fail due to exceeding this limit: * KHR-GLES[31/32].core.texture_buffer.texture_buffer_max_size Bug: angleproject:391002353 Change-Id: Id271066bd872c80344ef8531653afda3e6b40a93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187981 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov df90bbc5 2024-07-12T18:04:53 Refactoring: move angle::HashMap and HashSet to own header Underlying abseil includes pull in a large set of headers Bug: angleproject:42266508 Change-Id: Icee47143a8a59bb0795a054b67c0aa4ddcfca4d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5704137 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
donghwan.yu 54c48177 2023-04-29T23:12:30 GCC: Define MemoryAllocInfoMapKey's hash before using in unordered_map GCC complains that std::hash specialization for MemoryAllocInfoMapKey type should be positioned before it is used in std::unordered_map. Bug: chromium:40565911 Change-Id: Ia3dd2a699431720b030839d94ea796894ba8b822 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5642294 Auto-Submit: DongHwan Yu <donghwan.yu@lge.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c3a1cae4 2024-04-15T14:58:55 Use angle::SimpleMutex everywhere in libGLESv2 Only cases left that use std::mutex are: - Share group and the context ErrorSet mutexes as they need try_lock() - Anywhere mutexes are used in conjunction with std::condition_variables (as they explicitly require std::mutex) Bug: angleproject:8667 Change-Id: Ib6d68938b0886f9e7c43e023162557990ecfb300 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453294 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 60aaf4a0 2024-03-14T12:58:56 Vulkan: Move renderer to namespace vk This class is agnostic of EGL. This change moves it to namespace vk for use with the OpenCL implementation Bug: angleproject:8564 Change-Id: I57f7807d6af8b3d5d7f8efbaf8b5d537a930f881 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5371324 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 6f959e07 2023-04-28T16:00:11 Vulkan: Add non-device memory option for VMA image * Updated the required flags for allocateAndBindMemory() to no longer include VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, though still preferred. This allows VMA to allocate from another memory type if the device is out of memory. * Added a debug message to indicate when allocated memory for VMA image does not have all the preferred property flags. * Also added a warning in the case of memory allocation fallback. * Added a perf counter to keep track of image allocation fallbacks from the device memory. * deviceMemoryImageAllocationFallbacks * Added a test to make sure that VMA images can still be allocated from other memory types even if device memory is unavailable. * VulkanImageTest.AllocateVMAImageWhenDeviceOOM Bug: b/280304441 Change-Id: Ic452c18ded25345cdb7e271442372b99aede045e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4493483 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 156efe9e 2023-02-23T14:07:23 Fix the alloc error with enabled backtrace feature When angle_enable_unwind_backtrace_support is enabled, an assertion occurs on memory allocation with the following message: "constructed value does not match the lookup key" The assertion comes from PolicyTraits::apply() in the hash map. * In MemoryTracking.h, the type of mMemoryAllocationRecord is now std::unordered_map instead of angle::HashMap. Bug: b/262029018 Change-Id: I11a6d8e99a129759c046e37cef9e74f7db193066 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289947 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi b0d99f72 2023-02-22T13:48:16 Move the memory tracking classes to new files * Moved the classes, functions, and constants related to memory tracking to MemoryTracking.h and MemoryTracking.cpp. Main classes include the following: * MemoryAllocationTracker * MemoryReport * MemoryAllocationType * MemoryAllocationInfo * MemoryLogSeverity * New static function added in RendererVk to get the Vulkan object type name (GetVulkanObjectTypeName()). Bug: b/262029018 Change-Id: I619001e3c24114c4fe7bf024498338bce146fced Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284639 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>