src/libANGLE/renderer/vulkan/AllocatorHelperPool.h


Log

Author Commit Date CI Message
Shahbaz Youssefi dbc6bd9d 2024-02-12T14:07:49 Reland "Vulkan: Fix alignment issues with SecondaryCommandBuffer" This is a reland of commit e53270c9ca1afe393d6d7d0359e81cf6755b6ca5 Original change's description: > Vulkan: Fix alignment issues with SecondaryCommandBuffer > > This solves undefined behaviour on 64-bit systems. This inflates the > size of a few commands, but most commands either already did align to 8 > bytes or could be aligned to 8 bytes with a few tweaks. > > Bug: angleproject:7852 > Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7852 Change-Id: Ie206e66fc21c5db7c9e67eb478d9cddada5db8e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5296376 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 243f8ad9 2024-02-14T11:44:58 Revert "Vulkan: Fix alignment issues with SecondaryCommandBuffer" This reverts commit e53270c9ca1afe393d6d7d0359e81cf6755b6ca5. Reason for revert: breaks x86 Android build: https://chromium-review.googlesource.com/c/chromium/src/+/5293321 https://ci.chromium.org/ui/p/chromium/builders/try/android-x86-rel/144329/overview Original change's description: > Vulkan: Fix alignment issues with SecondaryCommandBuffer > > This solves undefined behaviour on 64-bit systems. This inflates the > size of a few commands, but most commands either already did align to 8 > bytes or could be aligned to 8 bytes with a few tweaks. > > Bug: angleproject:7852 > Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7852 Change-Id: Id9c7a94ccc12816bc9e8c3803bd940550d9f7953 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5295854 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi e53270c9 2024-02-12T14:07:49 Vulkan: Fix alignment issues with SecondaryCommandBuffer This solves undefined behaviour on 64-bit systems. This inflates the size of a few commands, but most commands either already did align to 8 bytes or could be aligned to 8 bytes with a few tweaks. Bug: angleproject:7852 Change-Id: Ie61976d5bf8df7790acd95c0e15d4c79402622a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288636 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 001b004d 2023-02-07T00:48:37 Vulkan: Fixed assert in DedicatedCommandBlockPool onNewCommand() It is valid to allocate "kBlockSize" bytes. Bug: b/256666069 Change-Id: I0cd37a450af3de476c05e7681f32cdae5916d56b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227071 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Igor Nazarov cae00d9b 2023-01-17T18:44:48 Vulkan: Cleanup shared ring buffer cmd alloc feature. Changes: - Simplified "SharedCommandBlockPool" interface. Removed "ptrOut" and "usesCommandHeaderSizeForOffsetOut" parameters, because "headerOut" has exactly the same value. - Refactoring of "SharedCommandBlockPool" classes. Some public methods made private, inline, or moved into ".cpp". - Replace some getters with more specific/restrictive methods: - "RingBufferAllocatorBuffer::getStorageSize()" -> "isEmpty()" - "CommandBufferHelperCommon::getAllocator()" -> "hasAllocatorLinks()" - Added extra ASSERT()s. - fixed typo "kMinRingBufferAllocatio(r)Capacity" - other minor modifications. Bug: angleproject:6401 Bug: b/256666069 Change-Id: I8f5c1c928bac5f8ecdfce7d411834f7ea39d11ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218364 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 684ff60b 2022-06-21T10:52:31 Vulkan: Add shared ring buffer cmd alloc feature * Added RingBufferAllocator.cpp with implementation. * Main classes: * RingBufferAllocator (fast allocation with bulk deallocation) * SharedRingBufferAllocator (wrapper to help with shared use and multiple threads) * Implemented "angle_enable_vulkan_shared_ring_buffer_cmd_alloc" feature. (Disabled by default) * Details (from the original CL) * The angle::PoolAllocator replaced with angle::RingBufferAllocator. * Before, there was separate angle::PoolAllocator per each CommandBufferHelper. Now, a single angle::RingBufferAllocator is shared between multiple CommandBufferHelper objects. * Commands data from multiple CommandBufferHelpers is tightly packed without fragmentation. * Significantly less memory overhead, observed with enabled async queue. * Moved the parts of the code related to the allocators into the classes in the new AllocatorHelperPool and AllocatorHelperRing files for better management. The allocator can be switched by changing the following BUILD flag: `angle_enable_vulkan_shared_ring_buffer_cmd_alloc` * It is connected to the following macro: ANGLE_ENABLE_VULKAN_SHARED_RING_BUFFER_CMD_ALLOC * The two main allocator classes in each file are aliased as: * SecondaryCommandBlockAllocator (in CommandBufferHelper objects) * SecondaryCommandBlockPool (in SecondaryCommandBuffer) * Also added placeholder functions for VulkanSecondaryCommandBuffer. * Added descriptions regarding the two allocators. * renderer/vulkan/doc/Allocators.md Credit: Original CL authored by Igor Nazarov <i.nazarov@samsung.com> Bug: angleproject:6401 Bug: b/256666069 Change-Id: I0f24793eef6334bf4ff8e327b9665338807dad37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3715968 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>